Following Through
By: Kate Christensen
Tags: Data Science, Development, Technology, Computer Science, Software Development

Following Through

We’ve all got half-finished projects in our Github, here’s how to make sure your next project doesn’t become one of them

Photo by Niyas Khan on Unsplash

In my last two posts (which you can access here and here) I talked about some of the steps I took to execute a project.

In the first, I discussed how to “chase down” a project idea. Particularly I emphasized that project ideas don’t just come to you fully formed all at once. Or at least, that happening is extremely rare and shouldn’t be relied upon. There are a few routes, such as focusing on skills you want to acquire or domains you want to work in, that can help you zoom in on what you want. Also, in my case, just thinking about a tool you wish existed.

In my second post, I talked about the first steps to take to make that project a reality. In essence, you need a general direction and concrete steps to take, while at the same time being flexible in the event something goes wrong. Starting projects is a balancing act, you have to have direction but be flexible, you should research but also dive into coding as soon as you can.

Now, while each of those steps are difficult in themselves, I would argue this last step can be the most difficult of all: completing the project.

The beginning of a new project is always exciting. You’ve got these new ideas, either the final product feels straightforward, or the initial steps feel pretty straightforward. All you need to do is figure out how to do these three things and then you’ll have a shiny new project. Then you start working.

Get Creative

I liked to joke that for every actual step I took, I had five more issues I had to solve. This is not a unique experience. In fact, I’d venture to say anyone that’s ever done any kind of creative project has this experience to some extent. The fact is, maybe you’ve looked at some tutorials, but, if your project is any good, no one is giving you exact directions on what to do. This means you might go in one direction, but then realize you actually cannot go down that path because something takes too much processing power, or it’s just not feasible. Again, this is where that flexibility I talked about in my last post comes into play. You cannot complete a project with the mindset that there is only one possible way to do something and that you must complete something by executing these specific steps in this specific order. Solving problems requires creativity, not rigidity. Of course, being able to solve problems is a valuable skill unto itself, but it’s particularly vital to learn and get comfortable with problem solving while completing projects. The reason it’s so vital is that the more you get stuck on a problem, the higher the probability you’ll never actually complete that project. However, this creativity and imagination can be a double edged sword, which leads me to my next point

Eyes on the Prize

You start working on one step, then you think, “oh but wouldn’t it be cool if I enhanced this feature in all these ways too?” Then you spend even more time on this side quest, which then leads to another side quest, and then you realize you’ve spent a lot of time on things that you might have to completely scrap depending on the rest of the project. Or maybe, it’s not even that, but it’s, “well I got this thing to work this one way, but I’m sure I can find a better way to do it.” Again, you spend a lot of time obsessing over one thing, then realize later on you might have to completely rework stuff and scrap most of your work. If you end up doing this a lot, you’re going to get demoralized and that project is just going to become another abandoned repo. Additionally, it’s just not a good use of your time. This is why it’s important to keep your eyes on the prize. The first thing you want is something that works. Then you can make it something that looks good and is efficient. As much as it’s good to be a tenacious problem solver, it’s also good to be the person who knows when to move on and come back later. Even if something isn’t perfect, it’s ok! Chances are, by the time you come back to it, you’ll have enough experience to fix it or might not even need that specific feature or function. Remember, a good project is a done project. All of this said, it can be hard to stay motivated to solve these problems and move forward. That’s why I would argue this last point can be the most valuable

Collaborate

It can be hard to stay motivated to follow through. When you get stuck in the weeds with ten different bugs, it’s easy to just give up. By now, you’ve probably come up with a better project idea that’s all shiny and new. When you’re working alone, it’s incredibly easy to abandon ship. However, it’s much more difficult to do so when you team up with another person. While your collaborator (or collaborators!) can certainly be in the same field or have similar skills, I would argue it’s better to work with someone with completely different skills. In my case, my partner is a software engineer. While I knew how to put together the code that takes in a pattern and spits out a search url, I didn’t know how to build a website where someone could actually use that. She, on the other hand, knows how to build web apps, and make them so anyone can use them. In this way, we already have a clear division of labor, since it’s just divided by our complementary skill sets. Also working with someone provides you with accountability. It’s harder to abandon a project because you have to explain to someone, or multiple people, why you’ve decided you don’t want to do this project anymore. Even if you have the most understanding, chillest project collaborator, taking that step can be a huge deterrent from actually quitting.

These were three major factors that helped me take a project idea of creating a program to generate similar knitting patterns and turn it into a final product, which you can look at down below! I’m sure there are plenty of other tools people have used, and there’s probably plenty I’ll learn too.