Paulund
2024-03-19 #development

Staying Productive As A Software Engineer

Prioritise Your Work

To help you prioritise your work, you can use the Eisenhower Matrix. This is a simple decision-making tool that helps you to categorise your tasks based on their urgency and importance.

This is a decision making process of putting tasks into one of four categories:

  • Important and urgent - Do these tasks immediately.
    • Has a deadline
    • Will have a negative impact if not done
    • Production bugs
    • Errors
    • Security risks.
  • Important but not urgent - Schedule when to do these tasks.
    • Has no clear deadline
    • Will have a positive impact if done
    • Fixing tech debt
    • Learning new skills
  • Not important but urgent - Delegate these tasks to someone else.
    • Tasks that need to get done but don't need to be done by you
    • Tasks that can be done by someone else
    • Answering Slack messages
    • Minor requests.
  • Not important and not urgent - Eliminate these tasks.
    • Tasks that don't need to be done
    • Tasks that don't have a deadline
    • Unnecessary tasks - meetings that could be email

Productivity Methods

Pomodoro Technique

The Pomodoro Technique is a time management method developed by Francesco Cirillo in the late 1980s. The technique uses a timer to break down work into intervals, traditionally 25 minutes in length, separated by short breaks. These intervals are named pomodoros, the plural in English of the Italian word pomodoro (tomato), after the tomato-shaped kitchen timer that Cirillo used as a university student.

  • Decide on the task to be done.
  • Set the pomodoro timer (traditionally to 25 minutes).
  • Work on the task.
  • Take a 5 minute break = 1 pomodoro.
  • Every 4 pomodoros take a longer break, such as 15-30 minutes.
  • Repeat

3-3-3 Method

  • Devote 3 hours of deep work on the most important task
  • Compete 3 urgent but smaller tasks
  • Do 3 smaller tasks, such as emails or chats

This method focuses on making sure that you get the most important job done first. Then you can focus on the smaller jobs that need to get then. Then you'll have time for the tasks that are not as important.

This is the opposite of many other productivity techniques which will talk about if you do the smaller tasks first then you'll have time for the bigger tasks. But I disagree with this, if you do the smaller tasks first then you'll never have time for the bigger tasks.

In my opinion, the 3-3-3 method is the best way to stay productive as a software engineer. I don't like using pomodoro technique as being "the zone" as a software engineer is so important if you take a break after 25 minutes you'll ruin this time.

2 Minute Rule

This is the practice of estimating how long a task will take and then doing it immediately if it takes less than 2 minutes. You don't need to add these to your to do list, just do them immediately. If the task takes longer than 2 minutes then add it to your to do list, from here you can delegate it or break up the task to 2 minute jobs.

As I software engineer I find this practice very hard to perform well and prefer to use the 3-3-3 method.

I feel the 2 minute rule is better suited to manager roles where you are dealing with a lot of small tasks that need to be done quickly.

Manage Your Time

When people come to manage their time as a developer you might of heard about the Pomodoro Technique. This is a time management method that uses a timer to break down work into intervals, traditionally 25 minutes in length, separated by short breaks.

But I disagree with this method as a software engineer. The reason is that it takes a lot of time to get into the flow of coding. It takes time to understand the problem, to understand the code, and to understand the solution. So if you are only coding for 25 minutes at a time, you will spend most of your time getting into the flow.

Getting into the flow as a developer is when you are in the zone. You are in a state of concentration or complete absorption with the activity at hand and the situation. It is a state in which people are so involved in an activity that nothing else seems to matter. This is when time goes back quickly and you can get your best work done.

Alternative to the Pomodoro Technique, I recommend the 90 Minute Focus Session by Tony Schwartz. This is where you work for 90 minutes straight without any distractions. You turn off your phone, you turn off your email, you turn off your Slack, and you focus on the task at hand. You do this for 90 minutes and then take a break. This is a great way to get into the flow and get your best work done.

Staying Focused

Like I said above I prefer the 90 minute focus session over the Pomodoro Technique. But if you are struggling to stay focused here are a few tips to help you.

  • Turn off your phone
    • Notifications on your phone are a distraction.
    • If it's important someone will call you.
  • Turn off your email
    • You won't get any prizes for instantly replying to email
    • You don't need to read every email as soon as it comes in.
    • If you can set up an autoresponder to let people know you will reply within 24 hours.
    • Do emails in batches, I do twice a day first thing in the morning and after lunch.
    • If you're worried about missing important emails, setup a filter to override the do not disturb, such as your manager's emails.
    • If it's important someone will call you.
  • Turn off your Messager
    • Slack is a distraction.
    • If it's important someone will call you!
  • Music
    • Music can help you get into the flow.
    • Find a spotify playlist that helps you focus. I prefer using chill out or lofi music.
    • Headphones help you get into the flow and block out distractions.
  • Office Environment
    • I find open plan offices hard to focus in, there are too people coming up to your desk to ask questions.
    • If you can work from home, do it. If you can't work from home, find a quiet place to work.
    • If you can't find a quiet place to work, use headphones to block out the noise.
    • Set the right temperature, if you're too hot or too cold you will be distracted.
  • Take Breaks
    • Take regular breaks to help you stay focused. Working for too long will burn you out.
    • Take a break every 90 minutes, go for a walk, get a drink, get some fresh air.
    • Drink coffee, it helps you stay focused.
  • Sleep
    • Get enough sleep, if you're tired you will be distracted.
    • Find out when you do your best work, in the morning or in the evening and plan around that.
    • If you're tired, take a nap. I find a 20 minute nap helps me stay focused.
  • Reduce Meetings
    • Meetings can break up your day and avoid you being able to get into the flow.
    • Where you can try to say no to meetings. As a developer you will be asked to go to a lot of meetings but most of the time you don't need to be there. If you say no, ask if you can get the meeting notes instead.
    • If you can't say no to meetings, try to schedule them at the start or end of the day.
  • Reduce Context Switching
    • Context switching is when you are working on one task and then you switch to another task. This is hard to do if you need to work on multiple projects at the same time. It's important to batch time on projects to avoid context switching.

Find The TIme That Works For You

We all have different times of the day when we are most productive. Some people are morning people and some people are night people. You need to find out when you are most productive and plan your day around that.

If you're more productive in the morning, then plan to do your most important work in the morning. If you're more productive in the evening, then plan to do your most important work in the evening. If you're better in the morning try to get up earlier and make sure you have the most uninterrupted time at this time of the day. If you're better in the evening then work later then you normally would.

Use AI Tools

A few developers are scared of AI tools such as CoPilot. But I think they are great tools to help you stay productive. AI will not replace developers...yet. But they can be used to help speed you up and you need to learn how to use them or you'll fall behind.

AI is a thing that is here to stay and it's only going to get better. So you need to learn how to use it to your advantage. The best developers will be the ones that know how to use AI tools to help them get their work done. Anyone who avoids using it will fall behind.

The AI tools I use to boost my productivity are:

The IDE I use is PHPStorm and I use Github Copilot plugin for this IDE, using th feature for code completion. I also use the chatbot functionality whenever I need to ask it questions. One of my favourite features of chatbot is the ability to clean up code. I work with a lot of legacy code bases and this is a great feature to take 5 year old code and modernise it to the latest standards.

I use ChatGTP whenever I want to understand a concept better for example I might ask it "What is a singleton?" and it will give me a good explanation of what a singleton is. I find this a great tool to help understand things better in a simple way. I find this can sometimes be better than going to Google and finding the answer.

The way I use AI might change over time but currently this is how I use it.