Develop for Your Customers, not other Developers

Recently my wife has been struggling with a web developer and he epitomizes a type that you find in specialized areas; someone that looks down upon and punishes those that aren't also in the field.

A classic example of this is the music critic. They'll lambaste whatever popular music comes down the pipe while heaping accolades upon bands that you can barely understand, lauding praise upon the intricate chord progressions or the unique way the guitarist bent the notes on the third change, hailing it as the album of the year and declaring the lack of it's appreciation as more proof of our general decline into mediocrity.

In software development this manifests itself as web sites that look horrible in Internet Explorer and have a snide comment along the lines of "Get a Real Browser, download FireFox now to see how this page really looks" or ugly e-mails with a top link saying, "If you're using GMail/Outlook/Insert Hated E-Mail Program Here then click here to see a better version or use a real e-mail program." Another even more juvenile form is when someone requests help in an online forum and some jackass responds with, "Well, if you had this OS/browser/computer/car/keyboard/mouse/console/Internet connection then you wouldn't have this problem." Oh let me tell you how useful that is.

The other way this manifests is when a developer gets more focused on a technology rather than the customer's experience. For example I love and develop CSS/XHTML-based web sites but if you're transitioning from old HTML 4.01 then your new XHTML strict site had better look as good if not better than the previous version otherwise it just appears like a step backwards to the customer.

Whenever you make a technology change, whether it's changing to or from a platform such as PHP, ASP.NET or Rails or it's adopting new standards you need to first ask, "How is this going to benefit my customers? Are they going to lose any functionality? Are they going to gain anything that makes the inevitable transition headaches worth it… for them?" Another important question is, "How does this affect the majority of my customers?". Too often I see new features being added to support the few but in order to implement them the many are punished or worse the entire customer base is inconvenienced because the developer got a wild hair and swore some new bit of kit would make everything so much easier, yet somehow it really doesn't.

I love shiny new things but it's important to not let all that shiny get in the way of the actual product.