BLOG@CACM
Computing Profession

Why Scientists and Engineers Must Learn Programming

Posted
Philip Guo profile photo

In recent years, there’s been an admirable push to get more people to learn programming. But if I’ve never been exposed to programming, why should I invest all of the effort to learn? What’s in it for me?

Pundits often give fuzzy responses like claiming that programming is the “literacy of the twenty-first century,” that it helps you become a more empowered citizen, and that it enables you to create magical works of pure creativity.

Even though I agree with many of those claims, I’m not convinced that they’re concrete enough to motivate someone to devote the thousands of hours necessary to get proficient at programming.

Instead of trying to convince everyone to learn programming, I have a more modest goal: encouraging scientists and engineers. Here’s my value proposition to them:

If you’re a scientist or engineer, programming can enable you to work 10 to 100 times faster and to come up with more creative solutions than your colleagues who don’t know how to program.

 

Kevin’s Story

Modern-day scientists and engineers are spending more and more of their work days in front of the computer. As an example, consider my friend Kevin, who works in oceanography and mechanical engineering. Whoa, sounds like he’s probably spending all day out on high-tech boats rigging together mechanical devices like MacGyver and collecting data from underwater sensors, right? This must be his typical work day — hard hats and heavy-duty work gloves.

Actually, Kevin spends less than 5% of his time out on the ocean; the other 95% of the time, he’s sitting in front of the computer writing programs to clean up, transform, process, and extract insights from data collected out in the field. This is what Kevin looks like at work on most days:

The same story plays out for scientists and engineers in all sorts of fields: astronomers, biologists, physicists, aerospace engineers, economists, geneticists, ecologists, environmental engineers, neuroscientists … the list goes on and on. Modern-day science and engineering is all about processing, analyzing, and extracting insights from data.

 

Three Reasons To Learn

Over the past few years, many scientists and engineers have ranted to me about how furious they are that nobody made them learn programming back in high school or college. They now realize how much more productive they could be at work if they had developed those skills earlier.

Based on these conversations, I’ve come up with three reasons why scientists and engineers must learn programming:

  1. You can work 10 times faster by writing computer programs to automate tedious tasks (such as data cleaning and integration) that you would otherwise need to do by hand. If you know how to program, computer-related tasks that used to take you a week to finish will now take only a few hours. I can’t think of any other skill that leads to an instant 10x productivity boost for scientists and engineers.
  2. Programming allows you to discover more creative solutions than your colleagues who don’t know how to program. It lets you go beyond simply using the tools and data sets that everyone else around you uses, to transcend the limitations that your peers are stuck with. For example, you’ll be able to write programs to automatically acquire data from new sources, to clean, reformat, and integrate that data with your existing data, and to implement far more sophisticated analyses than your colleagues who can only use pre-existing tools. By doing so, you’re more likely to make a creative innovation that your colleagues wouldn’t even think of exploring due to lack of programming skill.
  3. Finally, knowing how to program allows you to communicate effectively with programmers that your lab hires to do the heavy-duty coding. I don’t expect you to become as adept as the professionals, but the more you know about programming, the more you’ll be able to relate to them and to command their respect. If you can motivate programmers in your lab to spend more of their time helping you solve technical problems (e.g., by writing parallel programs that run on a compute cluster), you can work 100 times faster than if you had to attack those problems alone.

 

 

Postscript

Readers have responded with two main classes of comments:

  1. Scientists and engineers in lots of fields already learn some amount of programming (e.g., in Excel, MATLAB, Mathematica, LabVIEW).
  2. We should strive to create end-user programming tools that make it easy enough for scientists and engineers to do what they need without even knowing that they’re programming.

I agree with both of these points. But in the foreseeable future, I think that programming skill will always be positively correlated with creative productivity in many technical fields. Thus, for scientists and engineers who already know some amount of programming, learning more will always provide a competitive advantage over colleagues who aren’t as adept. We might someday get to a future where programming as we know it will become as obsolete as calculating integrals by hand, but I doubt that’s going to happen anytime soon.

 

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More