I’ve been a web developer for 8 years and until this past weekend I had never released a finished side project. That’s not to say I hadn’t intended to, I have had many side projects over the years: from content management systems, to frameworks, to subscription services, to networking platforms. But like many other developers, my side projects had always fallen by the way side at some point between concept and release. Sometimes due to a lack of time or getting distracted by a new exciting idea, that dreaded last 10% or more often than not, chasing perfection.
Releasing a side project can come with a host of challenges. You can get stuck at everything from the initial idea to the name, logo / branding or user experience and documentation. Not to mention prototyping, refactoring and of course needing the confidence to release the project to a wider audience. Each and every one of these has been a problem for me at some point in the past and for many other developers I know too.
However last week I decided I was going to challenge myself. I decided to make something good out of the work from home period and release a NPM package to the wider public within a 7 day time frame.
Planning to succeed
I was very aware of the stumbling blocks that had held me back in the past so planning was going to be paramount to my success.
For a side project to be achievable, the initial goal should not be too ambitious. The beauty of development is you can continue to add features over time and shape your project to suit your users needs. To put it simply, the first release does not need to be the finished product.
Where possible focus on strengths. It’s easy to want to learn something new and push boundaries with side projects but ask yourself, is this the best path to release? Focus on releasing the core product before trying to change the world.
Not having a name for a project is no excuse for not getting started. Without a product or service to support, a name has no meaning. That’s not to say I haven’t fallen foul to this in the past having spent days researching the perfect name. Remember a name can always change – even post release. Focus on your core product / service and don’t get distracted by unnecessary frills. In fact, I’d suggest picking a word at random or even a number to begin with.
User experience and design
User experience and design may play a very important role in the usability of your product /service. If this is not your area of expertise have you considered outsourcing this element as a more suitable approach? Doing your own designs is notoriously difficult, so even if you feel confident in your design and UX work, utilising some one else’s skills may be worth considering to keep you focused. If you’re worried about cost, consider offering a service exchange.
When prototyping, it’s important to identify the potential stumbling blocks in your project early on. Prototype these elements with little or no extras and don’t get bogged down in styling prototypes beautifully – just focus on functionality.
When you’re deep into a project it can be tempting to refactor it, for as much as you try and iron out the creases in prototyping there’ll always be lessons learnt as you begin to pull your project together. But before tearing your hard work apart and cleaning up your code base, consider if prettier code is an absolute must for your initial release. Don’t chase perfection as you can always make improvements to your codebase in future releases.
Documentation can be daunting but people are going to need to read simple and clear instructions in order to use your product / service. Consider breaking documentation down into small, digestible chunks and don’t be afraid of repeating yourself. Users are unlikely to read your documentation in its entirety and instead use it as a reference point, so link relevant sections and reiterate important information when necessary. Documentation doesn’t finish with writing though, you’ll need to host it. These days we’re blessed with fantastic documentation platforms and personally I cannot recommend Vuepress enough.
Confidence to release
Finding confidence to release your own hard work to the public can be difficult, particularly in projects that depend on users interacting with one another to function. If you struggle with confidence in your work or are worried your project won’t get off the ground, start small with something that’ll make your life easier. Many of us have useful helper functions or classes we pull into all sorts of projects, so consider wrapping them into a package for public use, that way you will build your confidence steadily before plunging straight into the deep end.
When settling on a project for my goal, I spent some time considering all of the above and I think it made a significant difference to my decision making. I decided to work on a project called Honeycomb. The idea was to create a configurable, fluid scss framework, where everything from the grid, to the fonts, to the gutters resize gracefully with the viewport, based off of minimum and maximum values.
Following these simple steps really helped me keep a clear focus on the core of what really matters to release a side project. I kept the idea small and digestible, creating a scss framework which is something I had experience in creating for my own use in the past. I chose a random word for the name, safe in the knowledge that I could change it if I wish.
I began by prototyping the problem areas, such as ensuring ceiling and floor values were respected by all viewports. Once I’d reached a point where I was happy with the functionality of my project, I released it, iterating on it retrospectively and only then did I make non critical housekeeping decisions. For the documentation I worked with Vuepress, which allowed me to have my documentation written and live within a day.
If you’re having trouble seeing side projects through to release, I believe following these guides will help you focus on what matters as much as they helped me.
If you’ve found this article useful, please follow me here, on Medium and Twitter.
Top comments (4)
Yes, I plan to outsource the UI and landing page, but how?
Outsourcing in itself is a big subject - If you're worried about cost, you can look for designers / developers that share your enthusiasm for the product / service and perhaps offer a skills exchange. You can find like minded individuals through lot's of services, post on here, Twitter, The Dots, find a co founder through services like Starthawk or people in your area using something like Shapr. In terms of Monetizing the product / service, I think that's dependent on your product/ service, a couple of proven options are to offer a free, limited version of your product/ service as well as paid, full featured version. If you have a free product / service, release a paid PDF "How to get the most out of product" or similar. Communicating with designers and developers is about finding a compatible partner, not everyone will work well together - Talk to different people, find someone who listens and shares your passion for your idea, set up a way of sharing ideas early on, through a service like Basecamp. Budget is really down to the product, talk to people, would they use the product / service, is the product/ service needed, if so how much would they be willing to pay for that product/ service - This will help you scope how much time / budget you should dedicate to the project.
Really interesting idea! Especially during these times when a lot of people are cut off!