To succeed, define constraints


Every time a client contacts me for a new project, one of the first thing I do is to determine the constraints. I’m not talking about the cost vs time vs quality of project management triangle here, but rather the definition of what the client really wants and whether he’s asking for the impossible.

I’m working in computer vision (I prefer this term to “image processing” as the later is often mistaken with Photoshop kind of work, which I’m not doing at all) and most client don’t know nor understand what I can do and what I can’t do. For example, one of them was recently asking me to develop a custom OCR (Optical Character Recognition) for pictures taken with different smart phones. What looked like a huge and complicated project, I don’t have control over the pictures the users will take, was simplified a lot by exchanging with the client to understand how its users would use the software. It appeared that the pictures would actually be always of the same type of object. This was good news for many reasons. Knowing this helps me define how the images will be analyzed and what will be the constants in the equation. In computer vision terms, this means that the text will only use one font, it will be horizontal as much as possible (dealing with rotated text is not impossible but it slows down the whole process), the background will always be of the same color.

By defining these constraints, I can allow my software to behave incoherently when fed with pictures which to not respect the constraints. The product is not used in life saving situations, so no harm will happen anyways. Even with these constraints set, I still had to deal with less-than-perfect image quality (bad lighting, small fonts unreadable even for humans, text not entirely in image) so having constraints does not mean the job will be easy.


Always set constraints even for well defined projects.

This will help the client understand what he won’t be able to achieve with the product you will develop. If the client is unhappy about some constraint, he will certainly ask you to modify it, this is not a bad news as it will allow a creative discussion about the reasons for the constraint and what can be done to change this limitation.

Setting constraint also allows to deal with lack of knowledge in some cases.

For others projects I had to add constraints to make sure I would not get stuck doing a lot of things for which my knowledge is not at its best. It’s not that I don’t like to learn new things, quite the contrary, but when I need to deliver something fast I don’t want to be slowed down struggling with work I’m unfamiliar with.


By not imposing tight constraints beforehand it becomes dangerous to start working on a badly defined project or to miss a deadline by a lot because many issues occurred due to unconstrained requirements.

Email me when David Rolland publishes or recommends stories