Hi Friends,
The difference between a good developer and a mediocre developer is that a good developer knows how to spend their time well.
I’ve noticed that the purpose of many of our day-to-day tasks is to save time.
We get rewarded for building systems and services that can launch to market fast. The most impactful projects are sometimes projects that help save time, money or often both.
Our time is the most expensive and critical aspect of our job. Thus, you must protect your time and spend that time on things that are the most productive.
In this article, I want to share with you why a developer’s time is so precious and to give you some actionable tips on how to save time and be more productive.
Let’s begin!
Why is a Developer’s Time So Precious?
Developers Are an Expensive Resource at a Tech Company
All successful tech companies know that to build a successful product, you will need to keep your developers happy. Therefore, many companies create a team called developer productivity to measure their software development’s efficiency and developer happiness.
What many companies don’t emphasize is how developers are one of the most expensive among all business costs. Thus, they try everything to help make developers as efficient as possible by either keeping them in the office or decreasing the amount of “idle” time during working hours.
Whenever new hardware comes out to market, tech companies will try to evaluate if a hardware upgrade will save their engineers’ idle time. Soon after Apple announced the M1 chip on October 2020, Uber and Twitter announced that their iOS and Android engineers upgraded to a 16” M1 chip MacBook Pro with 64GB of RAM because it decreases build time.
Think about this, a new 16” M1 MacBook Pro can speed up the build time by 10%. Let’s say an average software engineer spends 20% of their working day waiting for builds, which would save an estimated 48 minutes per week. If the cost of an average software engineer is around $100 per hour. The company could save $76 per week amounting to $4000 per year for every engineer. Let’s calculate the ROI of buying a 16’’ new M1 MacBook. With the cost of $2000 per engineer, the ROI will be around 100% ROI. Thus, upgrading every engineer to an M1 MacBook is a no-brainer.
Work Smarter, Not Harder
Working long hours doesn’t mean that you get more brownie points, especially with WFH.
More and more teams measure impact through outcome instead of sheer volume of output. You need to work smarter instead of harder by focusing on protecting your precious time.
Working smarter optimizes your energy and time. It helps you spend less time burning your energy and save more time for other important things.
Save yourself time to do work that matters to the company, and you will be more likely to be rewarded with a promotion.
How to Save Yourself Time and be More Productive
Automate Everything
The best developer always has a set of tools handy to automate their workflow.
For instance, having a one-line command to pull and rebase from your current branch can help you save time in the long run. It might sound excessive or frantic, but you’ll make your workflow much simpler and faster than other developers.
You may be amazed at how many little scripts an efficient developer uses to automate the daily mundane task. That is the secret to doing more with less time.
I see some of the most efficient iOS developers on my team create a cron job to automatically build their project the day before they arrive to work so that once they arrive, they could immediately start doing deep, meaningful work.
Delegate Tasks as Much as Possible
When you become the subject matter expert on the project, you’ll get more ad-hoc requests to develop small features for the product.
You should be able to push back by asking why and its priority. Your stakeholder will always say that it is a priority because they want to complete their task. In this scenario, instead of asking them how important or urgent the task is, you can ask what is the outcome of this task and any potential impact if we don’t finish it in X amount of time. This can give you a quick understanding of how important the task is in adding to the project for the long-term.
There are two ways to delegate. The first one is to communicate your expectations to your delegates, and create space for them to develop their own solutions. The second way is to share potential solutions and give out clear instructions on how they should do it.
I prefer the first method because you give others autonomy and ownership to make an impact. Nevertheless, in certain scenarios such as a time crunch, giving out specific instructions can also help them grow.
Only Use Code to Optimize When You Need to
Hardware is cheaper than your time.
During an interview with Pragmatic Engineer, Max Kanat-Alexander concluded that optimizing for human developer time is almost always the only worthwhile investment. His work has impacted tens of thousands of developers at Google by simply reducing the duration of automated testing. However, he mentioned that the optimization only impacts machine time instead of human time. This means losing money based on his actual research number is still possible.
Code Optimization follows the 80/20 rule. We can optimize 80% of the system. However, once it reaches 80%, we see diminishing value in return for more time spent. Usually, optimizing 80% can be done through increasing hardware resources rather than software.
Don’t try to reinvent the wheel by creating custom code. This also includes the automation script that you write to automate your task.
Many engineers like optimizing their codebase to run faster and more efficiently for no reason. However, optimized code comes with the cost of maintainability (graph for optimization and maintainability graph). For instance, you can optimize latency by using binary operations for all your functions. However, if your application doesn’t need such an optimization, you could spend expensive development time by making your codebase harder to read.
As a rule of thumb, if you encounter some performance issue, the best approach is to throw cheap, faster hardware at the problem. If that meets your performance goals, stop. If not, try to benchmark your code and optimize it further.
Reduce The Frequency of Context Switching
You want to do as much deep work as possible.
This includes reducing the number of meetings you attend if possible. Block out time on your calendar as an intentional focus time. Set up office hours instead of ad-hoc meetings.
Write down everything you need to keep track of, to save your brain room to do more. If we’re constantly keeping track of things, it will be hard to free up some memory space to do deep work.
The cost of switching from one task to another is real. With highly technical tasks, you need to load a large amount of context in your head before making any progress. This cost is pure overhead every time you switch, and you want to repeat that as seldom as possible.
Takeaway
The most expensive and precious resource at a company is human resources. Software engineers should protect their time to work smarter, not just harder and for longer.
The first step to protect your time is to put more automation into your daily workflow. I see many high-performing software engineers automate most of their repeatable work tasks, so they can focus their energy on doing deep work. To do meaningful deep work, we need to reduce the frequency of context switching.
The key to saving time is to pick the most important task and delegate the rest. A software engineer should be able to delegate effectively by aligning shared goals with others and focus on the what and why, rather than the how. Lastly, try to fix performance problems first by throwing faster hardware at it. Optimization should require a valid reason, or else you will be wasting expensive development time with very little impact.
What are some ways that you can optimize your time and productivity as a software engineer?
Comment them down below!