Are you struggling to juggle all your projects and keep up with clients’ deadlines? How do you evaluate whether a programming project is worth your time?
In programming, productivity and time management are some of the most important soft skills you can develop. In his book The Clean Coder, Robert C. Martin gives some valuable time-tested advice on how to make the best use of your time as a programmer.
Here are three programming productivity techniques you need if you are a programmer.
Time Management Tips for Programmers
According to Robert C. Martin, the author of The Clean Coder, time management is the fifth most important quality of professional programmers. There are three techniques professionals use for time management and programming productivity.
Technique #1: Attend Meetings Strategically
Meetings take up a lot of time and are expensive—they require renting a location and paying for the time of the attendees. Therefore, professionals strive to make the best use of meetings, which they do by avoiding the ones that waste their time and ensuring the valuable ones are efficiently run.
There are two strategies to avoid wasting time in meetings:
Strategy #1: Don’t Agree to Attend
You should only go to a meeting if it meets the following criteria:
- You’ll get information that’s important to your current project.
- The meeting is about an interesting but not urgent topic, and you have the time to attend.
- You can help someone else. (Keep in mind that your first loyalty should be to your own projects, so if attending a meeting would contribute to someone’s project but harm yours, don’t go).
- The meeting has an agenda, schedule, and goal.
If you need help determining if a meeting meets one of these criteria, or if a senior authority requests your presence, discuss your attendance with your team and manager. Your manager should be just as invested as you are in protecting your time.
Strategy #2: Don’t Let Meetings Become Time-Wasting
If you go to a meeting and it stops meeting the criteria partway through (for example, someone adds something irrelevant to you to the agenda), do one of the following:
- Politely ask to change the agenda or speed things up.
- Leave. If you stay, you’re unprofessionally wasting your time (and your employer’s money).
Running Meetings Efficiently
If a meeting does meet the criteria, you should attend it, and many of the valuable meetings you attend will be structured based on the Agile canon. (Shortform note: Agile is a collection of software development practices.)
There are three types of meetings that are part of Agile, and this is how they be should run efficiently:
1. Stand-up meetings. All participants must stand during the meeting, and everyone gets only 20 seconds to respond to each of the following questions:
- What did you work on yesterday?
- What are you going to work on today?
- What’s preventing you from doing what you’re going to do today?
2. Iteration planning meetings. The goal of these meetings is to choose which backlog tasks to include as part of the next iteration. The discussion of each task should only take five to 10 minutes and the total meeting time should be less than 5% of the time to complete the iteration. (If the iteration will take 40 hours, the meeting should take a maximum of two.) The following should already be determined before the meeting:
- Estimates for tasks
- The business value of tasks
- Ideally, acceptance tests for tasks
3. Iteration review. Hold these meetings at the end of every iteration. The goal is to talk about what went right and wrong (maximum of 20 minutes) and to demo the results of the iteration to stakeholders (maximum of 25 minutes).
If an argument breaks out during a meeting and it lasts more than five to 30 minutes, further discussion isn’t productive. You can settle the argument in two ways:
- Gather more data. Likely, the reason no one can win the argument is that neither person has convincing evidence. To gather evidence:
- Run an experiment
- Flip a coin to choose a path, start down it, and if it doesn’t work, try the other option (set a deadline on how long to follow the path)
- Vote. Give each arguer five minutes to make her case and then have all the meeting participants vote on whose course of action to take.
If you’re one of the arguers, avoid the following unprofessional behavior:
- Force of will, such as yelling
- Passive-aggression, such as agreeing to the other person’s point of view but refusing to participate in the solution
Technique #2: Use the Pomodoro Method
The second of Robert’s programming productivity techniques is to use the Pomodoro method. Pomodoro is a way of reserving chunks of time for uninterrupted (and therefore productive) work.
It works like this:
- Start a timer for 25 minutes. Focus on your work for 25 minutes and don’t let anyone interrupt you. When the timer goes off, stop working.
- Address any interruptions you ignored during your 25 minutes.
- Take a five-minute break.
- Do another 25 minutes of work.
- After four 25-minute sets, take a half-hour break.
Technique #3: Avoid Priority Inversion
The third technique is to avoid priority inversion, which is when you avoid unpleasant work (dull, frightening, or uncomfortable) by doing a lower-priority task instead (and often invent some justification).
Don’t let your emotions steer you—avoiding important tasks is unprofessional. Don’t engage in priority inversion.
Technique #4: Avoid and Abandon Dead Ends and Messes
The last technique is to abandon a course of action as soon as you realize it’s going nowhere and try something else. (No matter how much experience you have, you’ll inevitably find yourself working on a task that seemed like a good idea when you started it but turned out to be a mistake.)
There are two types of tasks to avoid and abandon:
1. Dead ends have no way forward.
2. Messes technically have a way forward, but the way will be slow and more effort than it’s worth. Messes are even more dangerous than dead ends because you’ll be tempted to continue on because you’ve already invested time. Every step you take forward will mire you deeper and make it harder to get out of the mess. Venturing into a mess is a form of priority inversion.
Example: How to Be a Professional
When Martin was working for Teradyne, he used the following time-management techniques to give his employer as much productivity as he could:
- He started work two and a half hours before everyone else so he could have some uninterrupted working time.
- He used a version of the Pomodoro technique to schedule his morning: He scheduled activity for three 15-minute blocks of time and left the fourth block open so he could push off any interruptions that came up during the first three blocks to the last block.
- He left the afternoon unscheduled because he knew problems would come up during the day that he’d have to address.
———End of Preview———
Like what you just read? Read the rest of the world's best book summary and analysis of Robert C. Martin's "The Clean Coder" at Shortform .
Here's what you'll find in our full The Clean Coder summary :
- Why many don't consider developers to be "professionals"
- Why continued professional development is so important
- How you can develop the six qualities and skills of a professional coder