Why we are here

We are getting closer to JavaOne and companies are preparing to announce their latest and greatest products. We will also have lots of discussions of Java vs AJAX vs Flash vs other hot tech of the day. Before we go down these and other rabbit hole discussions I'd like to take a moment to sit back and look at the big picture: Why are we here?

First one caveat. All of the opinions which follow are mine, not Sun's, and they are based on my personal world view formed by external sources, not from any internal information that other's don't have. I am very fortunate to have an employer who lets me speak my mind independent of the corporate strategy. I know developers at Apple who lament being unable to speak through blogs or unofficial sources. On the other hand they get sweet MacBook Pros, so I'm not too sorry. :)

Why are we here

If you are reading my column it's because you like Java, and given my prediliction for discussions of desktop Java, you probably are a client developer or at least care about desktop apps. But whatever your job please take a minute to step back from your day to day life of the tech world and think about why we are here. Whether you work on server, client, or mobile apps, you are in the business of writing software for other people. Non-technical other people. (unless you are lucky enough to work on Netbeans :). We are here to make software that works, that is easy to use, that is beautiful, and most importantly that makes life better for other people. We don't make bridges or roads or toasters or replacement hearts. It's someone else's job to do those things well. We make software. It is our responsibility to make software that doesn't break, is easy to use, and genuinely helps people. Good software is our job and we must do it well. We must never forget that.

Thanks to the efforts of Apple and the market effects of the Innovator's Dilemma we are fortunate to live in an age where software can increasingly be sold based on quality rather than features. We must rise to the occasion and make elegant software. Software that puts the user first instead of the developer; or technical constraints. When software breaks, we are to blame. When someone loses a file because an app crashed, we have failed. When someone can record and pause their TV shows effortlessly on a Tivo, we have succeeded. This is our job and we must do it well.

I work at Sun because it's my dream job to work on Java. I moved 2500 miles to take this position. Despite the oft-times annoying work of fixing bugs, dealing with committies, and building demos; I do it all because I care about building good software for people and desktop Java is one of the best ways to do that. Not the only way, but certainly a good way and I care about making it better. And I imagine that most people reading this column feel the same way.

So why do I feel so passionate about software? Well, when I started school back in the early 1990s I felt that computers were complex devices that should require the user to study up and be ready to use them. It's up to the user to make the computer usable. My thoughts on the subject changed when I became a User Assistant my junior year. It was my job to sit in a computer lab, babysit the printers, and answer questions. I constantly answered the same questions about simple things like printing and checking email. After a quarter of this I came to a revelation: these users weren't idiots. They were clearly intelligent people; after all they were going to the same school I was. They were just experts in something other than computers. They knew a lot about electrical engineering, or architecture, or industrial design. They became experts in that stuff so I didn't have to. Therefore I should be an expert in computers so they don't have to!

This was a revelation to me and caused my switch to focus on usability. Since then I've made it my mission to make software better for other people. This means I always design the user interface first. It also means I chose the right language for the job. Many times Java fits that bill, but not always. Shocking as it may seem I have been known to code in Javascript on occasion. Also in Perl, Pascal, native C, and even Visual Basic (which was painful but made sense for the project). In fact, this is the reason I'm so excited about the scripting support in Mustang. It means you can have access to all of the goodies in Java but still use the right language for the job.

So as we prepare for another great JavaOne let's all try to remember why we are here. Not to build Java apps, but to build great apps; apps that help people and make their lives better. Fortunately for us, it just so happens that Java is often a good choice for making these great apps.

Talk to me about it on Twitter

Posted May 4th, 2006

Tagged: java.net