Thursday, May 21, 2009

Stupid Balloon Tips


One of the most dreaded UI elements in my point of view is the annoying balloon notification that shows up in the system tray. The problem is not the UI solution by itself: it is actually useful and much better than throwing a popup window in your face. After all, who has never hitted enter by mistake in a popup window that had shown up a split second before, without even knowing what it said?

The balloon notification is much less intrusive. This 'quality', however, ends up causing it to be extremely overused. I recently got an Eee PC with Windows XP preinstalled. And I found what is the most useless balloon notification I ever seen. In the Eee PC 1000he, whenever I plug a headphone, I get the notification above. As if I needed the computer to tell me what I just did!

Balloon notifications are distractions. Just like those tiny IM or email notifications that scroll up from the system tray. As a developer, you should avoid those distractions as much as possible. Remember that the user may be doing other stuff in the computer. The purpose of your software is to help get things done, and not get in the way of the user's work.

Wednesday, May 20, 2009

Quote of the day

From Tom Kyte's Expert Oracle Database Architecture:

"There are no silver bullets -- none. If there were, they would be the default behavior and you would never hear about them".

Sunday, May 3, 2009

Google Tech Talks

Google Tech Talks is an excellent Youtube channel with full length tech presentations given at Google. There are talks in a wide variety of topics that appeal to developers. A few recent examples are "Twitter WTF? - Why is Twitter Called a Threat to Google?" by Laura Fitton, "Learning from StackOverflow.com" by Joel Spolsky, and "Compiling and Optimizing Scripting Languages" just to name a few.

I strongly recommend that you subscribe to their RSS feed and watch out for the presentations on topics that interest to you. If you can't be at conferences all the time, this is the next best thing -- except that you miss the coffee breaks and the networking :)

What other technical presentation links you guys suggest?

Friday, May 1, 2009

The Agile Fallacy

Or: Agile didn't invent iterative development



12 years ago, when I was having computer science classes at college, teachers used to tell us that waterfall processes were bad, and that iterative processes were a Good Thing. They told us we should do a little bit of requirements, then a little bit of design, then a little bit of development and a little bit of testing. Then you would evaluate the results, review your planning and start over. There was even this fancy little spiral to illustrate the concept:



The concept of iterative development wasn't new by then, way before people started talking about Agile methods. But if you read what many evangelists and bloggers have to say, you would think that Agile 'invented' the concept. You read all over things like "in waterfall, this and that happens, but Agile solves this problem by doing this other thing...". People seem to conveniently pretend that if you are not Agile, you are doing waterfall. This is what I call the Agile fallacy: the false dichotomy between Agile and Waterfall, used as an argument to justify Agile.

As Penn & Teller would put it, that's BULLSHIT. Don't buy into this crap folks. Not to say that Agile is bad. Far from it. It is a Good Thing, and is a huge step forward in the field of software development. It brings in some fresh new ideas that will be around even when nobody is talking about Agile anymore. Also, I'm not saying that Agile is iterative development with a fancy name. That is an oversimplification made only by people who don't understand the existing Agile methods. But they are not the only alternative to Waterfall processes, and the alternative existed before Agile. Even RUP, the overly complex process framework that nobody seems to talk about anymore, which for many people is a synonym of waterfall, is actually iterative.

Now, why is the Agile Fallacy perpetuated? There are two kinds of people that defend it. The first group is what I call the 25 years old specialists. These are young people, fresh out of college, who are very articulated and smart. Those people are well intentioned, but they probably have never seen anything other than Agile in their careers, so they just inadvertently perpetuate the lies that are spread by the second kind of people, the Unethical Agile Salesmen. These are the ones who lie to make their sales pitch look better just like a used car salesman will lie to you about the defects and quality of a used car to make it look like a hot offer. It is important to note, though, that I don't want to make generalizations. Like in any other field, Agile has ethical and unethical professionals, and there some very credible people in this field.

Why am I bitching about the Agile Fallacy so much? The first problem I see with it is that it takes away the credibility from the people who defend Agile, and I think it is one of the biggest problems of the field today. There are just too many Agile snake oil salesmen around.

Another problem is that in this world of sotware development, there have always been the hot idea du jour. When it comes, it seems to be the Holy Grail of computing, the thing that came to solve all our problems. People embrace it and bet their success on it. Then after some time people will realize the real qualities and flaws of the new idea, and their disappointment is equivalent to the amount of passion that they had when they embraced it initially, and will dismiss that now not so new idea completely even though it has some legitimate good points. Agile has been the Holy Grail for some time now, and it won't be long until people realize that it is not perfect. To a certain extent, it is already happening, with people saying that Lean software developmen is the new Hot Idea and came to replace Agile. This is also a false dichotomy but is a subject for another article. But what happens is that after the period of passion people will notice the fallacy and it will work against Agile this time.

To avoid this trap, always be skeptical. If you take a skeptical point of view from the beginning, you won't be disappointed later. And better, you will be able to enjoy the real benefits of Agile.