Traditionally, people good at maths are supposed to be good candidates for programmers. Being good at maths doesn’t hurt, but it is not the whole story. There are other skills, equally important for people to become a better a programmer.
Being good at math certainly helps with problem solving. Something doesn’t work for an unknown reason and you figure out why it is the case. But if you focus only on this, you often end up with a more complex solution that it has to be or even you try to solve the wrong problem.
Language skills for a programmer
Being able to express yourself clearly is another important skill. You certainly need to write your code for the computer to compile and run in the target environment. But, you also need to write your code for humans who will need to read and modify the code later. This could be you 1 year later, when you forgot most of the original context. This can be other people in your team, other people outside your team, even people that you don’t know because they will need to modify your code long after you are gone to a different company.
A good technique for structuring the code is to structure it like a newspaper article. It starts with a headline, the first paragraph summarizes the main point of the article and the rest of the article adds the detail. Similarly, the public methods of a class or API should be defined at the beginning of the class definition. The private and helper methods that are called from the public ones are placed near the bottom of the class declaration. In other words, a good programmer needs skills similar to a good journalist.
Software engineers must be able to organize things, because software engineering is programming integrated over time. Each time you need to modify an existing piece of code, you should think about improving its internal structure (boyscout camp rule). This is usually done through refactoring – a very small step that keeps the functionality, but improves the internal structure. In order to be able to do that you need to be good at organizing things.
In other words, it is important to choose the right abstractions (language evolution helps here) and it is more important than knowing all the details of the language or framework you use as Christin Gorman noticed in her lecture.
To summarize, in my opinion language skills are equally important for programmers as the math skills are. Want to become a better programmer? Maybe you can learn a new language or attend a creative writing course.