Select Writeups
Sharing a bit about myself by publishing what I write. This is where you can find opinionated writeups discussing various topics of interest including:
Stop learning to code
If everyone could code…everyone would have been coding already
We all noticed that software is eating the world, and the next cool thing is to learn how to program. With grand dreams of a ‘coding class’ and the lure of higher wages and job security, why would anyone argue against the need for everyone to know even ‘a little’ coding? At the very least I don’t mind telling someone to give it a shot, and I go so far as to teach it to people willing to try. But for various reasons, I can’t expect a world to evolve in a way where everyone is a ‘coder’.
Decisions, decisions
Currently, fourth-generation programming languages are primarily used to create software. These languages are steeped in rich imperfect histories that tether them to certain devices, create unnatural programming rituals, and leave us praying to compatibility gods. If you dwell on the notion that you want to code, then you risk being overwhelmed by the ways to code, the capabilities of the code, and the purpose of your code. Compound that with all the libraries you need to learn and you’ll end up with a quick way to lose focus. The decision to code is only the first of many decisions on the path to creating software.
The language-tool divide
As software evolves, the means for producing the software we want will evolve, and you will want to evolve with it to maintain your value as a developer. This includes being willing to throw away everything you learned to do it the ‘right’ way.
Learning programming languages is often compared to learning spoken languages (a comparison I often make myself). But spoken languages exist for communicating, whereas programming languages exist for creating. Programming as we know it WILL keep evolving at the beat of unimagined hardware, libraries, and concepts. In the same way, we look down on the assembly programmers of yesteryear, future generations will snicker at the antiquated means by which we make software now. The value lies in what you create to solve a problem, not the languages and concepts used to solve it. To learn how to program is to learn how to use a tool, and today’s languages and practices are like screwdrivers in an age when automatic power tools are waiting to be invented. A programmer’s worth comes not from some intrinsic, unspoken, magical ability. It comes from the high demand of those who want to build software mixed with the low supply of people who can use wield these difficult screwdrivers. Over time, the divide between language and tool will dissipate. And the means to create will simplify and expand like never before.
Something will need to be sacrificed
Learning how to program takes time and I wouldn’t claim it to be a “set it and forget it” skill. Top performers in the craft invest many hours to maintain and refine their skills. Something will need to be sacrificed if you want to get to that level. Would a great sculptor find any benefit in learning to code? Perhaps… who knows where one can find inspiration. But if that sculptor spends half of the usual sculpting time trying to learn to code, I wouldn’t bet on that sculptor seeing any improvements in what could have been called a primary craft. There are always things you ‘should’ learn, and coding could fall anywhere between the lines of algebra and woodshop class. But time is still finite, and the power to code may directly result in the loss or deterioration of another power.
Quality Control
There is such a thing as bad code. And pushing the notion that everyone should code, will lead to a lot more bad code, and bad code is bad. In a rush to get everyone to create code, we risk depreciating the beauty of it. Good code comes from experience, and the willingness to invest time to get that experience. Code is structured expressionism, acting as if it was dead, yet full of life. Code lives on through refactoring, or dies and gets regarded as ‘legacy’. Code is constantly torn up and put back together. Rather than lead the way for more orphaned and abandoned code, let’s push the notion that we want to see more quality code, from quality people who want to put in the quality time towards creating something.
But… we got to learn something
Discouraging learning is not fun. But there are many skills needed to descend further into the digital world. For some, it might be coding. And to get over the hump, there may be better ways to find your calling. Sometimes the best thing you can do is look at yourself and take notes of the questions you are asking…
Do you simply say “I need to code” or do you say “I need to build X”? Do a little bit of planning, then start building. You will gravitate towards what you think the best way of building X is. Plans, sketches, perhaps some code. There is a process for software development. Get a grasp of how software gets created and see where you fit in best.
Why can’t you use this framework or platform? So what if you used Squarespace or WordPress to create what you wanted to create. As long as you’re meeting people’s needs then it's fine. Sure platforms mean limitations, but if you know where the project is going and how to contain it, those limitations shouldn’t matter much. And in some instances, you can rely on such platforms and still find ways to mess around with some code.
Do you want to tinker with past code or methods to be a better programmer? Coding is humbling if anything. The computer is always wrong until you stumble upon the glaringly stupid obvious mistake you made. On top of that, you can count on code to have the need to be more secure, have better performance and/or maintainability, and often change to whims of third parties, either to your delight or disdain. It helps to be prepared and adept not only in the art of creating new code but going through the pain of maintaining old code. Old code that you never thought you were so stupid to write.
Would you enjoy doing and evolving in this? It doesn’t have to be orgasmically fun and it doesn’t have to be your passion, But could you actually enjoy sitting in front of some computer screen with music blasting from your headphones while you mess around with some code? Ask yourself about the feelings you get after spending hours unlocking a coding puzzle. Both the good and the bad ones.
How will you feel knowing that the language you spent conquering will lose value or evolve beyond comprehension in less than a generation? The times will change and you will have to look at what you made, and all the plans and tricks you used to make it. Assess how you will look at the contributions you made towards creating awesome software. Learning is not just about putting another skill under your belt, it's about understanding how you applied that knowledge to satisfy the real needs of real people.
Are you less of a person if you can’t code? Ultimately, it’s all about the ways in which you value yourself. It never hurts to try. I will not be the one to claim that coding is easy or hard or something that you get or don’t get. Those questions are beyond anyone's man to answer in a way that is correct for everyone. But creating in this new age will require more than code, so don’t mire in the idea that you are less of someone because you were unable to code. There are plenty of other valuable people with those same inabilities. Luckily value is never determined by what you're unable to do.