System Design
System Design is a big deal.
In one job I had to figure out why a battery charger made a battery overheat and spew KOH everywhere. It turned out that the programmer took the instructions, Discharge the battery at twice it's amp-hour rating (C), as provide twice the amp-hour rating of current to the battery while discharging. That means that he told the power supply to send 2C into the battery when the instructions mean that he should have limited the discharge rate out of the battery to 2C.
Understanding the problem to be solved is vital.
The Coming Software Apocalypse Summary: When programmers start a project they begin by writing code because they have a specification and that should be good enough right? But that is like sitting down and writing a book without knowing the characters, setting or plot. This gets a lot worse when the code is safety critical.