🧩 Why You Struggle to Finish Coding Projects (And How Break The Cycle)
Tags: productivity, beginners, codenewbie, webdev
Published: 2023-05-18 13:34:36

## Strategies to break the cycle of unfinished projects and tasks in programming.

---
There’s a reason I don’t have a public GitHub repository, and it’s quite embarrassing for me.

The main reason is because it’s full of unfinished projects.

Little bits of code and tasks I started but never finished.

Now this is mostly because most of them were things I did whilst I was learning to code and experimenting with version control, and therefore once I tried something (and got stuck or overwhelmed), I’d quickly move on to try something else.

I know shouldn’t be embarrassed as it’s a very common thing, but now I look back through those projects and wonder, what would have happened if I finished them? 🤔

If you’re a newbie and you’re anything like how I was in the beginning, you may feel like you're embarking on a thrilling coding adventure, diving into a vast sea of lines and syntax, eagerly tackling exciting projects and challenges. Yay!

But amid this exhilarating journey, you keep coming face to face with a lurking shadow, a persistent obstacle that hinders your progress: **unfinished tasks**.

They emerge as incomplete projects, fragments of code, and stubborn bugs that seem to haunt your every step, casting doubt on how to overcome them and propel yourself forward.

When it comes to coding education, unfinished tasks are more than just a nuisance. They have a significant impact on your learning journey and overall motivation.

It wasn’t until I became a more experienced developer that I realised completing unfinished tasks whilst learning to code is crucial to grasp the bigger picture, refining your skills, and unlock your true potential.

> So why should we pay attention to these unfinished tasks?

Well, they have a way of lingering in the back of our minds, gnawing at our progress and confidence. They can leave us feeling stuck, questioning our abilities, and wondering if we're cut out for this coding journey. But here's the thing, addressing and resolving these tasks is a **game-changer**.

So not to worry! In this article, we're going to shine a light on the importance of addressing and resolving those unfinished tasks that seem to hold us back.

Let’s hop to it…

## 🔁 Being Stuck in A Never-Ending Loop

One common challenge we face with unfinished tasks is the feeling of being stuck in a never-ending loop.

These tasks can be overwhelming, especially when they involve complex projects or intricate problem-solving. Then we find ourselves grappling with a multitude of questions, uncertain about the right path forward.

Not only do unfinished tasks hinder our learning progress, but they also cast a shadow on our motivation.

> It’s like riding a bicycle with a rusty chain. As you pedal, the chain keeps slipping, disrupting your momentum and making it harder to reach your destination.

