I recently read a post by James Shore (The Decline and Fall of Agile). It matches what I am seeing and hearing.

In the beginning, agile was considered leading edge. It was practiced by teams of fairly experienced developers and tended to have at least a few top developers on its successful teams. It was succeeding in the right environment.

Then along comes the mainstream.

Become agile and your projects are guaranteed to succeed. No more pesky Waterfall with its up front requirements and engineering. Use Scrum and write code as fast as you can and if the requirements change, change the code.

The problem is as it has always been. There is a broad spectrum of talent in the development field… from coders to project management. The less talented or experienced mimic others, without truly understanding, they skip the hard parts.

True agile is hard.

True agile is a frame of mind as much as it is a process. It's about being the best you can be. It's about writing the best code you can. It's about always striving to improve. Most importantly, it's not about skipping the hard parts.

There is no magic bullet to developing good applications.

Whether you use agile or not, to be a great software team or developer you must strive to learn all you can about the tools, software design, the processes and the business domain you are writing software for.

Accept less and get ready to join the mainstream. Mediocrity is by definition, for the masses. Afterall, 50% of a crowd is in the bottom half. The 80/20 rule applies to software too.

The good news is it's a choice.

For our company, I have choosen the harder road, the one less traveled and the one that leads to great software. It feels right and is much more satisfying over the longer term… simply put, to build great software.