It is all about Software Design.

Over the past few days, I'm observing a pattern. Most people talk about code, but the real objective is a tad hidden. The talk is mostly about the design that is used to achieve the desired objective.

Whenever I see some good developers, I now tend to think about their level of Software Design expertise. You post a task, they convert that into a problem and design according to the problem. The faster it converts into a problem, the more accurate design it can get, more time being dedicated to design's drawbacks. Moreover, re-iterating over the problem is all about tweaking the implemented design.

You can judge if your manager or your associate is good technically with a simple hack. Give them a task and see to how they design it to the problem.

Designs need to be scalable, for that, you need proper thinking. A haphazardly designed solution always leads to re-work. The framework into which you convert the task can be quickly inspected when it gets into the testing phase. Never try to deviate how the problem is handled with some dirty hacks. Also, always, try to design the solution keeping infinite parameters into consideration. It is a poor design if it starts getting additional parameters after being implemented.

A good way to judge a design is by throwing at it, a lot of test-cases. Writing them requires time and effort, hence mind you about the delivery schedule. Python and it's frameworks are integrated with a test-suite so that assertions and limitations can be trapped in externally (without disturbing the actual code). Java has test frameworks to begin with, or you can write your own code to test. JavaScript is easy, you can see the flaws right in front of you via the front-end. SQL is easy too. The retrieved data is a fair way to show how you design data-fetch.

Everything is a problem and everything needs a design. Architects are paid for their level of design exposure. They mend and bend around problems and turn it into a holistic solution, capable of bearing all pressures. And the structure falls when it crosses a limit. And it can be viewed via the design. Poor design leads to quicker falls. Re-work is an additional burden, if you have time constraints.

Also, design cannot be a single person's idea. It is collaborative effort. Teaming across and asking for problems with the design is a sure way to get better design. Ask for flaws, question the design, make sure you try to break the fundamental principle of the design. Design, design and design. Good design, is shorter time to code and test.

blogroll

social