Engineering has long been considered a demanding discipline. Whether studying civil, mechanical, electrical or another branch of engineering, it has always been understood there are intensive mathematical requirements. These requirements include a thorough understanding of calculus, linear algebra, and differential equations as well as some statistics and applied mathematics. This intensive mathematics curriculum is necessary because mathematics and engineering cannot be separated. In order to be good at engineering, one must be proficient in mathematics.

Over the past 20 years, an additional requirement has slowly been creeping into engineering. The ability to program/code is increasingly becoming an important skill set for engineers. Unfortunately, many engineering colleges and universities have not yet caught up with this change and most don’t require a solid programming curriculum. As a result, engineers tend to leave school proficient in a specialized software and with some scripting knowledge, but with little fundamental understanding of programming in general. The exception is those engineers who have computer science minors and those who are self-taught. They are an increasingly in-demand cohort that is better able to integrate into the modern engineering environment than their classmates with more traditional engineering backgrounds.

Programming is becoming an essential part of an engineer's skill set.Programming is becoming an essential part of an engineer's skill set.The need for engineers have programming skills is only going to increase over the next few decades. Specialized software for automation, robotics, sensors and hardware, among other applications, is becoming commonplace. It’s time for educational institutions to consider adding multiple programming courses into their engineering program’s curriculum, particularly in engineering fields that traditionally didn’t involve programming, such as mechanical and civil engineering. Electrical engineers have more traditionally had some training in programming, but these other disciplines now need it as well.

The C programming language would be a good place to start for a requirement. The C language, or its close relative C++, are used on all platforms and are very common. C is often used for hardware interfaces and is common in data acquisition and robotic control. Learning C will instill in new engineers a fundamental understanding of data types, compiling, linking and optimization that can be applied to other languages later in their careers. This sort of curriculum should be four courses minimum. A scripting language such as Python would make an excellent two-course followup.

As engineers are increasingly asked to create or modify existing modeling software, integrate hardware with control software, and generally assume more fundamental programming responsibilities, they will need to have a deeper understanding of programming. Programming at this point should be viewed like mathematics, an essential, indispensable part of the subject of engineering. As artificial intelligence (AI) and the internet of things (IoT) become more pervasive, there will likely be more and more programming required. A fundamental understanding of a programming language will give the engineer and solid foundation on which to learn new languages while still understanding how to write good code.

If there are not enough engineers with programming skills in the future, the alternative will have to be programmers who don’t have an engineering background trying to fill the gap. These programmers likely will not have the necessary science and applied mathematics background to effectively perform these tasks. As a result, engineering programs, IoT and AI implementations, robotic and sensor controls will have bugs and may be inefficient. This is why it is critical for engineers to start learning to program as part of their curriculum. So in the next few decades, when programming is an essential part of engineering work, engineers will have the skill set to handle it.