So, you’ve asked around for advice on how to become a better developer; that’s great! You’ve also probably been told that personal projects are a great way to learn new technologies and add to your portfolio. Also great — but how do you get started on something that can feel ambiguous and too open-ended? And once you get started, how do you keep going long enough to finish?
These are all great questions! Here are some pieces of actionable advice from AthenaHacks organizers looking to help you out:
a) Know your why — and then write it down on a Post-It note and tape it to your laptop. Popular advice for people starting on an ambitious new project is “know your why and it’ll be easy!” And sometimes, it really is that simple. But other times, you’ll say to yourself, “Well, my ‘why’ is easy, I just want to get better at this thing,” and scroll to the next item on the advice list. So let’s make things concrete this time and put it writing somewhere where you’ll always see it. Examples might be “I want to be prepared to use this piece of software at my summer internship”, “I want to be able to contribute more code to my next group project for class”, “I want to have a specific experience to talk about in an interview”, etc. Besides, knowing that there is a future where you’re more prepared, knowledgeable, and enthusiastic about technology than you are today can be a big motivator!
b) Know your scope — and it might need to be smaller than you’re thinking right now. “A short-medium completion time is something between a weekend and two months” is an idea suggested by writer Filipe Silva in this Medium article , and it’s a concrete way to know if your project idea is manageable. Because the goal here is to start and finish your side project, make sure that what you decide to do can be finished in the foreseeable future.
Don’t forget that scope includes your current abilities as well as your time.
The above graph was created by Mihaly Csikszentmihalyi, the researcher who coined the concept of “flow”; it’s a state of activity between something being so easy that you’re bored or so hard that you’re stressed out. To make sure you have the motivation to keep tinkering, keep it interesting and accomplishable by challenging yourself to program small but novel pieces of software.
c) Know what work you’ve already put in up to this point — and be prepared to have a Google Doc handy for this one! In other words: document everything you do for the side project, for two reasons.
- When you first get started on a project, there’ll be a lot of little tasks, from reading documentation to watching video tutorials to just figuring out which resources or tech stacks you’ll want to use. This research phase is valuable but not tangible. To avoid looking back at your day and thinking “where did all my time go?!”, document where that time went. You’ll feel like you made a lot of progress today, because you did.
- When you’ve gotten to the middle of the project, a lot can go wrong that throws off your progress. You might forget why you chose to use a certain API or which version of Python you’re running or why you decided to go for a NoSQL database over SQL. Or a package you imported is deprecated and everything crashes. Is this stressful, and are you going to spend time hunting for the answers to these issues instead of working on a fun new feature? Probably, yes. But if you have a record of the decisions you made weeks ago and which resources helped you in the past, then you’ll get unstuck a lot faster. No more searching for that one helpful Stack Overflow post from four years ago!
So, are you ready to get excited about something new? Let us know with a clap! And as always — happy hacking!