Horses for courses

You wouldn’t use a race horse to drag a cart

It’s no more sensible to talk about a single category of programmers than it is a single category of writers. Yes, an intimacy with the language is (usually) shared amongst writers, but otherwise journalists and poets don’t have a whole lot in common as part of their daily work. Likewise, a programmer working on a new database storage engine doesn’t share that many overlapping concerns with a programmer writing a new web-based information system.

Yet companies and individuals continue to lump all programmers together in the big “software engineer” basket. That means sharing everything from interview techniques (like the dreaded whiteboard algorithm hazing) to arguing about aesthetics across vastly different levels of abstraction. It’s not only silly, but harmful.

It’s one of the reasons I for the longest time didn’t think I could become a Real Programmer™. I used to think that all programmers needed to love algorithms and pointer arithmetics. That’s about as sensible as thinking you can’t become a journalist because haikus or sonnets don’t appeal to you.

It wasn’t until I discovered programming at a high level of abstraction, the kind suited for making business and information systems, that I started to realize programming, perhaps, was something for me after all. And even then, the original impression of programming being all about these low-level concerns stuck for years, and kept me from imagining a future where this would be my profession.

The ultimate breakthrough happened when I met Ruby. A language so purposefully removed from the atomic blocks of computers. This was my jam. My level of abstraction. A world and a community that not only wouldn’t scorn me for a lack of interest in algorithms or other low-level concerns, but actively encouraged me to embrace programming as the pursuit of happiness at my preferred level.

The world needs all kinds of people with all kinds of fancies. This is no less true for programming than for any other field of expression.

Would you believe that my first real project in Ruby was Basecamp? The original Rails application from which the framework was extracted. Both projects turned out pretty alright for someone who’d only just considered themselves a Real Programmer shortly before.