Similarly, unfinished tasks can derail our learning journey, draining our enthusiasm and making us [question our abilities](https://dev.to/evergrowingdev/youre-better-at-coding-than-you-think-you-are-1gd). They create a sense of unfulfillment, leaving us wondering if we have what it takes to succeed.

But here's the silver lining, by understanding these challenges and frustrations, we can regain control and find our way back to the coding swing of things. We can identify the specific roadblocks that hinder our progress and develop strategies to overcome them. Whether it's tackling a particularly tricky bug or feeling overwhelmed by a mountain of unfinished projects, recognising these challenges is the first step towards conquering them.

Here are some practical solutions:

## 🧱 Break Down Complex Tasks

Ever stared at a massive coding project, feeling overwhelmed and unsure where to start?

Like when you’re trying to build your first project on your own outside of a tutorial for example.

I know I have, but there's a practical strategy that can help you conquer even the most complex tasks - **breaking them down into manageable subtasks**.

I like to think of breaking down complex tasks like constructing a puzzle. When faced with a thousand tiny pieces scattered across the table, it's hard to imagine the whole picture. But when you sort them into groups, tackle one section at a time, and connect the pieces gradually, the big picture starts to take shape - it’s so cool!

Similarly, when confronted with a daunting coding task, break it down into smaller, bite-sized subtasks:

1. Analyse the problem
2. Identify the essential components
3. Then divide it into manageable chunks.

This approach not only makes the task more approachable but also empowers you to make tangible progress.

**So what does this achieve?**

By breaking down a complex task, you gain several benefits:

- Reduces the overwhelming feeling that can [paralyse your progress](https://dev.to/evergrowingdev/dealing-with-the-things-that-hold-you-back-when-learning-to-code-1lgn).
- Allows you to measure and celebrate your progress along the way.
- Helps you identify potential roadblocks and obstacles early on.
- Encourages a sense of structure and organisation.

Essentially, breaking things down allows you to create a roadmap, outlining the logical progression from one subtask to the next. This way, you have a clear plan of action, preventing you from feeling lost or overwhelmed.

## 📝 Prioritise and Structure Your Planning

Without prioritising and structured planning, we risk wandering aimlessly, losing track of what truly matters.

> It’s like walking into a grocery store with no shopping list or plan. Wandering around from aisle to aisle, grabbing random items along the way. Then, ending up with a cart full of mismatched groceries and forgetting the essentials you needed in the first place. Doh!

When you prioritise tasks you create a compass that guides your coding journey. It helps you navigate through the sea of unfinished tasks, ensuring that you allocate your time and energy where they are **most needed**.

**So, how do we prioritise effectively?**

Start by assessing the importance and urgency of each task. Is there a looming deadline? Does a particular task contribute significantly to your learning goals? Consider these factors and rank your tasks accordingly. This way, you can focus your efforts on high-priority items, ensuring that they receive the attention they deserve.

Once you've established your priorities, it's time to create a structured plan of action!

Break down your tasks into manageable chunks (as mentioned above), set milestones, and establish a **clear timeline**. This structured plan not only provides a sense of direction but also acts as a powerful motivator.

Remember, though, that plans are not set in stone, your coding journey may encounter unexpected twists and turns. Stay adaptable and be open to adjusting your plan as needed.

Life happens, bugs appear, and priorities may shift. Embrace the flexibility to adapt and iterate your plan accordingly.

To effectively organise and manage your unfinished tasks, consider leveraging tools that suit your style such as:

- A good old-fashioned to-do list
- A project management app (Like [Todoist](https://todoist.com/) or [Nifty](https://niftypm.com/))
- A digital Kanban board (Like [Notion](https://www.notion.so/) or [Trello](https://trello.com/))
- A diagramming or whiteboarding app ([Top Free tools](https://dev.to/evergrowingdev/5-top-free-diagramming-tools-for-software-development-a4a))

Find a system that works for you. These tools not only keep your tasks in order but also provide a visual representation of your progress, reminding you of how far you've come.

## 🧗 Embrace Iteration and Incremental Progress

When learning to code, it's easy to get caught up in the pursuit of instant perfection. We yearn for flawless code and polished projects, often overlooking the power of iteration and incremental progress. But here's the truth: every small step counts.

By embracing iteration, you give yourself permission to evolve and improve your work. Just like a painter adds brushstrokes to a canvas, you add lines of code, test, learn, and refine.

Each iteration brings you closer to your desired outcome. It's about taking that imperfect first draft, learning from it, and making it better with each subsequent iteration.

> Incremental progress is like climbing a staircase—one step at a time.

When faced with a daunting coding task, it's natural to feel overwhelmed. But remember, progress is not always about giant leaps forward. It's the accumulation of **small victories**. Break your task into manageable subtasks, conquer them one by one, and relish the progress you make. With each completed subtask, you're one step closer to the finish line.

**So how do you achieve this?**

Coding education can be a rollercoaster ride filled with challenges and setbacks. Bugs will test your patience, complex concepts may baffle you, and moments of self-doubt may creep in.

But here's the secret - **resilience is your superpower**.

Cultivating resilience means acknowledging that setbacks are part of the journey. It's about reframing failures as opportunities to learn and grow.

In the face of difficulties nurture your motivation by doing the following:

- Find what inspires you and keep it at the forefront of your mind.
- Surround yourself with a supportive community that lifts you up during tough times.
- Take breaks when needed, recharge your mind, and return with renewed fresh eyes.

Remember, even the most skilled coders encounter obstacles. What sets them apart is their unwavering determination to push through and persist - and get stuff finished!

## ⚖️ Balance Task Completion and Exploration

I like to travel _a lot_.

(Not that I’ve been able to travel much lately, but that’s a different story!)

Now I’m good at creating an itinerary, and I always have a plan of where I want to go on any given day, but one thing (problem) that happens quite often is actually getting to the planned destination. With so many new cities, breathtaking views, and fascinating cultures to explore, I always end up getting distracted along the journey.

And before I know it, the sun is setting and I haven't reached where I was supposed to be!

**Result**: That’s one day of travelling lost.

**Lesson**: Amidst the allure of exploration, you must also ensure that you reach your intended destinations.

The same can be applied when it comes to learning to code and finishing tasks. It's all about striking a harmonious balance between reaching your learning/coding goals and embracing the [joy of discovery](https://dev.to/evergrowingdev/side-effects-of-learning-how-to-code-2447) in your coding journey.

Completing unfinished tasks is like reaching your desired destination. It allows you to immerse yourself in the experience, deepen your understanding, and gain a sense of achievement.

However, the world of coding is vast and captivating, and as a coder, just like a traveller, it’s easy to venture off the beaten path. You crave the thrill of discovering new technologies, innovative approaches, and cutting-edge concepts. This exploration fuels your curiosity, sparks your creativity, and keeps you engaged in the ever-evolving world of coding.

**So, how do you find the right balance?**

It begins with setting clear objectives and mapping out your coding itinerary:

1. Identify the tasks that align with your learning goals and allocate dedicated time for their completion.
2. Create a roadmap that guides you towards reaching those milestones.
3. Allow yourself the freedom to explore without going off track.
4. Set aside moments for spontaneous coding adventures, where you can delve into intriguing concepts, experiment with new tools, and challenge yourself with innovative projects.

When it comes to finding the balance, remember that it's not about rigidly adhering to a set ratio of task completion versus exploration. It's about being mindful of your learning goals and ensuring that you're making progress while also nurturing your curiosity.

Furthermore, leverage the power of community and collaboration. Engage with fellow coders, join coding forums, or attend meetups or virtual events. These interactions not only expose you to new ideas but also offer insights into how others strike their own balance between task completion and exploration.

## Conclusion

To conclude, it's important to reflect on the significance of addressing and resolving unfinished tasks.

We've explored the challenges, strategies, and mindset needed to navigate this journey of learning. Remember, you're not alone in facing unfinished tasks—they are a natural part of the learning process.

By understanding the impact of unfinished tasks and implementing the strategies we've discussed, you can overcome the hurdles that stand in your way. Break down complex tasks, prioritise and plan effectively, embrace iteration and incremental progress, cultivate resilience and perseverance, and find the right balance between completion and exploration.

Don't let them weigh you down but use them as stepping stones towards your coding aspirations.

As you conquer unfinished tasks, you'll witness the transformation of your skills, your confidence, and your ability to create remarkable things.

If you've made it this far that's great, now go finish that task! 😉

From your fellow ever-growing dev,

Cherlock Code

---
💙 **If you liked this article...**

I publish a weekly newsletter to a community of ever-growing developers, seeking to improve programming skills and stay on a journey of continuous self-improvement. Focusing on tips for powering up your programming productivity 🚀.

Get more articles like this straight to your inbox.

[Let’s grow together 🌱](https://evergrowingdev.substack.com/)

And stay in touch on 🐦 [@evergrowingdev](https://twitter.com/intent/follow?screen_name=evergrowingdev)