Java has been around for around 10 years now. From the little language it started from, it has grown to be a very big "platform". There are so many Java related "technologies" around, so much noise, so many patterns, so many frameworks, so many architectures, so many buses, so many orientations, it is becoming, for me at least, a very unwieldy beast. Every where we turn, there is a technology we must use for even little open source projects. And if we don't like the technology used, well, tough; we can always create our own projects and use our pet technologies. So, we all strive to know EJB, SOA, ESB, Aspect oriented programming, POJO, JMS, JMX, Servlets, struts, maven, ant, JSP, JSF, Tiles, tapestry, maverick, JDBC, not to mention vendor specific stuff, Websphere, Weblogic, JBoss, Tomcat, Orion, Resin, Sun Sudio One. We are supposed to be an expert in all of these, we are supposed to have at least five years of experience in all of them, all the time 100% working on them hands on, and 100% doing design at the same time as well. Of course, I exaggerate. But not by much, if you read some of the job advertisements in the last three years.
Why is this diversity not a good thing? May be it is a good thing? It is not a good thing for one reason: humans can only be very good at only a few things. When only a polymath can see the landscape fully, most people will be locked in ghettos of isolated technologies, requiring the small subset of people to breach the divides. Specialization will be needed. That would have been a good thing, if not the amount of complexity every single programmer must confront day to day. And the way the technologies interact, you must know all the technologies used, or you don't understand part of the system. Except that for the way we program, not understanding part of the system can be fatal.
We muddle along.
No comments:
Post a Comment