Article: Programming for Scientists and Engineers (ACM)

An excerpt from the article Why Scientists and Engineers Must Learn Programming by Phillip Guo on BLOG@CACM:

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.

Full Text: