As a software devloper, especially a Java application developer, I must get myself updated everyday (at least every week). The number of JSR are increasing incredibly, the experts out there are trying very hard to improve the way programmer codes. They want programmer write lesser code, in more efficient way. To some extends, they actually did their job pretty well. Today, I can easily find tons of core or third-party APIs, I won't ever need to write the low level method or solution by myself as what I did years ago.
While I was learning Servlet API, and just know how to implement a relatively easy to use Front Controller, Struts came out. It has much more better performance, more reliable, rich functionality. The built-in utility classes are pretty helpful, it is not only usable in web-tier (anyway, I don't suggest coworkers to use Struts in business tier).
When I involved in a project which was using EJB 1.0, I had to cater the implementation issues by myself. Now, the project is over, and surprisingly working quite well. But, I always find that the previous implementation was just relatively immature, unreliable and not maintainable after I read at EJB 2.0 specs.
So, what I can do now is, master the EJB2.0 specs in many ways, and, treat experience as lesson. Currently I am able to manipulate the CMP, CMR features and the deployment descriptors for various application servers. Unfortunately, I happened to know that DD will be eliminated in EJB3.0, my question is: "Is the original purpose for creating DD to reduce recompilation for changing deployment attributes?".
Above are just some little small examples saying that people can't apply their knowledge on their works.
Luckily, I'm having different thinking, what I think is, as a Java developer, I have to master the fundamental knowledge, and more importantly, master OO concepts. I'll be able to understand and apply those Open source libraries no matter how much there are, if my Java skill is strong. There is a famous proverb in China: "Learn till you get old". I must learn how to "Learn" in order to carry through this intention.
I find current software development environment attractive, and this is the reason which keeping me to have passion on work.