The Lazy Mindset of an Effective Programmer
What does it mean to be a lazy programmer?
Bill Gates supposedly said:
I will always choose a lazy person to do a difficult job because a lazy person will find an easy way to do it.
In reality, the quote probably came from Frank B. Gilbreth Sr. and concerned bricklayers, not software developers. Nevertheless, it’s a great quote that makes us think about the nature of good work.
So what does it mean to be a lazy programmer? And should you be one?
Shouldn’t I Work Hard?
You probably think you need to work hard to become a programmer, let alone a good programmer. You’re right. Programming is an intricate craft; it takes thousands of hours of deliberate practice to become competent at it.
So don’t let anyone fool you. Wherever you are on your career path, you’ll struggle a lot, and you need to be ready for the hurdles. You cannot allow yourself to be lazy; on the contrary, you should work as hard as you can.
But you want to choose your battles wisely. Working smart is as important as working hard. And to work hard on some things, you have to be lazy in other areas.
The hardest part of being a software developer is thinking. You don’t want to be lazy in that department; in fact, you should actively seek new challenges. You need your laziness somewhere else.
What Does It Mean to Be a Lazy Programmer?
A lazy programmer doesn’t want to do repetitive and mundane tasks. She gets bored quickly and seeks new adventures. She focuses on being productive, not hardworking. She achieves that by looking for patterns and automating everything to create maintainable and straightforward code.
A lazy programmer knows every new line of code is expensive to write and maintain. Hence, she wants to write as little code as possible and avoids unnecessary frameworks and libraries. She doesn’t reinvent the wheel but uses already existing tools.
A lazy programmer likes safety and knows she is error-prone. She understands machine errors are easier to find than human errors.
A lazy programmer values her and her client’s time, so she focuses on the vital work, not on the number of hours. She devotes her time to the tasks that provide value for the client.
In short — a lazy programmer leverages all the tools at her disposal to create the most value from the least time and code.
Examples of Lazy Programmers
Here are some lazy programmers’ achievements from the past. We should be endlessly grateful to them. They created tools to make theirs and our jobs more comfortable. So take a moment to praise our unsung heroes.
Lazy programmers didn’t want to waste time on code formatting, so they created Prettier.
Lazy programmers wanted to automate the tedious and error-prone deployment process, so they proposed Continuous Integration and Continuous Deployment.
Lazy programmers were tired of typing this same code over and over again, so they created Emmet.
Lazy programmers created all developer tools we are using because they wanted to make life easier. Be a lazy programmer; change the world for the better.
How Can You Become a Lazier Programmer
Imagine being able to do your days’ work with one click. Feeling useless? Well, your job is to make it happen. The best way to avoid making mistakes is not to do anything. So you need to automate and simplify your work as much as possible.
To become a lazy programmer, use the tools others provided. I mentioned some earlier (Prettier, Emmet, CI/CD tools), but you can find tons of others. Look for code snippets and extensions for your IDE that will help you find bugs and enable autocompletion. Use linters to analyze your code and addons to autoclose brackets.
Remember, you can write your shell scripts for repetitive commands. Always look for patterns in your daily job. If you have to do something several times a day or a week, try to automate it. Even if it takes just a few minutes each time, that automation will be worth it.
Document your solutions. When you struggled for hours and solved a hard problem, you may feel you’ll remember that glorious fight forever. But you won’t. And you’ll reencounter this same bug. Wouldn’t it be nice to have a solution documented?
Have you ever heard about testing? Everyone says it’s excellent, and everyone’s right. But how many of us write tests? Tests seem to take the time from the “real work.” But they save you the time you’d spend on debugging. So be a lazy programmer and write tests.
Don’t automatically assume that every task you get should be done. Be brave enough to think if it’s necessary and brings real value. Challenge your superiors if you believe it’s not. We often work on autopilot, taking the next task on the list. By challenging others, we may learn that the task isn’t necessary, and you’ll have less work. Or maybe the task is crucial, and you’ll have a chance to learn why. Either way, you win.
The time you devote to streamlining your work and making it easier is the most productive time of the day. So, make it a priority.
Isn’t It Dangerous?
You may wonder: isn’t it dangerous to automate your job away. If someone can do your job with one click, aren’t you obsolete? No, you’re not.
You’re someone who can automate your job, so you’re skilled enough to have more demanding tasks. You provide real value to your client or employer, so finding a new job or a position will be a breeze.
You’re not employed because you can do mindless assignments or code some trivial algorithms. Your job is to solve problems, and by automating your work, you prove you’re great at it. Problem solvers don’t need to worry about their careers. The employers fight for them.
The real danger is someone else automating your job. If that happens, you’re in trouble. So dodge the bullet, and automate it first. After all, you know your job best.