Developing Java project - a team effort
I was watching one of the Monday night NFL games that i have on tape. It was a Packers vs. Bears from three years ago. Bears had a lousy night with three interceptions (one returned for TD), three sacks on defense, fumbled kick return, missed onside kick and a variety of assorted mishaps. They lost 21-34 and went on to have a 4-12 season. One phrase by Madden got stuck with me (guess i missed it back then). One of the defensive stars of the league is Brian Urlacher who's been with Bears for the last six seasons. Madden called him "the perfect middle line-backer and the perfect football player".
The track record for Bears over these six seasons (Urlacher has missed only 7 games due to injury over these seasons) has been far from perfect though - only one winning season (13-3 in 2001) and 22-46 in other five seasons (including 1-3 during the current one). The reason is obvious - it takes 53 players (11 at any given moment, unless you want to get a "12 men on field" penalty) to play the game. Have one star and ten dead-beats - the star isn't going make a difference.
Over the same six years, four different teams have won the Superbowl, with three victories going to the Patriots. In all cases except the Ravens (and the SB score is a little misleading), the winning teams had a perfect combination on all teams, offensive, defensive and special (2000 Ravens defense gave up an amazing 9.4 points per game, so there was no need for real offense).
Every year, we (the lowly developers) are attacked with a variety of new solutions that promise to cut development cost, time and productivity in half (in worst case). Last year's award undoubtedly goes to AOP (thankfully we got over it before it hit the mainstream). This year, it's AJAX, SOA and (sort of) Web 2.0. This entry caught my eye recently. It outlines an interesting cross-section of technologies that should be mastered by an AJAX developer. And that is only for the GUI interaction with the server. What about the persistence layer, internationalization support, deployment and installation, data structures, flow engine, interoperability with legacy systems? Regard any one of those as minor issue and it will bite you. Hard.
The religious wars over "which IDE is best" kind of ignore a simple problem - if you chose a poor solution for clustering / high availability, the best IDE will get you to the dead end twice as fast. You will just have a little more time to understand that you will not make the deadline. It takes a team of programmers to do the job, but it also takes a team of solutions for a team of problems. Pick the current shining star and forget all the rest? See you on your next project.