How to deal with too many tasks efficiently

pile of files

Have you ever felt under pressure, like there is no end to the tasks, they keep piling up and you don’t seem to find the light ? Know you are not alone! I have made a new year resolution to become more efficient in my day-to-day tasks. Here is what I could gather so far.

There is always going to be work to do

The first thing I considered was to the workload, do less. I’m sorry to tell you, this will not happen. You are needed (and paid) to do a job, if you don’t have enough work to keep you occupied, then you are not needed as much as you think you are. Now, let’s get to some feasible solutions.

Have a plan

Do not underestimate the power of a well-thought-of plan. Trust me, it pays off in the end. When things are hard to do, then they should take time to plan. Think it through, don’t be afraid to take the time and build a schedule. Think about what you’re going to need, who does your work depend on? Are there any risks that need to be accounted for?

The Pareto principle

There is an observation called the Pareto principle, you probably heard of it, it’s the 80/20 rule. If you can’t be bothered to read the article, the most important take-away is that, on many occasions, 80% of the results come from 20% of the work. This sounds like a good place to start looking into improving performance. Check on your plan, see which of your tasks seem like they could impact your project the most? What are the tasks your customers really care about? And then focus on those. Your time is precious, you should spend it on what matters. If you have the option, a good idea is to delegate the less important tasks to someone else.

There is also a Peter‘s principle, but we’re not talking about that today.

Don’t multitask

You might think you are good at multitasking, statistically speaking you’re not.  You might think you are, but you’re probably not. Try to reduce multitasking as much as possible, take one task at a time. Use your schedule to your advantage. Reserve blocks of time to focus on a single task. Now, the trick to this is to actually focus on the task and don’t get distracted. This means no facebook, no reddit, no emails, no instant messaging, and especially, no phone notifications. Unless something is burning (or really urgent) you stay focused on your task. An important note here is: don’t forget about breaks. You can’t stay focused for extended periods of time. Take a break, walk around, make a cup of tea (or coffee), relax for a bit before getting back to work.

Parkinson’s law

Time for another observation, Parkinson’s law says that work will expand to fill all allocated time. Parkinson’s law is timeboxing. To keep things short, in timeboxing, you put aside a block of time to focus on a particular task. When that block of time is finished, you take a break, unwind for a bit and reassess your progress. I have found that the following kinds of timeboxes work quite well:

  • Hard timeboxes: When the time is done, you are done with the task, whatever the state is. This works quite well for tasks that are detail focused. When you want to improve something to perfection, you could spend all the time in the world and you will not be satisfied. Apply a hard timebox around that kind of work, and whatever you end up with at the end of the time is good enough. Now, as always, common sense must prevail: If by the end of the timebox, you end up with something terrible, then you obviously have to spend more time on the task.
  • Soft timeboxes: When the time is done, take a break, reassess the task, think about what needs to be done and when the break is over, continue the task.

Another use for timeboxing, is grouping alike tasks together. You need to answer emails, do them all at once. You need to fill out paperwork, do it all at once. Code reviews, you guessed it, do them all at once.

One final thought: I found that using different lengths for timeboxes work really well. For me at least these are the timeboxes I use: 25 mins for answering emails, project planning and other management tasks, 40 mins for code reviews and 60 mins for actually writing code.

Do you have any other tips for a more efficient work schedule ?

Scheduling – Come one step closer to full productivity

Productivity plan

 

The unicorn of office days: Having a productive day, each day, every day. It’s an admirable goal. It’s a goal we all strive to achieve. A step in that direction is having an efficient schedule. I’m here to help. Let get cracking!

Get the data

Step one in solving any problem is defining it. Try to keep a list of the tasks that need to be done within a given period. I usually find a week to work best. Use whatever you want to get a list of tasks. Forward warning, this might take some time and some trial and error to get used to. Some apps that I find useful when collecting tasks are:

  • Todoist – I use this to keep track of small tasks, repetitive tasks and reminders. I also use this as an idea bank to keep track of ideas before I get back to them and turn them into something more useful.
  • Trello – I use this to keep track of bigger projects. I find Trello boars offer a nice way to keep on top of multiple ongoing projects. If you’re anything like me, you have your work and then a couple of ongoing personal projects you need to deal with.

Disclaimer: There are the tools I’m using, and they seem to work fine for me. However, I must warn you, finding the right tool is a process. You will most likely need to try a couple of alternatives to find the one that works best for you.

A couple of alternatives might be: google tasks, google keep, your favorite calendar app.

Arrange the data

