Elements Of Simplicity: Proper Research
Complexity is a significant factor in the cost of software development. The more complex code and design are, the greater the cost of developing, maintaining and extending the product is.
Now, I am not going to discuss what complex design and complex code are in this post. There are many metrics available for measuring complexity. Some are better than others. In many cases, however, this issue is context sensitive and therefore must be considered on a per case basis.
Still, we can discuss the trends and root-causes that drive a design (or an implementation) down the complexity lane. One of them is the lack of proper research.
In many projects the design, and sometimes even the implementation, starts without real understanding of what the customer needs. Other projects start without proper research regarding possible solutions. Without a clear target or a clear path, it is easy to make things complicated.
Simplicity is always context-sensitive. We seek to implement a simple solution to the problem we have to solve. Without knowing clearly what is the problem or what is the proper toolset we should use to solve it, simplicity is impossible to achieve.
Understanding the project’s scope and goals requires some research: talking to your customer, asking the right questions, explaining him the importance of setting the goals of the project and its scope, and trying to help him do that. Investing the time in understanding what your customer needs in general terms will save you a lot of time and unnecessary complexity further down development.
The same applies to choosing the right tools for the job. Take some time to explore your options: What language will you use? Which development platform? What framework? All these questions (and many others) affect the simplicity (or the complexity) of your design and code. They will eventually affect the cost of development. And, of course, they have to match the customer’s needs.
Knowing the scope of the problem and the way you are going to approach it, are important entry criteria. That does not mean you have to know every little detail in the requirements in advance. That would be impractical. But you do have to know the general direction of where you are going. It doesn’t matter if you call it high-level requirements or a vision statement - without it you and your team will get lost. You can’t do things simply when you are lost…











