Tuesday, October 24, 2006

Java Framework Information Fatigue Syndrome

'We're often seeing a failure of concentration. We're seeing a loss of motivation, loss of morale. We're seeing greater irritability.'
-- Psychologist David Lewis
This was attributed to ammount of information that a person has to take in general these days & I guess same principle can be easily applied to Java space as well. There are so much of frameworks and patterns. I have seen this syndrome in many senior Java developers. It is becoming harder to cope this day after the day.

In today's competitive business world it is imperative that everyone delivers at a pace that has never been imposed upon in the past. User expectations risen sharply & there is growing trend of technical awareness & knowledge how technology can help to deliver products with shorter time to market impose an overwhelming challenge to business.

More often than not it is discovered that the programmers/designers requires technical assistance and guidance to be able to successfully deliver. It is also observed that strong technical people get caught in several non-technical (but important) aspects. This quickly results in shift of focus, diluting the drive towards technology & there is no time validate the information & the quality of web frameworks. There is so much of options to choose & there is no time to spend in learning.

Annual increase in the rate of change of information is moving at alarming speed. A modern java programmer after spending about 18 months to attempt to master JDK 1.4 >25,000 methods, now he must learn an additional 8,000 more methods for JDK 1.5 ( >30% increase) Now we have huge JEE stack with all the tons of web & persistence frameworks.

So forget about mastering all the stuff, it is nearly impossible to master all the technlogy stack with fighting ever ending project dead lines. Can we afford to neglect these trends? Not possible ! especially people in technical stream (Like me) & decided make living out of technical career, the situation is frightening.

So what's the way out?
There is no way we can get out of reading/learning new frameworks; We have to understand and appreciate the innovation to stay competetive. We have to spend quallity time in going through the code/innovation.

I think the best for us to follow the best brains. I consider Rod Johnoson & their ilk of Spring are the best bet. We have wasted enough time on EJB's & many JCP specs. JCP seems to be worried about only the technical excellence (Making generic very clever specs) but forgetting the developer life. Even big guys like IBM & BEA didn't help. It was Rod & his ilk who made our life simpler by making us to write lesser code & hence lesser bugs. So that we can spend more time with our family.

Even if people with same caiber like Gavin King (JBoss Seam), Geert Bevin(RIFE)... can innovate better, Spring team should be able to adapt these innovation without any hesitation. (By seeing there track record of DRY). So it is best for us to stick to them.

Final words,
The key to survival and indeed productivity is to have a firm grasp of fundamentals, and to be able to assimilate just-in-time information.
&
Blindly follow the Spring.

Saturday, October 07, 2006

Java Design patterns - Few tips to learn.

Learning & remembering design patterns is a difficult task. The real world working samples & real world metaphors on how really a pattern is used to effectively to solve a problem in a given business context is very important in learning patterns.

I found this article on http://mahemoff.com/paper/software/learningGoFPatterns/ is very useful in that context.

I really liked idea of coming up with metaphors for each pattern & I think if the metaphor includes some of the open source code as samples it will be really great. Cooper's book on design pattern gives only the java SWING samples & I guess it would be better we can extract the patterns samples from popular server side java framework. 90% of java programmers write server side programs & not the SWING.
Unless untill these pattern samples are captured from successful implementation (with real productivity improvements) I really doubt the effectiveness of the patterns. I felt the samples provided by Martin Fowler (Both in Archtectural & Refacatoring pattern books) are mediocre & outdated.

Here are the few steps I suggest to learn patterns;
1. Buy this book, best book to learn & remember patterns
http://www.oreilly.com/catalog/hfdesignpat/
2. Go through the popular open source framework code (Hibernate, Spring etc...) . Most of the class name start with pattern names & it is very grasp their usability that way very easily
3. Don't ever force yourself to use patterns in your code/application. It is very important that it should come naturally & read the related anti-patterns before using it.

Remember real stregnth of patterns is when it is used as design communication tool & hence it has to be correct, precise & contexually relevent.
Bookmark and Share