Do not underestimate the power of a well thought schedule. In computer science there is a concept called context switching. It’s the list of operations that the CPU needs to do to move from one task to another. They’re not processing the task, they’re the overhead needed to move from one task to another. Doing that to often can be a problem. You can spend more time switching between tasks than doing actual work. Our brains are not that different. To switch between tasks you need a long time. More so, you have to spend a lot of mental effort to do so. Why not try to minimize that?! Group similar tasks together! You have  a bunch of meetings you need to schedule ? Bundle them all together, so they don’t interrupt your other work! Need to do some paperwork for the week? Do all the paperwork in one day. It will be a boring day probably, but once you get that out of the way, you can focus on your other tasks. More so, you have the bonus that you don’t have to think about paperwork.

Remember, it’s your schedule and it should be custom tailored to you. You know yourself best. I find that certain times of the day work best for certain types of task. For me, morning works best for intense, focused work, so I try to reserve big blocks of time to code early. In the afternoon, I don’t seem to have that much energy left, so I try to do my more mundane tasks: reports, meetings, planning etc. Try out different things to find out what works best for you!

Give yourself some wiggle room

Things happen. More often than not, those things cause delays in your schedule. This is normal. Unknowns cause delays. Keep this in mind when designing your schedule. Meetings run late. Tasks take longer than expected. So many things can go wrong. Part of the purpose of the schedule is to isolate those issues so that they don’t affect other tasks. Some takeaway here could be: don’t put meetings that can run late just before meetings that cannot start late. Find out what the important tasks are and deal with them early (so that you have a bit of time for the tasks to run late)

Tinker with the schedule

A schedule is not a one-time job. It’s living creature, it grows, it evolves. It’s aliveee! Every one in a  while, review your schedule. Who knows, maybe there is something you can improve. Try out some different ways of scheduling, see which one works best for you. It’s your little world. You can do anything with it.

Do you have any more tips on how to build a nice schedule ?

Things to do when you’re not writing code

programmer at work

If you’re reading this, I assume most of your hours are spent staring at an IDE, coding away. What about the times when you’re not building shiny new features. If you’re lucky enough, then you’re going to have a couple of hours of free time every now and then. What should you use that time for ? So many possibilities. If you want to become a better programmer, then these few hours can be incredibly valuable. I’m here to help you get the most out of that time.

Tinker with your process

This assumes you have a process you follow through your day. If you don’t have a process, build one. A good starting point is the organization process It doesn’t have to be perfect. It’s not going to be perfect. That’s OK. A good process should be a checklist you go through for every piece of work.

What makes a process useful is that it can be improved. So start with something, anything. Now think about your process. Did you miss anything lately? Did you break anything? Does your work take longer than expected ? Did you find yourself waiting for others for extended periods of time? These are all questions you should ask yourself, and improve your process to prevent that! Sticking to a process is hard work, however, it’s worth it!

Read around

Reading is an important part of your work. You should not underestimate the value of information. The world of programming is in constant shift. New frameworks, patterns and technologies emerge every day. If you want to be a good programmer, you should keep yourself up to date with the latest trends. The best way to do that is to read around.

You should, at least, read about the frameworks you’re using. Become a guru on the frameworks you’re using. Look at the documentation. How is everyone else using that framework ? Is there anything you can learn from them ? Reading the source code can be incredibly valuable at times. Take your pick, but get to work!

Think about dependencies

What is the next thing you’re going to work on and why ? More than once, I have started on a ticket only to find out there are hidden dependencies required, assets that I needed (which take forever to track down and acquire).  Think about the next piece of work and the following ones. Is there anything you should do now to save yourself some time in the future ? There are lots of little things that have the potential of costing you lots of time later down the road. The earlier you think about them, the easier your life is going to be. And who doesn’t like an easy life?!

Think about potential issues

The hallmark of a good programmer is the ability to think about the bigger picture, not just what you’re working on at the moment. How does what you’re working on now fit into the whole project? Is the work you’re doing now going to cause any integration issues. I’ll give you a spoiler: Most of the problems with software can be found at the joints. What external services does your ticket (and project for that matter) depend on ? What happens if that service is down, or slow, or wrong or any of the myriad of possible ways of things to go wrong with a service. Catch them early and not only you’ll save yourself a headache (and possibly an embarrassment when the project goes live) and you will prove yourself as an awesome programmer. Two birds with one stone.

In conclusion, if you find yourself with some time on your hands, don’t waste it, use that time to improve yourself, like a knight sharpening its sword before a battle (I always wanted to say that!). Thse thins are valuable in the long run. Instead of stealing some moments whenever you have them, try to make them. Take a break from writing code and improve yourself. You’re going to be better at it! Your project is going to benefit! Everybody wins!

What do you usually do when you have a bit of free time on your hands ?

L.E. As with everything in life, common sense should prevail. This does not mean you should drop important work when important work needs to be done, nor does it mean you should completely abandon your other hobbies and focus on programming 24/7. If you need a break from work, you should take a break!

How to meet your deadlines – A quick guide to ensure you are never late

