I have been working on a project in my spare time. It is a service for owners of Polar watches that use online services such as Endomondo, Runkeeper or Strava. These users struggle with online services that fully support files exported from Garmin watches, but rarely from Polar watches. That is the problem I aim to solve. You can find the service at Polarconverter.
It started out as a project to scratch my own itch; I used my watch almost daily, but lacked a good way to import all that data into Endomondo and Strava. As I am a web developer by trade, I had the knowledge to create a website to solve my own problem. As time went by, other owners of Polar watches discovered it and started using it. That was great, of course, but as my user base grew, so did the requests for new features and support for more and more type of watches, file versions and watch accessories.
At one point, it started to get hacky, with a lot of duct tape to support all the requests that were coming in. Therefore, I decided to start again from the beginning, but with a lot more knowledge and new technologies to choose from. Now that I am well into the process of updating the site, I want to share some of my experiences with this project.
If you are going to take on a project of some size, there are a few things you should consider. First, you should be thinking about what your motivation is. For me it was twofold: I wanted to solve a specific problem that I had, and I wanted to use this project as a playground to learn new technologies. To call this project a success for me would mean that I would be able to convert the files and would have learned more about a technology that interested me. If money is a part of your motivation, you need to figure out how to monetize your project from the start.
If you hope to capture users and maybe get people to pay for your service, you should be aware that you are, in some cases, competing with other services that are the product of a whole team. In order to compete against companies, you need to have a USP (unique selling point) and differentiate your service from the other services out there.
You do not want your project to feel like work, so you should choose either a problem that interests you or a technology that you are excited about. Moreover, you should work in a relaxing environment. I do most of my work from the comfort of the couch while glancing at TV shows. I do not want to bar myself in the study room, so I try to fit in the work without making too many alterations to my life.
These are not exactly ideal conditions, as the TV is on, and I usually get only about 20 minutes of uninterrupted time in front of the PC. You are constantly dealing with what Tom DeMarco and Timothy Lister, in the excellent book Peopleware, call fragmentation. You experience fragmentations when your time is divided between different tasks. At one moment, I can be immersed in the code, creating an algorithm to calculate calories burned, and then am suddenly forced to quit in the middle because people come over or the dog need to go out. When I finally get back to the code, a lot of time is wasted with a slow restart and the chance of creating a bug is drastically increased.
To avoid the fragmentation, you might stay up late or get up early on the weekends. Ideally, you should try to do the latter, but it is in most programmers’ nature to do the former—at least it is for me. You should try to make a note of when you are in the zone, and try to optimize for that as often as you can.
It’s important to get quickly up to speed and start where you left off. Sometimes you are forced to keep going so you can finish what you are doing because you know it going to be hard to pick up, when you are so deep in the code it will take hours to regain the same understanding. Sometimes it is harder to understand the code that has been written than to write it from scratch. You should do yourself a favour and write a note where you left off, or even better, write a failing unit test that you are forced to fix next time you pick up your project.
Whenever I get a bug and I need to go through my code, there are times I wished I wrote better comments to myself. It reminds me of what Yuriy Zubarev said in 97 Things Every Programmer Should Know:
Write code as if you had to support it for the rest of your life
, because with side projects, it is in fact you that has to support it forever….
I do not know many developers that are excellent as designers and usability experts, so you might want to lean on others in areas that you do not excel in. A great way to get help is to look to services like Fiverr or 99designs. If you have money to spend, you can get a great-looking design by putting up a project on 99designs. Be sure to be as specific as you can and give good feedback to the designers. I have experienced that the success is just as dependent on you as the customer as the designer itself. You can also get good help from Fiverr, but lower your expectations a bit; don’t expect a complete design for only $5.
Eric Ries (author of Lean Startup) talks about building a minimum viable product (MVP), meaning a product that can stand on its own and provide the desired functionality but that might lack certain features or a finishing touch. You should adopt that mindset if you are ever going to ship your product. As Steve Jobs put it,
Real artists ship
As a developer working on your own on a solo project, you are your own project manager and product owner. Your end-users are your stakeholders, and in order for you to get any real feedback, you need to publish it. Getting the product in front of your users can give you invaluable feedback that you would not get otherwise get. Give the users a way for them to send feedback, whether it’s through email or an account with UserVoice. I hired someone on Fiverr with expertise in usability to go through my site for 5 bucks. It is a cheap and simple way to eliminate the most obvious usability problems.
Connectors, mavens and salesmen
Malcom Gladwell talked about the importance of connectors, mavens and salesmen in his book The Tipping Point, and their importance for your reach. These three groups of people are users that can help you reach more users by talking about your product to others, distributing it to their extensive network and writing good reviews. When answering support emails, you have a unique chance to have direct communication with your end-users and that is your chance to create one of these, by answering as politely and precisely as you can. You should always try to go the extra mile. Create ambassadors that do the advertising for you. As you most likely do not have a big marketing budget, you are forced to rely on word of mouth.
If you want to impress potential investors, you might want to appear bigger than you are by using “we” instead of “I” when talking to your users, but I have discovered that it is better to be honest to your users about the size of your “company.” How much more impressive is it that one man is behind everything? Plus, I think that users can relate more to a person than a huge company.
So what are you waiting for? Quit reading blog posts—choose one of your excellent ideas, go “File, New project” and create something awesome!
- To read more about USP, pick up The Six-Figure Second Income: How To Start and Grow A Successful Online Business Without Quitting Your Day Job
Or set up your UVP (Unique Value Proposition) using the Lean Canvas: Running Lean: Iterate from Plan A to a Plan That Works (Lean Series)
Differentiate yourself from the rest, using The Difference Map as described in Difference: The one-page method for reimagining your business and reinventing your marketing
A must-read for both developers and project managers: Peopleware: Productive Projects and Teams (3rd Edition)
Useful tips for any programmer: 97 Things Every Programmer Should Know: Collective Wisdom from the Experts
Jump on the Lean bandwagon: The Lean Startup: How Today’s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses
- Create mavens, connectors and salesmen: The Tipping Point: How Little Things Can Make a Big Difference