Sunday, April 4, 2010

Using what works

What’s with the hating, can’t we all just get along? The agile guys vs. non-agile, Windows vs. Mac vs. Linux/Unix, and we can’t forget the language wars.  So why do we get so entrenched in the belief that the way we do it is right and everyone else is wrong; call it ego, pride, or something else, it doesn't really matter, why do we do it.  By nature we are problem solvers so why do we have such a hard time accepting other’s ways/tools for solving problems?

 

Agile vs. Non-agile

Having worked in both agile and non-agile environments, I have to say I like agile, I think if done right for most development environments it has a lot of advantages, the key here is if it’s done right, and for most environments.  If your daily scrum meeting are taking more then 30min, there is strong possibility your doing something wrong.  On the other side with a few exceptions, the idea of specifying every feature your project is going to have before anything is written is, well naive at best.  At the patterns and practices conference Billy Hollis make some comments that really upset a fair number of people in the agile community, and in return they responded with that Billy doesn't know what he’s talking about, etc.  To this my thought was your both right and at the same time wrong. 

Agile doesn't work for everyone, some teams just can’t do it, and that’s ok, you shouldn’t feel bad because your not doing it the way the “cool kids” are, the important thing is to find a development methodology that works for your team.  Having said that, there are a lot of practices that have come out of the agile methodologies that can greatly benefit the non-agile groups, I don’t care what you say unit testing benefits everyone, having a build deploy server helps everyone, etc. 

To the agile zealots out there, agile is A WAY to develop successful and maintainable  software, it’s not the only way.  Lots of very successful projects have been written with non-agile methodologies and lots of very unsuccessful projects have been written using agile.  Everything has it’s advantages and disadvantages, let’s face it the larger your team the harder agile gets.  As in most things zealotry is wrong, I don’t care how good the dogma is, it’s not more important then getting the job done, the most important thing is to get the job done, so find what works for you and do it.

 

Windows vs. Mac vs. Linux/Unix

The OS fan boy wars are a never ending battle between people who for the most part really just don’t get it. So let’s break down the fan boys:

  • Windows fan boys: For the most part they have never used anything but windows, everyone else uses windows so it must be the best at everything so it doesn't matter what Microsoft provides it’s the best.
  • Mac fan boys: Their like the popular kids in school that you don’t understand why their popular because no one really like them that much, and then you add on a devotion that is almost like a cult with Steve Jobs as their messiah.  Some are disillusioned windows fan boys others where born into the Mac fold and all have a limited understanding of what’s out there.
  • Linux/Unix fan boys:  Seeing themselves as elite or ultra power users they look down at windows and Mac users as lower life forms, yet at the same time they are constantly defending their OS.

I must make the disclaimer that I am a former Linux fan boy and to this day I see a lot of faults with windows, but on the flip side I see a lot of improvements that have been made in windows that make it a lot more attractive, but I still really like Linux, funny that I’m a .NET developer.  All three OS have their strengths and their weaknesses and all three work as a development platform, albeit some are better at some development stacks(.NET is easier on windows) and some development requires a specific OS(if you are doing IPhone development you need to have Mac), in all honestly all three work well and it really comes down to what the user likes out of their OS.  I have known some very talented graphic artists that don’t like Macs and have been very frustrated by having to use one, on the flip side I have a Ruby developer friend that really likes Macs.

So in the end it really comes down to is how can we make what we have work for what we are doing, and choosing the right tool for the job, and for who is doing it verses following some techno dogma.

No comments: