I recently sat down with Peter Bell, an excellent tech trainer, to discuss an array of things. I had in my mind a prototype for this blog post that Peter promptly sunk.
My original idea was to write about outsourcing development and why I hate it ( I still do), and the stance I was intending on taking was “Hey ‘business-guy’ learn to code!”
So how did Peter change my attitude? He pointed out that much of learning to program is syntax, and neither of us thought this was important for a CEO to know. What I wanted was for the business guy to be able to speak the same language as the devs, and to have some intuition about which problems are hard and which are easy. In my CS program at Purdue this was mostly covered in the 2nd or 3rd CS course, after we had taken an intro to programming course.
Peter is actually working on a class to teach these skills to business folks, and I respect that a lot. He actually has a couple of questions he suggests people ask when trying to find a technical founder.
What revision control system do you use and why did you choose it?
One doesn’t need to know the answer but instead listen to the thought process of the engineer. A good engineer will have tried a few solutions and have chosen the system for a couple of salient reasons. A bad or novice dev will have chosen based on ‘everyone else uses it’ or ‘ it’s what I was taught’.
Peter has a number of other such questions but the principle remains the same: ask a question about technology and listen to the process the developer used to come to the answer. If that process was rigorous and thoughtful then you’re probably talking to a pro.
While I still think outsourcing development is a terrible idea, I am now less convinced that an intro to programming class is a complete answer. One really needs to understand CS design rather than a programming language. Of course, if you’re young you should still learn to code before Skynet takes over.
Developers should become CEOs.
I’m a huge fan of technical founders, so I tend to agree. But I’d rather not write everyone else off.