The Ultimate Skill You Need To Write Good Code
and a common myth that will only hold you back
The Myth — You must be very good at Maths, or you can’t program well.
When I hear that from software enthusiasts, engineers, or doctorates, as they surround me, it still astounds me.
I believe the misunderstanding comes from the fact that ‘being good’ at mathematics is considered to be the innate aptitude of the individual. Meaning that by the time you are an adult and trying to enter a software-oriented career, you either know mathematics, or you don’t, which is false.
Being skilled at anything is achievable by acquiring and incrementing technique, and constant practice.
Most people who are indeed very good at maths and who program for a living, will also not be able to explain to you nor pinpoint how to achieve such godliness. Because it comes so very naturally for them… or so it seems!
“You either got it, or you don’t.”
I respectfully disagree. I’ve noticed that when people say you need to ‘be good’ at maths, they mean being good at mathematical reasoning. That, my friends, you already possess!
Reasoning — is indeed the very critical skill that enables a student to make use of all other mathematical skills.
Through the strategic development of reason, students recognize that mathematics could make sense and could be deeply understood.
So the next step is to learn how to evaluate situations and select problem-solving strategies, or draw logical conclusions on top of developing and describing solutions. It then becomes second nature to recognize how those solutions can be applied. Reasoners can reflect on solutions to problems and determine whether or not they make sense. They appreciate the pervasive use and power of reasoning as a part of mathematics.
Can you reason?
With yourself and with others?
Yes? Then you can program, and you can do Math!
The ultimate skill that will make you a better programmer is = what killed the cat!
It is your child-like curiosity that will keep you resourceful and interested, while you are preoccupied with asking the “why” of solutions.
It is not their analytical capability alone that makes programmers formidable. It is how gracefully they can combine it with the practical solutions in the real world, that will showcase their impact as palpable, real and relevant.
You may not know this, but even geniuses get unsatisfied and jaded when and if they lose their whimsical sense of curiosity, and proceed to work from a hyper constricted and solely dogmatic way. It’s not their knowledge of Dirac’s equation or Riemann’s formula that will save these prodigy programmers from their despair.
Another problem I have is with the word programmer. It is terminology that I don’t agree with, because it is limiting you to as wide as terms for making software goes.
Sometimes we think we are simplifying, when we are just limiting ourselves into an even narrower gap.
Similarly, I feel that in its entirety programming is just another means to make things happen. It is just one way of several ways to make the world of information technology turn and move forward.
There are other aspects intrinsically attached to programming that come up much higher on the skill list — even before maths, syntax, and what you get to build. For example:
- Understanding the problem you have
- Figuring out the best solution, which might not involve only software after all
- Ensure that you can keep evolving on the current solution.
Then whatever skills you might need will branch out even further, and depend on which kind of problem you are currently solving. After all, a developers life is never static!
Imagine for example, that one month you are working on building an Ontology library in Elm. But later in the year, you are going to make a very nice web app like Picturex in Ruby on Rails? Now all of a sudden you don’t need to use all that in-depth architectural or mathematical skills you have, but you need to develop a good eye for visualising things instead?
See what I mean? Nothing in software development is unchangeable. You can always acquire new skills if you wish to do so, or you can find other people that can help you with the skills that you don’t have yet.
The one thing that I have learned is that —
You cannot, and should not deny anyone outright, just by saying they cannot do something, without even providing them the opportunity or chance to try so.
Look into their circumstances and at how they have made it through their most significant challenges and how they got their wins in life. Because everyone has many successes.
Sometimes, how people who have found a way to come out of their challenges and get better, despite the infamy of their qualifications or lack thereof, matters more than a piece of paper.
For you my friend, who can’t find solace and support in a loved one.
May you find it here.