Agile Solves a Specific Problem

Bill Wagner has a great post on agile titled “What can we learn from the Agile Backlash

Every time I read about agile I’m reminded of how distorted my view of agile had become because I was listening to everyone else’s distortions of agile. I always go back to the manifesto and read a few simple words

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer Collaboration over contract negotiation
  • Responding to change over following a plan

The rest of the manifesto is important too, but I find these points are to what I come back the most often. It took someone smart figuratively smacking me in the face for me to notice how messed up I was and then I noticed how messed up many others are on the meaning of agile. (Thanks Amanda!)

Something that agile states is that your goal is to write software in ways better than you are doing now. This is from the first sentence of the manifesto, “We are uncovering better ways of developing software…” What I’ve noticed on a current consulting project is that agile is not applicable if the team (or client) is not interested in this goal.

Unbelievable I know, but not everyone is a software developer and so developing software in better ways may not be important to everyone. Specifically, it probably isn’t important to management, until you can show management that it saves them money.

Even given all of that evidence, some groups may still not share values with agile. For example, favoring individuals and interactions over processes and tools is not going to fit into an organization whose top down leadership absolutely requires people to use tool X from vendor Y, and it doesn’t matter that it doesn’t fit the current project or that it slows down velocity. It doesn’t fit when developers (individuals) show evidence (Mythical Man Month is the tip of the iceberg) that working on many projects causes thrashing that greatly hinders developer productivity when the organization doesn’t value delivery of software in a timely manner, but instead values a high number of concurrent projects. Its not that one set of values is necessarily better than the other, there might be a very good business case to retain existing values in that organization over the agile values.

Finally, it is of absolute importance as a consultant, programmer, team lead or program manager to recognize what you can change and what you can not in any organization. Sometimes you won’t know and you may go ahead trying to get some change. This is fine, but always be on the lookout to see how well that change is being adopted and be ready to “respond to change” even if that means not adopting agile in that particular situation.

Professional Programmers have a Responsibility

…To themselves and to the industry.

On a private mailing list I recently read a message which included this paragraph – this paragraph is totally off topic to the topic of the mailing list.

Author name has been excluded to protect the unprofessional programmer. (license breaker facilitator)

I’ve been working professionally as a programmer for nearly 20 years and I’ve rarely seen businesses that pay for Enterprise licenses, much less an "Enterprise" license that is only good for one Developer.  There will be tons of license abuse at this price point within businesses. Heck, most of the places I have worked at outfit their Developers with Visual Studio they got from one copy of the MSDN.

My response is this:

It is your professional responsibility as a programmer to point out to these businesses that they are breaking a EULA and if the software make found out they would likely be on the hook for hundreds of thousands of dollars in fees.

These types of business should be buying a copy of MSDN for each developer — that is how it is licensed. Or they should be investigating other options. And there ARE other options, whether it is Express editions, or a program like bizspark or open source such as SharpDevelop.

Excellence in Hiring and Practice

There was a Off Topic discussion on a mailing list recently which left me with these thoughts.

There is nothing wrong with expecting and even demanding excellence. It is these things which make society a better place. People do have a tendency of at least trying to live up to expectations. People want to succeed. The sad part is that there are so many employee positions which do not encourage or expect excellence. I feel it is not unreasonable that you have high expectations out of your interview candidates. I feel that it is important that we all recognize this problem in our community and recognize that it impacts the world as a whole.

While I’m not directly in the hiring position like some of the people ?venting? on the list, I will say that I’ve also been very impressed with a few of our straight out of college hires.(actually all, I credit good interviewing by the awesome people with which I work)

Extending this beyond just interviewing candidates, I was recently reminded of the importance of seeking excellence as we work. Sometimes as consultants we feel like doing things for our clients is a balancing act and that sometimes pursuing the best design isn’t the best thing for the client. Maybe sometimes that is true. But I think I realized that I was leaning toward the side of “settling” for non-excellent design. I shall not continue that. I shall provide a better balance of excellence.