One of the best things that you can do as a developer is to be equal parts lazy and smart. This is an art that can be mastered to great effect. I don’t mean that you should abandon your passion for programming or stop being focused and goal driven. I mean that you should avoid work that is not absolutely necessary. To do that you need to be both lazy and smart in equal parts.
There are pitfalls. Laziness without being smart leads to inaction. Being smart without laziness leads to constantly reinventing the wheel. Ultimately the value you deliver needs to increase as a result of being lazy and smart.
Laziness means that you don’t want to do work that is unnecessary. You would rather copy and paste a known good solution rather than write it from scratch. You would rather ask a colleague for a quick answer than search for the same answer for hours. You would rather do a quick prototype rather than spending days in meetings arguing about how the application should look.
Being lazy means that you are constantly looking for congruent efficiency. You want to find a better way to get a goal accomplished with the same quality but less effort. You want to spend more time making great software with great user experiences, and less time doing mundane tasks. Mundane tasks are like the scourge of software development. Luckily new tools and techniques are eliminating mundane tasks but there are still area where you can make significant time savings.
Being smart is the most important part of the equation. If you are just lazy, then you really don’t get anywhere quickly. But put lazy and smart together, and you get magic. That elusive balance where you are practically cheating. Things are so easy and yet so effective. Smart makes your laziness seem like genius.
Some Ideas:
- Eliminate unnecessary meetings. Keep meetings short and to the point. Focus meetings on working software with demos.
- Have a code library for common patterns. Copy/paste from the library when you come across a pattern that you have used before. Keep the library up to date with latest practices and new patterns.
- Leverage co-workers. When you have a hard problem, you may be surprised to learn that your colleagues have solved this problem in the past. Ask early in the cycle to avoid duplicate work and potential mistakes based on a potentially flawed approach. Hold code reviews so that you can validate your solutions.
- Search the internet. Sounds silly but I’ve seen people plug away at a problem without looking for a solution online first. Google is your friend.