“Memory is what makes us who we are,” says Kenyan writer Ngũgĩ wa Thiong’o – a frequent contender for the Nobel Prize in Literature.
Therefore my blog today is based on memories I have had from the working environment at African Maths Initiative (AMI).
"The most important thing is not to learn all programming languages, but to understand programming concepts.... you can learn all programming languages in the world and not be able to program. You may be good in copy-pasting codes from the internet but never understand what that code is doing... this is very bad. Alex, what you should be doing is mastering the concepts of programming...choose one programming language and build on it." Danny Parsons my colleague once told me.
Once you are proficient in one, then it's easy to switch from "your" language to others easily.
This is something I have proved. I chose Python, taught myself from scratch, attempted challenges successfully, and here I am today sharing my experience after long working hours from my bat cave the “Code Room”.
From my programming experience from classes, I was used to lectures that left me asking myself “so what next?” With the chunks of code that lecturers left us with in class. Not understanding what they were supposed to do, because most of them could give a fatal error. From the working environment in the AMI office, I have developed a new skill: Learning how to Learn.
Think about how you work with your compiler. When you sit down to write a large piece of software, do you spend days or weeks writing code, then when you think it’s all done and completely perfect, press the “compile” button for the very first time? Of course you don’t.
Can you imagine what sort of disaster would result, trying to compile 50,000 virgin lines of code? (Like I used to do?) I have developed a new skill though: As programmers we work best in tight feedback loops: write a new function, compile. Add a test, compile. Re-factor some code, compile. We get the typos and bugs fixed as soon as possible after generating code. We want the compiler at our side for every little step, playing wingman; some environments can even compile our code as we type.
This is how I am keeping code quality high and making sure my software is evolving correctly bit by bit.