How to Actually Complete Pet Projects
Amateurs finish projects when inspiration strikes; professionals finish them through discipline.
This post isn’t about technical excellence or engineering best practices (though if you are interested, check out the Enterprise Mobile Apps Development Principles and Project Miniclient series). Instead, let’s focus on processes — an equally important part of project success. I’ll walk you through a few common pitfalls that prevent you from completing your pet project.
Pitfall #1: No Backlog
You might think your pet project is small enough to manage in your head, but balancing planning and implementation without a system is inefficient. When coding, you’re in “implementation mode,” focused on details. When planning, you’re in “big-picture mode,” setting goals and priorities. Mixing these mindsets creates an illusion of progress but often leads to chaos.
What to do: create a backlog. Use GitHub Projects, a Notion table, or even an old-school paper notebook to list and organize your tasks.
Pitfall #2: Too Many Backlogs
A formal backlog in Jira or GitHub might not be your only backlog.
TODO comments in the code may shift your focus, and instead of working on a feature, you may find yourself doing a minor refactoring. Put what is needed to be done to the backlog and remove the comments.
Used paper notes to write down some ideas? Don’t forget to move them to the backlog and dismiss the notes.
Have sketches for new functionality in Figma? Create tickets in the backlog for them.
Having many backlogs lowers your trust in the real backlog, i.e. the list of tasks you committed to work on. You will create a procrastination window: “okay, that’s my backlog, but I guess I put something important in TODO comments yesterday. Or maybe in my notes? Or the text file on the desktop? Wait, is that a cat photo I saved?!”. Keep the single source of truth for your tasks, and you will never be distracted and always know what’s next.
What to do: maintain a single backlog as a source of truth for tasks and priorities.
Pitfall #3: Too Big Backlog
If you put every idea in the backlog, soon it may grow to a scary size. While it is important to revisit the backlog regularly (don’t be afraid to close tickets you don’t want to work on anymore. They will raise again if they are important), the best you can do is to learn to live with it. It’s okay that you will never build all features, it’s okay to have areas for improvements in the codebase, and it’s okay for the product to be imperfect. While you are making progress, you are doing good.
What to do: relax and enjoy the process.
Pitfall #4: Features Instead of Tasks
It may take weeks to get done a ticket like “Implement Search.” It’s not a task but rather a separate feature with tons of nuances that should be defined and implemented separately, like “Initial search page,” “Error page,” “A search page with results,” “Pagination,” “Filtering,” “Caching,” etc. Sometimes even this separation is not granular enough and you need to dive into more details.
What to do: keep tickets small. A regular ticket should take more than 20 minutes and less than 2 hours to implement.
Pitfall #5: “Inefficient” vs. “Impossible”
Perfectionism is a form of procrastination. Sometimes, you may feel stuck because you can’t build the “perfect” solution. Remember, good enough is often good enough. Do 80% of the work in 20% of the time.
Pro-tip: put the rest 20% into backlog as tech debt or future improvements, you may never need to implement it.
What to do: done is better than perfect. Simplify.
Pitfall #6: Laziness Masquerading as Efficiency
As engineering wisdom says, “Weeks of coding can save you hours of planning”.
Treat the backlog well. Put “definition of done” into every ticket you plan to work on. There must be no excuse like “the scope of work is clear from the title”. Reflecting on the scope of the ticket, draw a line where you stop working on the ticket and start working on another one. Without it, tickets will be seen as endless.
If you spend too much time on an unimportant task, you make it important. Without clear boundaries, tasks grow in scope and delay real progress.
What to do: define “done” for every ticket. Don’t start working on a task without knowing where it ends.
Pitfall #7: Unlimited Work in Progress
You were working on a task but then found that you needed to implement something else first. Or a new idea has bumped out, and you decide it has a higher priority. That leads to the state where you have many tasks in progress, and nothing done. You need to start delivering and stop starting. The easiest way to do that is to make tasks as small as something you may complete in less than 2 hours, and do not start working on a new task if you have something already in progress.
What to do: limit your work in progress to one task. Don’t work on anything else till the task is done.
Pitfall #8: Spontaneous Work
When working on a task, you may find a small improvement you can make in no time, so you decide to quickly get it done. That rarely goes well. In a few hours, you will find yourself fixing bugs in a half-done feature that seemed attractive when you were first thinking about it, but now, as you understand it better, it is rather a nice-to-have improvement. Instead, you could have spent time on what truly matters.
What to do: got an idea that takes more than 2 minutes to implement? Awesome! Put it into the backlog and get back to what you were doing.
Pitfall #9: All Work and No Play
We love coding. It is addictive. We can do that all day long without noticing how this behavior diminishes productivity. Want to stay productive for the whole day? Take breaks. Learn how to work in Pomodoros — 25 minutes of focused work, 5 minutes rest. A side effect for Pomodoro is that you’ll learn to intuitively “feel” your velocity. It is eye-opening to realize how much you can do in 25 minutes. Usually, it is far less than you thought. The good news is that now you can be realistic in your plans.
What to do: learn to work with Pomodoro.
Pet projects are a playground for creativity and growth, but without planning and discipline, they can become overwhelming and endless. By organizing your tasks, managing your focus, and embracing imperfection, you can bring your ideas to life. Remember: progress, not perfection, is the goal.
About the author
Oleksandr Leushchenko is a GDE in Flutter and Dart, and a seasoned mobile developer with more than a decade of experience in building cross-platform mobile applications. He is an Engineering Manager in a UK fintech company called Tide, where he works on an international financial services platform.
Russia started an unfair and cruel war against my country. If you found this article interesting or useful, please, donate to Ukraine’s Armed Forces. I can recommend my friends volunteers — the “Yellow Tape”, you can be 100% sure that the money will support our victory. Thanks in advance to everyone who participated.
Glory to Ukraine! 🇺🇦