What makes a good personal programming side project?

I love side projects. Just listen to my sponsor message where I’ve been saying many times now that you need to start programming. You absolutely need to form a simple plan, start working on it, and adapt as you make progress and learn.

But how do you get started? For many of us, a big stumbling block is the perceived need to come up with a good idea. How do you know ahead of time if your idea will be good and worthwhile? Let me give you a simple answer to this problem. You won’t know if your idea is good before you get started. Don’t worry about it. Get something working. It doesn’t have to look good and by working, I don’t even mean it has to be running software. It just needs to be far enough along that you can show it to other people and start getting feedback. This could be as simple as some sketches at first.

If you get nothing else out of this episode, remember to just get started.

The episode goes on to explain the following four specific suggestions for selecting a good personal programming side project:

  1. Your project should be interesting to you. You’ll be spending a lot of time with your project. So make it something you’ll enjoy.
  2. While something interesting will get you going, it’s not always enough to keep you going. To help with this, the second suggestion is to find something that you need.
  3. The next suggestion is to avoid conflicts with your work.
  4. And find a group you can join and work on a project together. The social interaction not only will help you learn better but will help keep you motivated.

Listen to the full QA episode or read further for the full transcript below.

Transcript

Thank you for your review and comments. If you’d like me to read your review, well, the first step is you have to leave a review. The thing I liked about this review was the reference to the episode from 2016-April-08 where I discussed learning how to program if I’m stupid. I’ll just say that was one of my more emotional episodes.

Okay on to the question this week. I love side projects. Just listen to my sponsor message where I’ve been saying many times now that you need to start programming. Don’t wait for somebody to assign you to work on a software project. If you do, you’ll still be waiting in the same spot as you are now this time next year. And the year after that. Until eventually, you just give up.

You absolutely need to form a simple plan, start working on it, and adapt as you make progress and learn. Keep a record of your progress through source code control. I recommend Git and you can create free open source Git repositories on GitHub.

But how do you get started? For many of us, a big stumbling block is the perceived need to come up with a good idea. How do you know ahead of time if your idea will be good and worthwhile? The moment we come up with an idea, there’s a little voice in our minds that start critiquing the idea and pointing out all the reasons why it’s bad.

Let me give you a simple answer to this problem. You won’t know if your idea is good before you get started. Don’t worry about it. And you know the best way to defeat that destructive voice? Data. Make a deal with yourself to just get started and put the criticism on hold for a short while. Get something working. It doesn’t have to look good and by working, I don’t even mean it has to be running software. It just needs to be far enough along that you can show it to other people and start getting feedback. This could be as simple as some sketches at first.

But they’ll steal my idea! No. They won’t. At this point, you don’t even know if your idea is good or not. But you’ve done something already that most people never do. You started taking action. That’s the key.

If you get nothing else out of this episode, remember to just get started. But is that it? Is that all I have to say about selecting a side project? Just a bunch of psychological support and encouragement? No. But you’ll have to wait until after this message from our sponsor for four specific suggestions to help you choose a good personal programming project.

( Message from Sponsor )

The first one is something that everybody will tell you. That doesn’t mean you can ignore it. There’s a lot of truth that your project should be interesting to you. You’ll be spending a lot of time with your project. So make it something you’ll enjoy. Match your project with one of your hobbies.

◦ If you like running, then consider a project to rate each run on a scale from 1 to 5 for a few different qualities. Record these and learn how to present the data in a graph.
◦ If you like robotics, then are you in luck! Software and robotics go together better than salt in the sea. Write some software to control a robot right from your computer through a bluetooth connection.
◦ If you like watching movies, then consider building a utility that you can run at the same time you watch a movie on your computer that let’s you push a key to take a still image from the movie along with a timestamp. this will let you easily remember your favorite scenes.

Are these good ideas? I don’t know. It doesn’t matter. Just get started and adapt the idea as you learn. The first criteria is that you’re interested.

While something interesting will get you going, it’s not always enough to keep you going. You might find that you stop working on your project after a few weeks or maybe even sooner. To help with this, the second suggestion is to find something that you need.

If you constantly do something that could be made easier or faster or more reliable with some software, then you’ll be more inclined to finish your project. This could even be something unrelated to your everyday needs and could be a one time event. Let’s say you want to apply for a software development position within your company. Having a completed project that you can show and explain is a good way to get noticed and taken seriously. This is a great need.

Another example of a great need is when you want to learn something specific. Some new technology or technique that you want to investigate can give your project a specific goal to achieve.

Related to that suggestion, the next suggestion number three, is to avoid conflicts with your work. If you work for a bank during your day job, then writing a financial application is a good idea only if you want to present it to your employer as a prototype idea. All I can say here is to be prepared for rejection. Most companies even the ones willing to consider such ideas usually have guidelines and evaluations to go through and your project while it might get you some mentions, faces a steep challenge of being accepted as an actual company project. Since it’s so related to your company, that’s about all it’ll be good for. If you want something that you can call your own and show off to anybody inside or outside your company, then select something unrelated to your company. Everybody will be happier when you avoid conflicts of interest.

And the last suggestion I’ll make is to find a group you can join and work on a project together. The social interaction not only will help you learn better but will help keep you motivated. If this is your first personal programming project, then consider helping out with an existing project that somebody else has already started. Not only will the other person be grateful for the help, but together you’ll both be more energized to complete the project. As another suggestion if you’re just getting started, find a group of people, or at least one other person, that you know and can meet with in person. There are lots of open-source projects that you can contribute to and will be glad for the extra help. But you might want to hold off on this if you don’t know the other people until you have a bit more experience.