I am curious about the pros and cons of having a generic Java/J2EE skill set (by this I mean core java, Servlets, JSP, EJB,Web Services and knowledge of widely used frameworks like Struts/JSF/Spring) as compared to the those of having a very specialized skill set for eg: IBM WPS, or EAI tools like Tibco, Vitria etc.
I understand that progression from being a java developer to an EAI developer is natural. I guess one needs to specialize in one EAI product suite/tool as it is practically impossible to know multiple products in detail, with sufficient hands on expertise in each of them.
I have somehow developed a propensity to shy away from proprietary tools, since development using tools conceals many aspects of your implementation. You have very less control over how the tool works.
However, now-a-days having expertise on such tools is considered a niche skill set and the salaries are lucrative.
Do you think EAI tools are here to stay? Given a choice between working on generic skills described above or one of the EAI tools, which would be a better choice...considering I have some experience with the generic skills? What is the scope of usage of EAI tools in product development companies?
Generic skills will only help you to land in a job but will not help you to complete an assigned task that requires knowledge of specialized product. The industry values specialization and those are the breed of people who command respect, experience self growth and are recognized in the industry. There are plethora of products in the industry and it is virtually impossible for any indivdual to work on any specialized products with pure generic skills. Learning and developing using a tool or product most certainly means a learning curve where your generic skills will only help you to certain extent. The specialized people are considered subject matter experts.
Generic skills generally mean that you have better understanding of the underlying theory and will therefore be better be prepared to adopt both improvements to the existing technology and to learn new technology.
Unfortunately, HR departments are obsessed with specific skills. Since I'm a generalist myself, I don't get hired directly through HR departments - it takes someone on the inside who understands what the general skills actually mean.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.
I agree with Tim that one needs to have solid generic skills, and Andrew Monkhouse makes a similar point in his post on this thread where he says
... data structures, mutithreading, algorithms and their performance, time and space complexity (Big O). Getting that stuff right is the very first step...
From a personal experience, learning EAI tools and developing applications using them, is not difficult(difference of opinion expected!). I have seen that people tend to jump to specific tools too early when they lack maturity in basic ground knowledge. I don't think this helps in the long run. What do other ranchers think?
I read an excellent article about qualities of a software engineer by a very senior software architect from one of the world's leading product companies. Unfortunately don't have the link with me, but he says that he wouldn't ever interview a candidate on specific tool/language/platform, since all this is applied knowledge and can be easily acquired if you have got the basics right.
Coming to my original question - scope of usage of EAI tools in product companies - I explored on this and found out that theres no or very little usage unless the company itself develops EAI tools.
Looks to be a good discussion and would like to see it continue.
[ July 27, 2007: Message edited by: Tejas Prathamesh ] [ July 27, 2007: Message edited by: Tejas Prathamesh ]