Oh, the dreaded deadline! You have a week’s worth of work to do by tomorrow. If that has ever happened to you, then you should know that feeling well. In the following lines I will try to give a few tips that should alleviate that feeling. Let’s begin!

Don’t underestimate the work

This is something that needs to be done in the planning stage. Estimating the amount of time a piece of work is going to take is as much an art as it is a science. It takes a great deal of experience to do it right. In most cases things are going to take longer than expected. A process that works really well for me is breaking down the work into the smallest piece of self-contained work (call them tasks, tickets, whatever you want, the concept remains the same). It is much easier accurately estimate a small piece of work, than a big one. When you have a list of small and self-contained tasks you can begin to add estimate them. At the end, add the values together and you have a deadline.

Give yourself some slack!

Estimating a task involves accounting for the unexpected. Unexpected events have an unbalanced effect on the deadlines. This is a fancy way of saying that bad things happen much more often than good things. Things will break, and they will need to be fixed, you will have to wait for other teams to be done with their work, specs and assets will be late, computers do break from time to time and that will certainly affect your deadlines. The more dependencies you have on your task, the more slack you need. This may sound extreme, but I usually add a 30% slack on the dev time and even that proves to be insufficient from time to time.

Be honest with the stakeholders

Do not commit to more work than you are able to do! Remember, in the long run, doing things right is much faster than doing things fast. If you need to rush through work, you will unavoidably make mistakes that tend to add up over time and slow down future development time. You have probably heard this before, but I’m going to say it anyway: Do quality work from the start, even if it takes slightly longer now, it will save you tons of time later down the road.

Track progress as you go along

It is much easier to make corrections to your course as you are traveling towards your destination. How does this translates into a helpful tip? Glad you’ve asked! To sum up: It’s easier to correct for small delays than large ones. That sounds reasonable enough, right? The trick here is to spot delays as early as possible. If you have a timeline for your project, you should be able to say at any moment if you are on track. When the work slips, it’s going to be easier to account for a small delay. By doing this regularly, it should never come as a surprise to have to do a month worth of work withing a week.

That’s all we have for today! Hope you have enjoyed it! See you next week!

Keep meetings short

We have all suffered through meetings. You know that meeting that seems to just go on and on and on without an end in sight. I you hate them as much as me, then this article might just be for you. In the following lines I will share some tips and tricks that helped me organize and partake in pleasant, useful meetings.

Meetings are a necessity

As the size of the team grows and there are multiple parties involved in bringing a project to an end, the overhead associated with coordinating these multiple armies of people become significant. Meetings are just one of the tools that helps to keep people focused and on the right track. Meetings are also a distraction. They take people away from their daily work, it breaks rhythm and whoever took part in the meeting needs a bit of time to get back in the zone, and be a productive little bee again. Given the high cost that meetings have, it’s worth doing them right so you can get the most value out of them.

Establish an agenda and stay on it!

Meetings should have a purpose! They should have a clear and precise purpose. If you are just sharing information, as in there is nothing to decide, you just want to let your team know something, that’s not a meeting, that’s a presentation and it’s a whole different story on what makes presentations useful. Meetings should be about deciding things. They are the much nicer alternative to huge email chain.

Getting back to the point. Before you start a meeting, you should know what needs to be decided. This way, if the discussion goes of track you can quickly spot it and steer it back on point and shave some minutes off there.

Let participants know what the agenda is.

The meeting will go a lot smoother if participants know what they are getting themselves into. They can do a bit of research beforehand, in the safety of their own desks. The more prepared participants are, the less time they need to learn what they need to know to reach a decision, the faster the meeting ends. Simple, right ? If you are a participant to meeting, feel free to ask what the meeting is about and get all the relevant information you need to prepare.

Get the right people in the room

This one is more for the person organizing the meeting. Everyone in the room should be there with a purpose: they either have the knowledge to answer a question, or the power to decide on a course of action. Everyone else can be briefed via email after the meeting ends. Getting only the relevant people in the room saves a lot of the debate that arise from either explaining a decision to someone without sufficient knowledge on a particular subject, or dealing with opinions from people that ultimately have no saying in the project. Remember less (people) is more (useful meetings)!

Take things outside (of the meeting room)

I’m definitely not suggesting fighting when you don’t agree in meeting. Keep things civil, we are professionals after all! This bit is more about the kind of discussions that are still in the scope of the meeting, but are at a high level of detail, so that only a couple of people care about it. If most people are not getting anything from what is being discussed, then you don’t have the right people in the room and you are wasting their time. When people get into such an argument the right thing to do is to call time out and suggest they (and only they) continue this chat in private and let you all know how it went.

That’s it! Try to do that so you get to enjoy the meeting you take part of, and, on top of that, feel like you’re actually doing something useful with your time while you are at it. Cheers!