Where are we going? (warning: rants ahead)
I returned from JavaPolis with a bag of mixed feelings. The good ones: the conference was great, well organized, rich of contents (I'm repeating again, three days of conference for 200â‚¬ is excellent price for value), I met people, last but not least the idea of reaching Antwerp by car was very good as I enjoyed my photographic trip through northern France. The bad ones: I'm worried about where Java 7 is possibly going and about the topics that the community is possibly perceiving as the most important.While the sessions in JavaPolis were well balanced on a wide gamma of topics (testifying the good work of the belgian guys), talking with people and looking at the "whiteboards" (a new tool that the conference introduced this year) I had the impression that a big deal of excitement is about things such as closures, new operators, scripting languages and so on (and this perception is consistent with the message that you get from blogs and forums).
While I don't have yet a matured opinion about these topics (my belly says no to everything, it fears a too high grow in complexity, but there hasn't been yet a briefing with my brain, so I'm not going to talk about it now), I'm worried about them being among the main focal points: sometimes too much excitement in the wrong area distracts us away from the real problems.
Let's put in in another way: does somebody think that having closures or the
-> operator for properties or a neat integration with a scripting language will decrease significantly the rate of failed projects? Or will significantly increase the quality of our work, and the quality of services delivered to customers?
Before answering, please keep in mind that â€œproject successâ€ and â€œqualityâ€ are related to, but are not the same thing as â€œreducing costsâ€ and â€œshortening the time-of-deliveryâ€. More details below.
My answer is a resounding â€œnoâ€. Having better tools is important, but the key to success is another thing: the process. Which contains stuff such as team building, a good communication plan with the customer, good risk assessment strategies (including thinking of "b-plans"), good design skills, knowledge of the technology, testing. This is what I've been taught (BTW, by Sun itself as an external consultant), I've been teaching for years, and what I've found in all my real-world experiences with customers.
I repeat, we need tools for performing well all these tasks, but tools aren't the thing that drives the process. It's the man behind the tool that does it. That is it should be. So I'm a bit worried as I don't see these topics under the focus in blogs, conferences and so on (at least, not in the same amounts as the closures stuff and so on). I'm scared at the thought that we all end up in the rush-fashioned, Microsoft-style method â€œgive the customer what he wants today â€“ or he believes he wants -, take the money and don't think of the future". I'd be really sad if this trend will drive the Java evolution â€“ it would be a betrayal of the initial promises.
Let me draw a comparison with photography. What's the matter? Photography is an art, isn't it? Yes, as software architecture is. To be more precise, both the software architect and the photographer, even though in different proportions, use a mixture of science and art. You will hardly do good things with very bad tools, such as lenses made of cheap plastic or a poor programming language, but the key factor to success is still you, with your experience, knowledge and creativity. As a famous photographer says, â€œThere's no such a thing as a lens that takes pictures by itself.â€
Undoubtedly, digital cameras and sophisticated embedded image processors today make it easier to have a keeper shot, and the cost of each photo has lowered since the old times when you had to develop film in the wet darkroom. So better tools have indeed decreased costs and shortened the time of delivery. But the average quality hasn't increased. On the contrary, places such as Flickr are mostly filled with photos with no value, the typical â€œpoint-and-shootâ€ stuff made by â€œholiday photographersâ€, while professionals, even though they are very happy with their new tools, always pay more attention to â€œthe processâ€ (yes, they use this word too).
And as a final word, professional photographers are aware of the right priorities for tools. For instance, lenses are more important than cameras: most of the stuff that is packed in today's cameras is practically useless for a successful photo and often a good tripod is even more important than the camera body. We software guys should be aware of these concepts when we think of what to add to the Java platform.
PS Let me finish with an old joke which is popular among photographers. A pro has been invited to dinner by some friends and he's showing some premium-winning photos from his portfolio. During the dinner the hostess comments "Hey, these photos are really cool, you must have a very good camera!". He replies: "Definitely. BTW, this dish is excellent: you must have a very good pot".