It is one of those often recurring phases in your career when you pause and ask yourself. Right, now what is the next big thing? What should you be equipping yourself for the upcoming assignments? Answering the question is getting tougher each time.
Years back things were much simpler. You want to be a kernel programmer or a network geek? C++ is your choice. Web? Java/.NET and thick client programmers had their own choices and legacy programmers? Well, lets leave them out. Seems to me (and I could be wrong) that they seldom go through this phase!
Fast forward to present! The developers are up to the necks with technology choices even within one platform.
Talk to a java developer and he will tell you that he is contemplating whether to use time tested Struts or the new JSF and between the half a dozen implementations of JSF, or velocity templates or the Tapestry framework and mind you he is just talking about the UI part of things. Ask him about it he will launch into a yet another monologue about spring, EJB, Hibernate, Apache OpenJPA and a plethora of other open source frameworks! and don't make the mistake of asking him about app servers.
The point is that its no longer easy to choose nor does one have the resources to actually whet each and every technology choice before choosing the one that fits their needs! Gartner's magic quadrant to some extent serves as a rough guideline to separate the wheat from the chaff. Even within the quadrant one would find two dozen choices and they are simply not going to be able to make an informed choice on time!
So, what happens on the ground? In the Indian scenario there is this overwhelming urge for the lead technical guy to insist on applying the latest technology he/she learned or heard about and that often is the informed choice people make. That's it! Manager is happy that someone took a decision, the developers are excited that they are going to 'learn' while working on the assignment. Eventually this becomes one big 'Get paid to get trained' programme!
Seldom does one question the reasoning behind the choice of technology. As Rod Johnson pointed out many many years ago. When EJB was introduced, it was the fad of the day for everyone to use it. People would snigger and smile slyly if happen to tell them that you don't use EJB because you don't need its features!
It would be even a bigger shocker if one did not use a big brand app server from IBM or Weblogic!
The trend has still not died. It still continues! People want to use Hibernate or Web Services and have no reasoning behind their choice besides quoting verbatim its well catalogued features even if it does not apply to them.. "Hey, I could expose it to external programs as well" one lead explained to me when I asked him why did he build a web services layer just to invoke a business service within his own app.
Seriously? Here is a man who built a house that had access to bedrooms from only outside of the house. His reasoning was that he could let out the bedroom as a studio if he wished!!! You two guys had a lot in common, I wanted to tell him. If you are still interested, the old man never let out the bedroom as a studio in the twenty years he has lived in the house! So much for flexibility!
If you do not have a concrete requirement do not build it. Make provision for it. Make sure your business services could be wrapped or extended to build a new web services layer if one is needed in the future. Do not make unlikely requirements a necessity! Same applies for technology stack as well. Make informed choices on what you need by checking whether you really require all the features of the product!
You'd save yourself lot of trouble, cost, bugs that come due to learning, customers and don't forget, another successful project to your kitty!
What about learning? What do I learn now? How do I equip myself for the challenges of tomorrow? Should I learn that cool WCF? Should I learn that cool GlassFish Server internals? Well, there is no right answer to this, but my suggestion and what I would do is that learn only bare minimum about the ones that interest you to know what it can do. Don't focus on becoming a marksman in a technology you don't know if you will ever use. To put it in a different term. Just focus on getting some primary education on the technology of choice. You can save the masters for a time when you know for sure that you will need it.
Years back things were much simpler. You want to be a kernel programmer or a network geek? C++ is your choice. Web? Java/.NET and thick client programmers had their own choices and legacy programmers? Well, lets leave them out. Seems to me (and I could be wrong) that they seldom go through this phase!
Fast forward to present! The developers are up to the necks with technology choices even within one platform.
Talk to a java developer and he will tell you that he is contemplating whether to use time tested Struts or the new JSF and between the half a dozen implementations of JSF, or velocity templates or the Tapestry framework and mind you he is just talking about the UI part of things. Ask him about it he will launch into a yet another monologue about spring, EJB, Hibernate, Apache OpenJPA and a plethora of other open source frameworks! and don't make the mistake of asking him about app servers.
The point is that its no longer easy to choose nor does one have the resources to actually whet each and every technology choice before choosing the one that fits their needs! Gartner's magic quadrant to some extent serves as a rough guideline to separate the wheat from the chaff. Even within the quadrant one would find two dozen choices and they are simply not going to be able to make an informed choice on time!
So, what happens on the ground? In the Indian scenario there is this overwhelming urge for the lead technical guy to insist on applying the latest technology he/she learned or heard about and that often is the informed choice people make. That's it! Manager is happy that someone took a decision, the developers are excited that they are going to 'learn' while working on the assignment. Eventually this becomes one big 'Get paid to get trained' programme!
Seldom does one question the reasoning behind the choice of technology. As Rod Johnson pointed out many many years ago. When EJB was introduced, it was the fad of the day for everyone to use it. People would snigger and smile slyly if happen to tell them that you don't use EJB because you don't need its features!
It would be even a bigger shocker if one did not use a big brand app server from IBM or Weblogic!
The trend has still not died. It still continues! People want to use Hibernate or Web Services and have no reasoning behind their choice besides quoting verbatim its well catalogued features even if it does not apply to them.. "Hey, I could expose it to external programs as well" one lead explained to me when I asked him why did he build a web services layer just to invoke a business service within his own app.
Seriously? Here is a man who built a house that had access to bedrooms from only outside of the house. His reasoning was that he could let out the bedroom as a studio if he wished!!! You two guys had a lot in common, I wanted to tell him. If you are still interested, the old man never let out the bedroom as a studio in the twenty years he has lived in the house! So much for flexibility!
If you do not have a concrete requirement do not build it. Make provision for it. Make sure your business services could be wrapped or extended to build a new web services layer if one is needed in the future. Do not make unlikely requirements a necessity! Same applies for technology stack as well. Make informed choices on what you need by checking whether you really require all the features of the product!
You'd save yourself lot of trouble, cost, bugs that come due to learning, customers and don't forget, another successful project to your kitty!
What about learning? What do I learn now? How do I equip myself for the challenges of tomorrow? Should I learn that cool WCF? Should I learn that cool GlassFish Server internals? Well, there is no right answer to this, but my suggestion and what I would do is that learn only bare minimum about the ones that interest you to know what it can do. Don't focus on becoming a marksman in a technology you don't know if you will ever use. To put it in a different term. Just focus on getting some primary education on the technology of choice. You can save the masters for a time when you know for sure that you will need it.