During the time I spent working on this lab I learned a lot, created a lot and broke a lot of things. I would like to share with you some that stuck.
I started prototyping the platform in February 2012 with a language called Coldfusion. It’s owned by Adobe and not many people use it. Fortunately, it is probably one of the easiest programming languages to get up and running. By June 2012 I had enough. I had a more concrete idea of what I was creating and I really wanted to use a language that had a strong community behind it, was young, and that I would be using professionally when working at a small development shop. I chose Ruby on Rails, also because I had learned so much from 37signals – the creators of Rails.
One advice of theirs that stuck with me was the idea of being a curator. You should be extremely selective with the features or functions that you add to your application. This can also be applied to any domain too. The goal is to widdle it down to just the best and fewest pieces. If you’re creating an album, choose less and only the best songs. If you’re making a movie, cut out all the unnecessary scenes and only add the best scenes. That is what will make your work great.
It is so easy to add features to an application, feature creep, and bloat the application until it’s so fat that it can’t even move. You don’t want it to end up like this
The difficulty for any creator is really choosing which things to keep and which things to leave out. We all have that grand vision for creating something that will awe and shock the world but that is just running against the current.
When embarking on any project you are literally on a race against time. There is only one difference between the successful and unsuccessful here. The successful ones are able to ship. It’s as simple as that. If you can’t ship, people won’t get to see what you’ve created. More important, they won’t get to play with it and you won’t get any feedback so you can improve it. If you take too long to ship you start losing motivation, which ultimately leads to no work being done at all. This is especially true when you’re starting a venture of your own. In the beginning you have no one but yourself answer to. So ship it and get it out there!
With Kokotop I had a lot of grand visions. I wanted it to be a music player that you can share music with your friends. I wanted to attach the Raspberry Pi to it so you could have a central location for all your files as well. At one point I even built a email module because I wanted it to be a hub for your communications
The question that always came back to me was: Who am I building this for? What is the main job that it’s going help accomplish? And lastly, what are my first principles?
Out of the three, I believe sticking to your first principles is the key to being successful with your goal. And it’s obvious why.
There are a ton of startups and applications that have similar functionality to yours. If there aren’t any applications that help you accomplish the job, trust me, if it’s an important one there will be a bevy of similar apps out there in the future. So it’s important to always stick to first principles because no one can ever out-compete or take away from you. Your first principles are very personal.
My first principles from day one has been to use this opportunity to learn the technologies that I’m interested in and have ownership of the work that comes out of this lab. My first principles was also to use the work that I’ve created as a portfolio piece when looking for paid work. And lastly, it was to remind myself why I enjoyed creating things. The majority of creators don’t create things for money or accolade – although it is a good motivation in that it gives you the means of having the freedom to do what you want to do – they build to bring joy to themselves and to others.
In other words just Keep It Simple Stupid.
That’s it for now.