Paul Underwood
PaulundSoftware Engineer

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

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.

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.