Thursday, August 1, 2013

Reduce the concepts

The biggest problem for a developer today is not the lack of choices but the overwhelming number of choices. The choices exist at all levels right from the choice of platform to programing languages and than the choices of frameworks in the programming language. And it's not simple to make a choice. The primary reason of confusion is the fear of getting it wrong. For example, take web application. You want to do it in Microsoft, Java, Php, Python, Scala(Lift), Ruby on rails and other zillions way. If you happen to choose Java than Struts, Spring, JSF etc for front end and similar choices existing for other layers. A tough nut to crack.
Lately I am coming to conclusion that for 95% (or may be 98%) of the cases, it does not matter which one is chosen. Everything will work equally good, give or take small differences. The difference lies
in the craftsmanship of the individuals building the application. Toss a coin and you should be fine. Another important indicator for choice would be the availability of the developers. Just a word of caution, that one might want to choose the latest in the same lineage. For example put php and Java next to each other. But if you happen to choose Java, than you might want to avoid Struts 1+ version. There are huge numbers of developers comfortable in Struts 1+. Also you might want to avoid plain JSP. Look what is best in the same lineage. In Struts lineage, look from Struts 2+ or may be Spring MVC. In JSP lineage, JSF would be a better choice. Make your requirements clear and than figure out the framework and not the other way round.
Another important choice that is important is to reduce the concepts in the application development environment. Try to strive for as low number of frameworks as possible. Human brain is limited to the number of things it can handle at a time. Somewhere I have read that a human brain can handle 7 dimensions at a time. Couple of them already take by your family and personal matters. So reduce the number of frameworks. If you are using Spring, use it all the way up to down. Introduce a new framework, only when it is really needed. Donot introduce the framework, and later defend it. Try to use a homogeneous environment as far as possible. At times it even possible to convince customers on the same line. Customers are interested in doing there business and not in fancy frameworks.

No comments:

Post a Comment