My 1 year anniversary at the social side of software.

It's been a little over a year since I've been here, and what a year it's been. Or something along those lines.

I've gotten engaged, traveled to Italy, started the best job I've ever had, creating the grand irony that I've gained notice for my client side activities while I spend all of my professional hours working on server side products. But then, maybe that makes more sense. After all, I wouldn't want to do the same exact thing at home that I do at work. The important thing is I've not only taught and produced but I have also learned. Here is but a few interesting things I've picked up from

Most good software is developed by only a few people.

I always had this great vision of the internet bringing tons of brilliant people together to produce brilliant software. The more people, the better the software. I have found the most successful software to be developed by a small number of people, or at least with a very strong leader. The reason: focus. Well focused software is better software. I guess The Mythical Man Month was right.

Free as in beer is more important than free as in speech.

It's great to be able to pop open the code and fix something. But lets face it, modifying code you didn't write is difficult. You need acclimation time. The reason I often choose free software over commercial isn't because of dollar price or because of access to the source, it's because of a low setup cost. I can download it and get going now! No registration. No fluffy documentation. And especially no getting into my car and driving to the store.

Cognitive cost is the most important cost of using software.

If I can get started with some software very quickly then I'm more likely to use it, regardless of the dollar amount. Access to the code is merely a side benefit. This is an important lesson for free software developers. Make it as easy as possible for someone who doesn't know about your software to figure out what it's about and how to get started. If you need more than a paragraph to explain what it does, then no one will use it. If you need more than a page to set it up, then no one will ... You see what I mean.

There will always be religious wars, working code wins.

When developers argue on a list about the best way to do something it's the first person to code it who wins. Even when they don't "win" per-se, the one with the code has a great advantage. If someone else said it can't be done, you've just proven them wrong.

If you have a problem, someone else does too.

For every bug, every swing enhancement, every possible new feature that you can possibly think of, someone else has thought of it too. This fact does not get code written or problems solved. A forum where the two of you can talk, does.

Good ideas come in waves

Also called the 100th Monkey phenomenon (though the actual story is somewhat apocryphal). Some times a lot of people come up with a good idea around the same time, even when it was possible to have the idea long before. This has been especially noticeable with regards to Desktop Java. Swing has been the forgotten black sheep of Java's family, with J2EE as the star. Now all of a sudden clientside Java is everywhere? Why? I think it's because lots of people feel us reaching the limits of straight webbased apps and want more. At any rate, the difference between now and six months ago is striking.

A year ago I thought I knew a great deal about software. I came to to "bequeath my wisdom". How blind I was! In the last year I've learned much more from others than I feel I have taught. But perhaps that's the real reason why we call this the Java Community.

Talk to me about it on Twitter

Posted August 20th, 2004