There's a handful of software developers on the planet today that seems to be "super human software developers". Linus Torvalds, Alan Kay and Steve Wozniak being some of the primary candidates. They all have one thing in common, which is they've done a lot of the thing that they're good at - Something I explain in my previous article.
Becoming a super human software developer is actually incredibly easy. Do the same thing over and over again, extract learning from the process as you're iterating, and repeat a bajillion times. To write it out in code, imagine the following.
10 PRINT "Create a Software project"
20 PRINT "Learn from process"
30 GOTO 10
If you apply the above code snippet to your brain, and let it run for a couple of decades, you're a super human software developer. In a way it's the "wax on, wax off" thing from Karate Kid. You learn something without realising you're learning it. Over time the projects you're participating in, and the code you're creating, converges into new knowledge and wisdoms. The code you're creating basically becomes a part of your autonomous nervous system, enters your subconsciousness, and facilitates for changes in your brain, that permanently changes your ability to create software.
A friend of mine once asked me what the largest myth in the software development industry was, and what most people did wrong. My answer was as follows.
- The largest myth is that software development evolves fast, and that it's difficult to keep up with the industry because of all the new things we have to learn. Facts are the last brilliant invention our industry collectively created was LISP, and it was invented in the late 1950s. There's been little innovation in software really the last 70 years.
- The thing that most people do wrong is to believe they have to learn new things to keep up with the industry. Facts are, learning new things is a red herring, and keeps the individual from evolving and becoming better.
Of course, the above is a little bit exaggerated, but the average software developer only spends 20% of his time creating and debugging code. The rest is lost in meetings, reading documentation, and learning new things. If the average software developer spends 80% of his or her time coding, ignoring all the "new and shiny stuff", and create dozens of projects each year - Becoming a "super human software developer" becomes as natural as waxing your car. I walk through the arguments in the video below for those interested in the subject.
My experiences
I'm 48 years old, I started coding when I was 8. My wife claims I'm spending more time with my computer than anything else, and that I love my compiler more than her. Still today, as the CEO of a successful startup, branching out to several countries on several continents these days, I still spend as much time as possible coding. In fact my profile page on our web page says.
If they want me to stop coding they'll have to carry me out of the office in a box
The day I stop coding I'm probably dead. Why? Because I simply love it. For me it's like a drug. It literally makes me feel high. When I enter the flow, everything else evaporates, and it's only me and my code. 15 years ago colleagues started referring to me as "the machine". The reason was that I could churn out 500 lines of code per day, easily, without even making a sweat. The average developer can produce roughly 550 lines of code per month. I can also read code faster than I can read English and Norwegian. This is only possible due to repetition, as in repeating the art of assembling software, over and over again, participating in hundreds of projects, while extracting meaningful knowledge from all of my projects. If you want to become a super human software developer, the recipe is really simple ...
Wax on, wax off!
Come back when you've waxed a million cars, and we can talk ... ;)
Top comments (15)
So I'm not a CEO of a successful company as mine went down the pan some years ago, I also recently choose consulting which means I write less code. But on the flip side I get to garden, make games and (pretend not to code), make model trains and not code while I use the java based scheduler to run trains. Code It's a very addictive drug, find a balance, there are equally engaging puzzles hobbies to be found that let you appear to be a reasonable well ajusted human and still do some code π
I answered a similar comment for another one here just an hour ago ... ^_^
However, in the end, it's a question of "how badly your itch is" - Mine is pretty severe ... ;)
Very nice story. Indeed, practice makes perfect! Eventually, coding leads a Dev to improve their problem solving skills and with practice, they will already know how to solve a complex problem efficiently. I've been practicing coding challenges for over 2 years on daily basis not just for job interviews but also to sharpen my skills at solving different kinds of problems that may come in real life.
Bravo! I particularly liked this thing ... ;)
People who exclusively focus on "getting a job" tends to become bad software developers ^_^
Thank you for this. It came to me at the perfect time. I love your passion!
Please allow me to view it through a more narrow lense for a second, and "slow down". For example, lets say a new developer is encountering calling a function within a function in js for the first time. is it a better practice to write a bunch of functions wax on wax off style before moving on to another concept?
Hehehe, I think the idea is to not take everything so literal.
I'd say; Create a project, analyse what you did wrong, modify the process, and go back to scratch and create another project. Don't get stuck with trying to create a "perfect project" the first time, you will inevitably fail if you do. Basically; Quantity leads to quality ...
Psst, as to "slow down", that is literally the meaning of Aista in India ...
Thank you ^_^
Nice, thanks for sharing
Some amazing tips here thanks for the share.
Thx. I'd appreciate a share π
The end goal is unclear here.
It's hard to define what a good life is, but I'm pretty sure that "waxing a car by hand one million time" isn't that.
For me personally "spending many more hours programming than with my relatives and friends" isn't that either.
I guess it depends how one define the word "success" for oneself.
Is "success" just a polite way to say "lots of money"? I don't want to be poor but I don't need more money than my neighbor. Enough money is fine with me.
Is a "successful" developer someone who tries to outcompete everyone like if we were doing the Olympics?
I'm not competitive like that.
Should one give up sleep and hobbies for that and end up in burn out? Be aware that that's how it often ends up.
So I respectfully disagree. The "super human developer" described here doesn't sound very human to me, more like a robot programmed to do only one thing.
The article wasn't about success, family, or friends - It was about how to become a "super human software developer". I didn't say it was healthy, I didn't encourage people to do it, I didn't say it was an noble goal either, and I didn't say it was a competition of "how to become the best" - I simply told people how to achieve it if they want to ... ;)
The paradox is that the thing I'm showing in the video, actually allows any developer to spend time with his family and friends, due to taking away 80% of the burden of being a software developer ...
Seen the video.
Makes more sense with the context.
I knew about the pots study and totally agree with the philosophy.
Better start simple and messy and then iterate a lot.
Feedback: I think you should speak faster on video.
Thx for the feedback. You might be right, but I'm kind of trying to make people slow down ... ;)
Thanks for clarifying, will check the video later
@polter hahaha nice!