« JSR-94 Not Useless But Certainly Trivial | Main | Covariant Return Types »

Don't Just Think, Feel It

Listen to this articleListen to this article

I recently attended a half-day seminar thingy put on by Enterprise Java Victoria. During the day we had presentations from Mark Hapner and Gavin King along with a few vendors and some large-scale J2EE shops. Robert Watkins, James and I (apparently I talk too much and need to learn to shut up - like you didnt know that already) were among a dozen or so people fortunate enough to be invited to sit on various panels. All in all it was well attended and I think most people got something out of it.

Most of the talk centred around EJB Three-Dot-Oh and Es-Oh-Ay but there was also discussion on topics such as developer training, heavy versus light-weight containers, Java Web Start, etc. During all this, the one thing that struck me was the distinct lack of audience participation. We (the panels) were pretty much there to give our views (such that they are) on the future of J2EE but no matter how much I or Gavin or anyone else ranted, I kept wanting to ask the audience "so what problems are you having with J2EE?" I'm astonished the question never came up. Then it occurred to me that these people were here to find out what the next big thing in Java was going to be. And therein lies the problem.

If you've realised anything from reading this blog (apart from the fact that I'm a loud mouthed opinionated git) it's that I really do feel we as an industry (being IT) do more to justify our own existence and "innovate" than to actually think about what our customers need. I love playing with new tools and frameworks and whatever else seems to be in vogue at the moment as much as the next developer but I also feel we (yes that includes me) persist in creating the technology equivalent of whiter toothpaste and softer toilet paper. FUD drives our industry as it does fashion. Vendor X or "Thought Leader" Y come up with some new fandangled tools/methodologies/practices. Quite often its not even new. Then these ideas are disseminated to the masses (being we the developers) in IT shops who then, upon seeing this bright shiny new toy, go about selling it to the business to justify the R&D required to work out how we might actually use it. What's more we often shoot ourselves in the foot by over promising and under delivering.

Pause to blow off steam...

Why does the customer care about the latest technology unless it specifcally addresses some business need? "Why do they even care if it runs on Java or not?" was one of my questions for the throng and didn't that go down like the Mars Beagle Lander on a bad day! Surely the customers have problems not to do with technology but to do with the way they conduct business. They want to do business more effectively. They want to be more flexible. Shouldn't we be trying to find out what they do and help them do it better? Feel where their pain is, then go away and work out how we might make it go away. In doing so we would encounter a world of hurt and pain which should lead us to ask the tool vendors to help us out. Instead we end up with BEA telling us that what we really need is to turn everything into a web service and let business users clickedy-click to put together an application.

"So," I asked the audience, "who here has built their own house or their own car?" amazingly one person replied "yes" to both questions. What about build your own furnitiure or made your own clothes or even serviced your own car? The materials are all readily accessible. Do commercial pilots construct their own planes or astronauts their own rockets? Surely they could, they're some of the most highly trained people around but that's not their job, that's not where they add value.

Just take a look at SourceForge. We are very good at building IDEs and frameworks, etc. Well maybe not the last but certainly IDEs and tools in general. Whether you like it or not, Visual Studio really set the benchmark that all subsequent IDEs had to match and, thankfully, have now surpassed. It's no surprise that IntelliJ and Eclipse , etc. are so good. We as developers understand developers. We understand how we work. IntelliJ doesn't get in my way. It does just what I need and no more. It takes away the tedious tasks without trying to do my job for me. What we need is to build end-user software with as much thought as this. Not try to solve cool networking and infrastructure issues over and over and over again.

Sure, SOA and interoperability are laudible goals but they're hardly new. Whether you like it or not, EDI has been around for decades, CORBA for longer than RMI, telnet longer than HTTP. I'm happy to listen to our Thought Leaders tell me their vision for computing but don't try and convince me it'll solve a bunch of problems that quite frankly I just don't have right now.

I've taught martial arts for over a decade now and it's only just occurred to me that some people turn up because they want to be told what to do. Maybe they lack the capacity to learn for themselves or maybe they just don't want the responsibility but if I spend all my time teaching and none of it training, my reflexes get slow and I forget all the little things that one learns when actually forced to use technique in a meaningful way.

Neccessity they say is the mother of invention. If our Leaders long ago stopped actually dealing with customers and developing real code then they also stopped feeling the "pain" associated with developing business software. No amount of thinking makes up for this.

Comments

I'd imagine that the audience is self-selected. People who have the time to go to seminars are probably NOT the ones who are up to their elbows in developing enterprise systems.

I don't need fancy new tools and toys. What I need is for the ones that we already have to WORK. I want to be able to actually package an entire enterprise application into a jar (er, ear) file. I want to be able to actually dynamically deploy and redeploy applications into the containers. I want applications within a container to be protected from each other's failings. I want to have reliable fail-over without spending half of my development time assuring that the application is fail-overable. I want security that is both usable (from a developer's point of view) and secure.

[deep breath]

I want to be able to trouble-shoot problems from the log, without having to try to figure out how to reproduce the problem in a debugging environment. When I do need to reproduce in a debugging environment, I don't want to have to wait 15 minutes for the containers to initialize, and then spend another 5 minutes deploying the application. When I have a fix ready to test, I want to be able to test it NOW, not after 10 minutes of build process and another 20 minutes of restarting the containers and redeploying the application. (JBoss reportedly can do this, but I don't use JBoss.)

When the fix is ready for production, if it's a small fix I want to be able to deploy a patch file to an application that is packaged in an earfile, so that only the patch needs to be QA'ed instead of everything in the application. And so the patch can quickly be backed out if I screwed up the fix (just speaking hypothetically, of course). Especially JSPs -- does ANYONE actually package JSPs into warfiles inside earfiles in their production systems, or is everyone using exploded directories so that they can patch a JSP by the simple process of copying the new file into the directory?

I'm sure there's more, but that's off the top of my head :-)

Hehehe. The self selection thing is pretty true. Sad/unfortunate but true.

Well they must have learnt your lesson 'cos yesterday at the Sydney event (sans Gavin King) they were very keen to stress 'business drivers' and 'business needs'.

Hehehe. Good to hear :-)

I totally agree with your comments here Simon.

Hard, well disseminated, information should be the engine driving the software industry, fueled by tools and techniques.

Analysts are essential in making the ride luxurious, geek freeks serve to increase the quarter mile speeed.

I'm often blown away by the complete disregard some technicians have as they strive to develop technically challenging features with complete disregard for business purpose and benefit. I was very recently white knuckled in my seat when a colleague happily suggested they once worked in product shop X and developed complex caching service Y, of whose features were only half used - because they could and some customers MAY use it.

Long live the voice of the business!

Post a comment