Losing my religion

You’re over at a friend’s house – let’s call him Bob – and after opening a beer he invites you out to the garage to see something.  On the wall hangs a reciprocating saw.  You notice that there are no other tools visible, which seems kind of weird.  Bob says “You like it?  That reciprocating saw is the best tool ever.  When I got it, I really liked it, and I joined the local reciprocating saw users’ group.  They showed me all the cool things I could do with it, and I realized I didn’t need any other cutting tools.  I even use it to slice my cheese!”

What’s wrong with us? 

I am frequently irritated with the mindset that there’s One True Way of solving any kind of software problem, be it web platform, database choice, operating system, or methodological approach.  It’s been irritating me since I was an academic and I would present two different algorithms (let’s call them A and B) to solve problem X.  There would always be a student who wanted to know "which is better?"  Typically I would respond "In a situation such as […] A is better, but if you are looking at something more like […] B is better."  Most people would be happy with that but there are always people who insist that one must just be The Best Way.

So, reasons for choosing, or sticking with, a particular technology/methodology/whatever:
– It solves the problem you need to solve.
– You have a lot invested in it and there is not a sufficient business case to switch.
– It’s easier to hire people with the appropriate skills / your staff have this set of skills and you can’t just fire them all
– It matches your mindset, or, to go back to the hardware analogy, it fits your hand.
– It has good community / support .

There are very very few absolutes in choosing tools, save that whatever tool you choose should be of basically decent quality.  I have my biases like everybody else, but it’s important to realize when you have a bias and acknowledge the effect that has on your decision making.

In particular, telling another engineer that all their problems would be solved if they would just switch from technology A to technology B is often the worst kind of cultish thinking.  I’m talking about the kind of discussion you see on mailing lists, on IRC, or from some people in person where you say "I have this problem.  I’m using technology A and…" at which point someone butts in and says "Switch to B." when they know nothing about your problem.

(Having said this of course, there are some exceptions, in particular to do with upgrading versions and using basically dead technologies.  So sue me 😉 )

DC PHP Conference

I’m headed to the DC PHP conference tomorrow to give a plenary session called "Write Beautiful Code".  This will be the same talk I gave at ZendCon which was pretty well received.  (I changed the title to something I thought more appropriate once the presentation was actually written.)

On Friday morning Luke and I will give our PHP Best Practices tutorial at the conference.

I see a good number of PHPers are already at the conference – I look forward to catching up with everybody there, although I will probably have my head in a laptop in between talking, got a lot on this week.  Fingers crossed for a decent network connection.