Why I learned to program

There’s been a lot of interesting talk recently about what it means to be “technical.” If someone asked me if I’m technical, I’d probably say yes, but include a caveat that it’s not my day job. But I know enough to get by. Barely.

For someone to claim this lofty title, I argue she should have actual experience with the following:

– Shell commands
– MVC frameworks
– Object-oriented programming (any language)
–  API’s

This list is completely built from my own experience. I have built up a Rackspace server. I’ve also “sudo chown -R /”‘d my way into heart failure. I can write Python classes but I still don’t know how to use constructors. I’ve built my own website in CodeIgniter and watched another get built on Rails. And I’ve played with about a dozen API’s and even built one for myself in PHP, just to know I can do it. You can’t build a website anymore without some knowledge of SQL, so that’s obvious. Same with HTML and CSS, so I don’t include them.

I go back and forth on whether it’s important for the people steering a startup to be “technical” by my definition. In some ways it helps me explain what I’m thinking in product discussions. In other ways, it probably suppresses my creativity because I start to think in terms of what I think is complex or not possible, instead of what simply should get done.

I don’t think it’s a distraction for founders and execs to learn to code. I like going in and seeing what’s happening, fixing typos or adding extra static pages when I get the inspiration. With our team as small as it is, every bit of technical help is useful and takes at least some weight off of the dev team’s shoulders.

It really just boils down to communication. I think it would be impossible for founders to work with product engineers if they have no technical background. The more you know, the easier it should be to communicate. You’ll make fewer completely wrong assumptions about how things work, and maybe even earn some respect from the product team. Regardless, it’s a great way to learn to think. That’s what I’ve found most gratifying about coding – it’s a great mental workout, and this “head muscle” comes in handy in other parts of business life too.