So I’ve been asked to give a talk to an undergraduate college class in Systems Development (within CompSci). The professor is a friend, and knowing about what kinds of work I do, he asked me to come up with a 90-minute instructional block on anything I thought would be helpful to them.
So I thought a bunch about what I wished I’d been told when I was an undergraduate, and came up with this; I’d love feedback (actually, they’d love feedback – it’ll let me do a better job presenting to them).
Imagine this in the form of lecture notes:
The topic is the difference between Engineering and Physics.
What’s that difference? It’s simple – physicists can be successful with gedankenexperiments – experiments that you run in your imagination. Engineers just build stuff.
It applies to what you’re doing in Systems Development (as opposed to the more academic CompSci paths available to you), because you all are preparing to go practice engineering and actually build stuff, as opposed to do research and come up with innovative technology that will eventually be used by people who actually build stuff.
And that “building stuff’s” the key. It’s assumed at the door that you’re a great engineer you know how stuff works, and have the intellect and discipline to. But in the real world, you’re not paid to be a great computer scientist – you’re paid to build stuff that is useful and works.
And to actually build stuff that’s successful in the real world, you need to manage three equal and competing priorities –
• Technical reality (the real world limits what can be done)
• Political reality (other people limit what can be done)
• Financial reality (the amount of available money limits what can be done)
Now to many engineers, ‘political reality’ and ‘financial reality’ are what Dilbert’s pointy-haired boss worries about.
I call those engineers ‘failures.’
“Well, what about Steve Jobs,” you’ll answer as a retort.
What about him? He build a company that was incredibly good at managing (some say creating) technical reality, while also growing in headcount, partners, customers and money – he managed the political reality and the financial reality rather well at the same time. He had his ups and downs, but we remember him (and respect him) because he was successful while building great stuff. There have been lots and lots of people who failed while building great stuff, and you’ll note that we don’t talk about them.
Each of these three disciplines is hard – you could go get a degree in any one of them.
So you won’t become an expert in any of them today.
The point I – badly – want you to get is that to be good at what you’re working hard to do here, it’s necessary but not enough to be great at the craft designing computer systems. You also have to be at least good at understanding the cost-benefit implications of what you’re designing and at least good at getting people to work with you constructively in getting them done.
…to be continued.