Tackling a large project (this applies to anything including a book, a piece of software, or a movie for example) can be daunting. Suddenly it is not a sprint to the end of a task but, rather, an endurance race that requires regularly renewed dedication: something school and early life do not prepare you for.

These are my solutions to tackle large projects (you will find some overlap with my guide to doing the things you love well and my guide to writing).

The very first thing you learn when studying software engineering is that the way to solve a complex problem is to cut it into several slightly easier sub-problems. If you do it enough times, you will end up with a problem small enough to be easy to solve.

This applies to most projects, you can usually divide them into a list of smaller, more manageable pieces that can themselves be cut until you reach something almost trivial. It might take a lot of time to do all tasks but you know that they will all be, individually simple to do.

Often the hardest part is the very first one. Starting to work on the project.

The solution is to do as many small things as you can to erode the difficulty (this is a direct application to the idea of cutting a problem into smaller pieces). That could be making sure that all the things you will need are on hand and ready or maybe making a detailed plan of the things you will be doing instead of doing them straight away.

One unexpected upside is that solving an easy problem will often put you in the mood to start tackling harder problems. It will put you in the right state of mind to tackle the rest of the task.

Large projects are endurance runs. Trying to work long hours to finish early does not scale to them, you will just end up tiring yourself before even reaching the midpoint.

Instead, I found it very productive to try and do one thing a day or half-day. Every day, I make a list of the thing I want to do the next day, and the next day I do it.

Having only one thing to do can seem underwhelming and too little but that is the point. It lowers the barrier to getting to work: if it is that little then you can surely start working on it now and be done for the day.

However, regular productive work pays huge dividends. By the end of even one week, you end up having done a significant amount of work.

But what if you do end your day very early? Well, you can leisurely take steps to make the next day’s work even easier.

Sometimes you want to do one thing during the day but, as the end of the day draws near, you have done nothing. Maybe you had no willpower left and kept procrastinating or maybe the problem was just too hard to tackle today.

Either way, you are not making progress and you start feeling guilty as the end of the day approaches. That pushes you to do nothing: neither work on the project nor dare do something else because you should be working on that project.

The solution is to accept that today you will not work on it, let the task slip to tomorrow, and get a solid night of sleep or entertainment.

This is an endurance race, drawing from your deepest willpower reserves or doing a long night will be detrimental to you in the long run. Your priority is to stay fresh and focused.

One trick that works surprisingly well on my brain is to first work on the appearance of the final and make it look as good as I can. It might be working on the formatting of a book such that I can export my terrible draft into a professionally looking pdf document. Or having a very nice interface to still inexisting functionalities.

This helps me see the project as adding all the missing pieces such that this beautiful thing can see the world rather than a long tenuous task with no end in sight.

One acceptable finished project is better than one perfect never finished project.

As a project grows larger, the number of potential imperfections are additions that could make it better grow exponentially. This is a delicate balance: you want your project to be good but you also want to finish it in a finite time (and maybe earlier than that if you have a deadline or further projects).

My recommendation is to do as well as you can within the scope of the project but do not let the scope of the project grow out of bounds as you progress. Thus, you can work on polishing one thing rather than have to deal with an ever-growing task. If you see interesting developments that would get significantly out of scope, take note of them. You can always make them your next project once this one is done

Doing something perfect is, understandably, very hard.

You cannot try and do something perfect within your first trial. It might work, sometimes, for smaller projects, but those are strokes of luck, not the normal state of things.

Perfect results are born from iteration. Doing something that is not good but exists then iterating on it to try and improve it incrementally until it is acceptable then good then, maybe, even better.

Working deeply on something can make it hard to see its flaws and fix them but, you are lucky enough to work on a larger project! You can leave something as it is once you start having trouble improving it, work on something else for an extended period then come back to it with fresh eyes.

The opposite of wanting something to be perfect is following the easy path: knowing that some things could be done to make your project objectively better but keeping with the current version because it is “good enough”.

The main solution to fight the easy path is to have other people take a look at your work and give you constructive feedback. As they do not have to work to implement the modifications they are suggesting, they will be naturally immune to the easy path. You might still try and resist tooth and nails but, as soon as two independent observers have pointed out that a modification seems needed, there is no defending your choice, you are in the minority.

Even if you are not working with a team, other people are a tremendous help.

They can act as motivation, there is no shame in working on a project to show it to other people. As long as you use the anticipatory ego boost as fuel for your motivation rather than an actual craving for external validation.

They can help you solve your problem. Each problem is, for someone somewhere, very easy to solve. Finding that person can sometimes be the fastest way to solve the problem.

They can act as editors and proofreaders: providing constructive feedback on your work and letting you see the shortcomings and perspectives that escaped you.