Are you a programmer or anyway connected with software development? Let me ask you this question.
When was the last time you wrote a fully functional block of code without checking Google or Stack overflow or Github?
Or, when was the last time you really sat back and enjoyed your own, beautiful code – ‘Wow, can’t believe I created this. It’s a masterpiece.’
If your answers are not to your liking for any of the above two questions, you are not alone. Thanks to the google effect or the consequence of living at a time with instant access to information, with all the ease possible, there is hardly anything we can do these days without asking Google.
I don’t mind asking Google for the meaning of Akrasia or the name of the actor standing in the corner of a movie frame or to know more about the other research that’s happening on the very subject of mine, at some remote corner of the globe. It sure is a great supplement to our (limited) knowledge and it does a phenomenal job of organizing the world’s information and making it universally accessible.
Recently (thanks to Google), I came across this research report on the programming ability of engineers and the results, not surprisingly, are shocking.
As low as 2.21% engineers posses the skill to write fully functional code with best efficiency and writing practices.
Programming Practices and Programming Ability are the areas of maximum skill-gap across demographics.
* Btw, Programming Practices is the ability to write in readable, maintainable fashion and Programming Ability is the ability to code in the most optimized way.
Why is this? How did we end up here?
Success in any field is a refinement of sound basic principles that never change. The world around us could change at a pace we cannot keep up with, but not the basics or the value system. The definition of Mean and Standard Deviation will never change and so wouldn’t the semantics of a regular expression. But, what might change is the implementation of these concepts.
Remember the movie Karate Kid? Every other talent, be it Music or Sports or Karate, is acquired and mastered with a very strong emphasis on Basics and Practice, in such a rigorous and painful scale. Why should Programming be any different?
Yes, Basics will be boring and frustrating. But, there lies the secret to investing on a great future.
Basics are even more relevant with modern programming paradigms, because of the very fact that they are higher levels of abstractions, built on top of the basics and they expect you to know them very well. It is impossible to master Node.js without a deeper understanding of concepts like Event Loops and the most widely used functional programming paradigm namely Callbacks.
Another classic example is the way Big Data and Data Science are taught these days. For a programer of today, mastering Big Data is not about the knowledge of Hadoop acquired over a weekend or watching a bunch of online videos – it is first of all about having a deeper understanding of distributed computing, before venturing out into any of the fancy names in the Hadoop ecosystem like Pig, Hive, Yarn or Zookeeper. All those tools were created to solve a fundamental problem with computers and we need to have a deeper understanding of those problems in the first place, before learning or applying those in our own scenario.
For programming, Basics is not about the syntax or the programming constructs. Today’s IDE are far smarter, that they don’t even let you make syntax errors in the first place. Basics is about problem solving and logical thinking. Problem decomposition, logical operations, iterations and code flow to optimise the algorithm to scale over time and space complexity. You may know how to Sort a set of 10 numbers, but, would it work if you need to Sort a telephone book and produce a sub-second user experience?
Unfortunately, that’s not how technology training is offered today and in the absence of a deeper thought in meaningful talent creation, technology skills are offered as 2-minute packed lunch variations in so many colourfully wrapped gilt boxes.
In the path to attain quick wins in a tough job situation, people will always take the path of least resistance and choose utility and short-sighted pragmatism above anything else. No wonder the most used keys in a keyboard happen to be Ctrl C and Ctrl V.
In this scenario, one of the most revered inventions of our times, – read as Internet and Google – is leading us down a terrible path. In this maze of one hyperlink leading to another, we are losing our way to meaningful learning and mastery. We have lost or slowly losing our fundamental ability to learn anything in totality or create anything from scratch.
There is no better time to master the Basics – than now.