

There is no dearth of material to build programmatic expertise, ranging from algorithm textbooks to interview prep guides such as Cracking the Code Interview.
However, little has been done to better programming through regular, actionable habits. Such habit building remove high entry barriers to the field that was once considered reserved for math experts.
This article is one of the very rare and first known attempt to build one’s coding muscle, step by step.
In this business it takes time to be really good — and by that time, you’re obsolete.
- Cher
15 years ago, I was a contractor working for a Fortune 500 client. My colleague was in a role whose title always fascinated me: BuildMaster.
Nowadays no one hires a BuildMaster, nor do they appoint one. I miss those days. BuildMaster is an application, though.
BuildMaster often snapped out of his couch to rush to the office at midnight. “I have to double-click that damn build script — gotta bill an (overtime) hour, you see.”
One day, I advised him to automate it using some scheduler.
He answered, “If they know that this can be done using a scheduler, why will they keep me?”
Programmer’s paradox: In order to buy time for useful things, one must spend time in apparently useless and worthless things.
“Well, there is nothing stopping them from knowing it one day.” I reasoned. “You will be replaced, and blamed for not knowing such an easy thing.”
“I know, and I am prepping myself for that every day. But if I pull the plug today, who will pay for that seat I warm learning web development?”
Programmer’s paradox hit me: In order to buy time for useful things, one must spend time on apparently useless and worthless things.
I also marveled at how the realization of planned obsolescence was so obvious to him, which was not so obvious to million other programmers — including myself.
In just five years, the industry toppled itself upside down. Cloud happened. BuildMasters became DevOps, and developers started serving as cloud admins.
Agile cured the lazy BuildMaster problem, but in doing so, ended up punishing sincere devs by continually and uselessly measuring team productivity.
Don’t work hard. Think Hard. Thinking hard, you will know where exactly you need to work harder.
BuildMaster’s career suffered too. His client paid for his double-clicks until the contract end. But his web-dev learnings didn’t save him from the 2008 market crash. He fell out of his IT career despite knowing half a dozen languages, and 8 years of experience.
It’s a recession when your neighbour loses his job; it’s a depression when you lose yours.
Harry S Truman
Simply because he knew many skills, but experienced in none of them.
He kept clamoring to the low salary jobs — just to remain in the market, believing in hard work as his ultimate destiny.
Last week when he called, he frequently mentioned, “I wish could have worked hard. We already saw Dotcom bust. I didn’t heed the warning.”
“There is always next time.” I consoled him. “Think hard, instead of working hard.”
“But how do I balance my obsolete skillset without hard work?”
“After thinking hard, you will know where exactly you need to work harder.”
Every competent software developer is working towards his/her own obsolescence, despite knowing it.
A software developer’s workout is aimed at annihilating this obsolescence part. But in addition to survival, it is also aimed at continuous career growth, and a possible successful escape to software entrepreneurship.
The term *Workout *has been associated with physical, repeatable, exerting work. It contains exercises that drains you beyond your physical capacity. Its benefits are everlasting — until one discontinues it.
The great thing about a workout is, while you are at it, you are always prone to expanding your limits. You keep beating yourself. You keep getting amazed at how much you can achieve.
The worst thing about a workout is, it’s impossibly difficult to get started. Once you do, digital gamification from countless wearables ensures you will stick to it.
**Software Workout **is an oxymoron, however, because software, by design, is created to automate. One of the core principles of software design is DRY — Don’t Repeat Yourself.
So when we use the term Software Workout (or Developer Workout), we mean it in this way: It’s a routine that is aimed at making one a better developer. In other words, a software developer workout should improve a developer’s capacity to automate.
A developer’s workout can only be defined by its ultimate aim: To create a fault-tolerant software career, safer from layoffs, catastrophes, demotions, recessions.
Or pandemics.
The developer’s workout will not liberate you instantly from your 9–5 software job. But it will make your accidental exile much safer. Your career will be resilient to any changes in the lives of your boss, your company, or the world.
Just like companies are able to deploy builds in production, and reproduce production bugs in staging — without modern BuildMasters (read DevOps) punching into offices at midnight.
You do work out to feel fit during your daytime. But workout also does something long-lasting: it strengthens your body for your old age.
Software workouts should do a similar thing to your mind. It should fill you up with an infinite amount of adrenalin before you rush to the office / remote laptop. It should also nurture your long-time ambition to make that world-shaking powerful software.
Why do you want to get a good workout early in the morning? Well, because it sends more oxygen to your brain; it releases endorphins. It puts you in a state of mind where you can crush things, which is where you want to be.
-Jocko Willink
A software workout may or may not complement your job, but it should energize you even for the most mundane tasks in your office. (A double-click script for my BuildMaster friend?)
As a result, it should be followed daily, preferably during the morning. But if you are more comfortable spending time during the evening, it will benefit you too.
Contrary to physical workout, you do not need a gym (read: Hackathons) to exercise your coding muscle. If you have a modern laptop at home, it will fulfill most of your needs. Online IDEs (example: https://repl.it/) ensure that even cheaper machines can take you very far.
A software workout is a routine spread out evenly over the entire week. Now we shall describe four pillars of an effective software workout routine.
Your office work and developer workout need not be mutually exclusive.
Currently, the workout is spread over a week for 16 hours, and it seems a bit overwhelming if you consider your 40-hours / week job. However, once you understand the strategies to follow this 16-hour routine, it will become obvious to you that there can be great opportunities for overlaps between your office work and your software workout.
Your office work and developer workout need not be mutually exclusive.
Also, note that this is just the beginning. Once you are in the woods, you will know the trails to reach your destination without a map.
As a result, I have my four pillars of software workout charted out like below, but you can have your own distribution without changing the core components.
Inspiration: 6 Hours
Building: 4 Hours
Competition: 2 Hours
Marketing: 4 Hours
You will also find yourself increasing/decreasing the amount of time you spend after each of them, depending on your confidence level. This is completely natural.
Your brain is your only tool to develop and maintain a thriving software career. The only way to leverage your brain is to energize your mind.
Inspiration is the Red Bull your mind needs. You need it every day. If not, at least twice a week.
Without inspiration and actionable advice to pursue it, you will find yourself wandering in the woods with no daylight.
I described some tech stories that inspired me to build great software:
Reading from the best sources is the strategy to boost your learning exponentially.
There is no dearth of inspiration across the internet. Medium, HackerNoon, Wired, TechCrunch, Bloomberg, leading newspapers’ tech sections — all of them can bring to your stuff to kick off your imagination about what you could create.
However, reading all you can read will not lead you to any actionable career path.
Reading from the best sources is the strategy to boost your learning exponentially. In my experience, StackOverflow is an amazing tool that is quite undervalued for its capability in this area. While most devs use it to troubleshoot an immediate issue, it can be extremely useful in learning some most complex programming concepts.
On StackOverflow, you could favorite some technology/topic to filter/sort questions that teach from the best sources. Following top users’ answers is another strategy I have used even in my office time when I felt lame without a computer science degree.
On Reddit, popular programming subreddits do a similar job. These sources may also lead you to Twitter accounts of the stalwarts of your respective field. However, here you must be careful to weed out spammy, divisive, or highly opinionated content, and just read stuff that focuses on real learning.
Inspiration does not only come from reading. Reviewing the code of popular GitHub repos, watching most subscribed Youtube channels, or learning from tutorials (LinkedIn learning / Udemy) could also be mediums from where you draw your inspiration.
Podcasts are intensely useful if you are too tired to read, or distracted by driving during the commute. Utilize them to fill up your daily dose of inspiration. You will be amazed how your workday is much more awesome than you imagined past listening to your favorite podcaster.
Lastly, your inspiration source need not be from software only. It could be an intensely pacifying or energizing track too. As Nietzsche said: without music, life would be a mistake. In general, anything that gets you up & running for the day is your best source.
Reading/Watching/Listening about technology should be ideally pursued at least twice a week. Monday could be your first choice since it is the lowest-energy day for many developers. Pick any other weekday (Thursday, for example) to keep the momentum going.
Since most of this inspirational stuff is available online, you could easily allocate 3 hours each day (commute, morning, and evening). Alternatively, you could spread those 6 hours across the week if you are comfortable doing it every day.
Once you know your sources, the content will be easily available to you, and you will acquire more knowledge/inspiration within a shorter period of time.
The noblest pleasure is the joy of understanding.
Leonardo da Vinci
This step is the most crucial requirement in building a fault-tolerant, recession-proof career.
Because it builds the two most vital parts: Hands-On experience + Kickass portfolio.
On top of it, it forms the core of the developer’s workout objective: it insures you against accidental layoff by enabling you to launch your software product as soon as you are fired.
A robust developer portfolio requires just one great quality project.
By great quality, we do not mean uniqueness of content. A great quality project is a piece of software that is highly scalable, testable, and extracts the best from the hardware it runs on.
This project must demonstrate every programming skill that you have acquired up to that point.
You should complete it gradually, though.
If you are a web developer, begin by writing some cool, reactive, animated website in your favorite front-end: React/Angular/PHP/Anything else. Then, gradually add animations, some common plugins that mimic popular websites. Theme markets like Envato can be your great source to get an idea of how to get started on a front-end project. GitHub can be a great place to start, too.
If you are a full-stack career aspirant, begin with by simple CRUD back-end application and go on to add extra functionality every day. Once done, add a simplistic front end to demonstrate every operation. Add also functionalities like Authentication and Payment Gateway, if you wish. Then, learn some cloud solutions (Heroku/GCP/AWS/Azure) and deploy them under the free tier. I can claim from my experience that all this can be done in 3 months of time, alongside your 9–5 job. Once done well, and marketed better, demand for your portfolio will shoot through the roof.
If you are a wannabe game dev, start by downloading Unity, GameSalad, or any other popular game maker. Learn to navigate the UI, search the marketplace for plugins + readymade code. Once there, start customizing to suit your own taste.
If you are into app development, develop your portfolio app that involves consuming some public REST API, storing the data locally, and some cool control animations.
A well-made software project can be your trump card - not only in nailing interview calls, but also as back up entrepreneurship, if your employer fires you any Friday..
While you may have started this as a hobby project, as you develop it, make sure you write production-quality code to deploy it one day and earn some fortune off of it.
You don’t have to reveal everything in your public GitHub ever, and you must know that you could still demonstrate your code quality to your potential employers.
Keep improving upon the same portfolio project until you know it’s the best quality.
Decouple as much as you can.
Make things testable.
Keep imagining how much you could add, and how you could keep it scalable and maintainable at the same time.
Do it slowly. Do it step by step. Never abandon it.
Do not ever try to stuff up your GitHub to inflate your developer coolness quotient. A well-made software project can be your trump card not only in nailing interview calls, but also as great backup entrepreneurship if your employer fires you any Friday.
This activity will easily eat up 2 days of your workweek. You must allocate 2 hours at the very least to make it worthwhile.
If you need more time, you could try negotiating with your employer. If there is an overlap between your 9–5 work and your project, and you could publish parts without revealing your employer’s business secrets, you could easily utilize your work-time while building your community portfolio.
However, beyond that point, you must be careful: it is very easy to fall into the trap of building everything at once and be done with it.
Do not fall into this trap.
Good software is like a well-made recipe. You don’t want to overstuff it with a single ingredient, or process.
If you overdo it and abandon other workout ingredients, you might drain yourself too quickly. You could also lose out on some real quality stuff that’s out there: An efficient set operation, some javascript library, some cool graphic icon, or an eye-catching animation.
When you are at Gennady’s level, you no longer chase jobs. Jobs chase you.
No one in the programming world is unaware of CodeChef, TopCoder, LeetCode, or HackerRank.
I have advised against competitive programming in my past blog:
However, if done in proper measures, competition platforms could be your ticket to ivy league workplaces including FAAGM. Places like TopCoder pay tournament winners. You could win some serious freelance gigs by building up your portfolio and improving your ranking.
Gennady Korotkevich, a competitive programmer, won 6 consecutive golds in International Olympiad in Informatics. Now, if you don’t know what that is, just consider this: As of December 2018, Gennady was the highest-rated programmer at CodeChef, Topcoder, AtCoder, and HackerRank!
When you are at Gennady’s level, you no longer chase jobs. Jobs chase you.
While this seems not enough, there has been widespread discussion about competitive programming being an addiction.
You must ensure you do it solely to develop your algorithmic arm / develop your freelance career.
Two hours a week are truly enough to participate in a tournament if you continue doing it over a period of time. If it truly interests you, and 2 hours leave you hungrier, you could dedicate your reading days to learning about theoretical aspects and gain a better ranking during competitions. Soon enough, you will be writing code in your showers and in the commute.
Dope for adrenaline junkies.
All business is basically about customers and marketing and making money and capitalism and winning and promoting it and having something someone really wants.
Roger Ailes
A great portfolio with no marketing is highly undersold in today’s connected world.
Marketing not only puts your best to the outside world; it also forces you to correct your worst.
While true coders can be happy in their own private dens, portfolio marketing can open channels that were once out of reach.
Marketing not only puts your best to the outside world; it also forces you to correct your worst.
A software developer’s marketing isn’t simply about having 1000 Twitter followers, posting 5 times on Quora every day, or Instagramming your latest application screenshot. It is also about forking the right repo on GitHub, rolling out relevant pull requests, and grabbing the attention of your desired employers.
People have been hired by Google by just searching about python lambda.
The most common ingredient in all recommendations is:
Keep updating your portfolio with your side project development
Keep sharing it on your blog/Twitter/other channels.
While doing it, do not brag. Ask for feedback. Your humility in such endeavors will push you on top of your game very quickly.
It takes an active online presence to even know about such gates. The good news is: it doesn’t take much of your time. All you need to do is to be mentally present.
Since much of what is described above can be done by subscribing to social media feeds and Google alerts, one can easily spend 4 hours per week after marketing. It can be done during the commute on your mobile. It can also be done on weekends. Because of flexibility, you could fuel your next week’s activity if you strike something relevant while scanning your feeds.
16 hours of software workouts seem overwhelming to those who are already strained by software burnout.
However, if you calculate the time you are absorbed in useless social media feeds or meaningless office banter, you will easily spot slots that you could steal & squeeze to make up that 16 hours schedule.
It’s totally worth it — if it could build you a recession-proof software career.
You better earn it, before everyone else does.
First Published on Medium on May 31, 2020
<100 subscribers
No comments yet