Is coding an essential job skill of the future, or something that machines will soon perform more effectively than humans anyway? Should students – even those with aspirations outside of computer science – learn to code? If so, what does that mean — and how much is enough?
Alex Cowan, a professor at the University of Virginia’s Darden School of Business, believes students should learn to code, but sees coding as just one skill in a well-rounded professional toolkit, most effective when bundled with a host of other business and leadership traits.
Cowan, who teaches a number of courses on design and digital innovation both at Darden and via publicly available online courses, recently offered his thoughts on why coding matters.
Q. How do you define ‘coding’ and why is it important?
A. Traditionally, it’s been defined as creating instructions for a machine to execute. That definition still works, but with the ascendance of machine learning, you now have situations where what comes out the other end isn’t directly intelligible by a coder. With a neural network for machine learning, for example, it’s almost like you’re seeing the raw thoughts of the computer and those won’t make sense to you. With an end-user application, you have a more easily understood set of steps.
So really, you kind of have these two types of coding: data science and application development, which have some foundation elements in common, but are fairly different in practice.
What coding means for businesspeople is that in the not-so-distant future they’ll either be telling a machine what to do or it will be telling them what to do, to paraphrase [tech luminary] Marc Andreessen. I know that sounds kind of bleak, but I don’t think I’m serving students or anyone with decades of career ahead of them by pretending I don’t see that coming.
Q. So, everyone should learn how to code?
A. That’s what I think, but in practice it means something fundamentally different for a businessperson than it does for a career coder. A popular approach on teaching businesspeople – or business majors or MBAs – coding is to put them in some kind of “computer science light” class. I haven’t seen that work well.
As crazy as this sounds, a phrase I’ve grown to hate is “knowing enough to be dangerous.” You’re not trying to be dangerous – you’re trying to be awesome. How do you solve for awesome for a businessperson in digital?
I think everyone should start with that question. Really, what they need to learn is, end to end, what it means to go from idea to code. And, as you learn about your user, how do you apply that to iterating on your code in a focused, purposeful way?
Q. What do you think is the right approach for the future businessperson regarding coding?
A. Basically, I think the right learning experience involves going from idea to design to code. That means:
- Defining an idea.
- Testing it through customer interviews and minimum viable products, or MVPs.
- Designing software against that validated learning.
- Coding a 1.0 or at least a digital prototype.
Doing this gives the businessperson a perspective on how coding fits into a modern product program. They’ll take away a creative confidence that I think only comes from a hands-on understanding of the process. I just don’t think you can learn that without directed practice.
Q. Are certain coding languages foundational, while others are ascendant? How should be think about the different ‘flavors’ of coding?
Q. Some futurists suggest that while hard skills will be increasingly performed by machines, a suite of so-called human skills – traits like critical thinking, collaboration, emotional intelligence – will be the in-demand skills of the future. Do you have a stance?
A. Generally, I agree, and that’s why I’ve devoted myself to enabling generalists in this area.
I think there is some important nuance to what we mean by “hard skills,” though. In practice, what I know from managing, teaching and investing in MBAs is that you can’t be on the sidelines with regard to the technology. While your success is going to be determined by your ability to engage and focus a technical team, and that has a lot to do with your “soft skills,” you need a fundamental understanding, a fundamental numeracy, about what they’re doing.
Without that, you’re not going to feel creative and you’re not going to be creative. And that’s really what I’m after with my teaching – to make everyone creative.