I remember the first time I saw Jurassic Park and watched as the little girl proceeded to hack into a UNIX system, quickly taking control of the entire park. I couldn't help but laugh at how unlikely that whole scenario was, but it does serve to illustrate the way many people think of programming. With this month's focus on code and things related, I thought it would be apropos to discuss what we do for a living.
Unlike the Hollywood stereotype, no programmer, however good, can simply take control of a system. I'm sorry, but even if Jeff Goldblum was the greatest programmer in the world, I doubt he could create a virus to crash the alien mothership. Yes, I've switched movies, but stayed on my theme, though it may be hard to tell since Jeff was in both. I guess to the movie crowd Jeff Goldblum is everygeek - the nerdy computer guy in all of us.
Sorry, it just doesn't happen that way. You know it. I know it. But the long grind and late hours that it takes to make a good program great just don't make for good movies. Imagine if we had a large-scale development team called in to write the virus for the mothership --we'd all be fertilizer. That's because there's more to coding than code, and there's more to development than development.
Good coders aren't born, they're made. It takes education and practice to make a good coder, as well as skill in logic and reasoning. Education provides the basic concepts and theories; practice hones their use. It also helps if they have good tools.
I recently had the opportunity to speak with KL Group concerning their JProbe product. JProbe is a thread and memory debugger and profiler for Java. It's one of those tools that can help a good programmer become a better one. Most of our IDEs have built-in debuggers, and the use of these tools should be encouraged. But typically it's hard to see the flow of a program, particularly a multithreaded program, within a debugger. JProbe provides another level of debugging help that will allow you to see what's happening inside the JVM as a whole.
Other tools and utilities are also useful for coding. Each IDE product does different things well. Some are better at two-way coding, some concentrate on integrating distributed computing models and some concentrate on being the best code editor there is. Each fits a particular style of coding. Some coders are devoted to writing every line of code themselves. Other coders prefer to have a tool do as much work as possible. Put these people together in a room and you can get some interesting debates. I recently gave a presentation concerning the project I'm on, and even though we've already selected and used one IDE for over six months, one of the attendees wanted to know if we'd considered the IDE he uses. That's one of the funny things about coders - they're very territorial.
I also think that good, focused subject matter training is essential to being a good programmer. We're Java programmers, right? A good background in object-oriented programming is essential, but there's still a strong need to get familiar with the specifics of Java, such as AWT and Swing. Work in a three-tiered system and you need to understand RMI (or IIOP) and JNDI, as well as the way an application server works. Layer on top of that a particular development framework (homegrown or purchased) and you should be able to make a good case for training for anyone who joins the project.
I hope you enjoy this issue's focus on code. While you're reading this, I'm going to be reconfiguring an old Cray to run Linux so I can access the mothership and get them to let me fly one of those cool fighter planes. May The Force be with you.
About the Author
Sean Rhody is the editor-in-chief of Java Developer's Journal. He is also a senior consultant with Computer Sciences Corporation, where he specializes in application architecture - particularly distributed systems.He can be reached by e-mail at