Approximately two months ago, I started working on my startup full-time. More than anything, I wanted to get some of these ideas out of my head so I have something to look back at later.
Chaos is Best
Most software companies tend to operate by having a very specific goal, and having a group of engineers work towards that goal (with management checking up on them) until the goal has been accomplished.
Regardless of whether your team does waterfall, agile, or anything in between, pursuing a single goal with a group of people seems like a bad idea. I’ve never been able to properly articulate what I didn’t like about this in the past, but since I started working on my company full-time I’ve come to understand what it is that bothers me so much: motivation.
When I have a bunch of tasks laid out, and I assign myself something specific to work on each day, it almost never gets done. I’ve tried this time and time again, but no matter what I do (forcing myself to work on it, guilting myself into it, whatever the strategy may be) I fail. Well, either I fail or I produce crappy work, which is just the same as failing.
What I’ve learned to do over the past two months is to just have fun and work on whatever I feel like working on, on a day-to-day basis: chaos. Since I’ve started doing this, not only have I felt a lot more relaxed, enjoyed my work a lot more, and felt happier–but I’ve gotten a lot more accomplished in a smaller amount of time.
Sure, it isn’t always the most convenient thing to do, but it seems to consistently pay off. I’m willing to bet that one of the primary reasons companies like GitHub and 37 Signals are so successful is that they have a chaotic workplace.
A couple of weeks ago I was in the middle of a massive project: writing parsing code for enormous amounts of telephony data for one of our new projects: tnapi. At the time, this was the number one business priority, and absolutely dwarfed the importance of all my other work–but despite this, I decided to spend the day hacking on some open source projects, as I just couldn’t get myself into mood to write parsing code all day.
That day was one of the best days I’ve had in my life. I felt great, wrote some awesome open source code (that we later used integrated into our products), and felt refreshed the next day and excited to hack on the parsing code some more.
While I still have my projects laid out with TODO items, just like always, I’ve learned that no matter what I do, as long as I give it my all, it’s a hell of a lot more effective than forcing myself to work on something I’m just not feeling.
Two months doesn’t really sound like a long time. Looking back, however, two months seems like a lifetime.
In the past two months I’ve built, iterated on, designed, and created more value that I have in a long time. I’ve gotten more accomplished in less time than I ever thought possible.
It’s not that these two months have felt slow–they’ve just felt so full that time itself seems to be different. Instead of viewing two months as “Oh, I’ll finish this and this.“, it now seems like “I’ll design this product. I’ll ship the wire frames off to our designer. I’ll implement the back end services. I’ll test it. I’ll integrate the finished designs. I’ll blog about it. I’ll document it. I’ll integrate billing for it. Then I’ll work on the next product as well.”
I never imagined that in two months I’d be able to accomplish so much stuff.
APIs Are My Passion
More than anything, however, I love writing APIs. I really love it.
Writing APIs has been, without question, the most fun I’ve ever had programming. Since I started on this full time, I’ve been determined to change the company from a services company (which we have been up until now) to an API company, which focuses primarily on building APIs for developers.
While I won’t go into all the details here (I’ll save that for a future post), I want to just list some points:
- Developers are the best customers ever.
- Writing code for developers (being a developer yourself) doesn’t feel like work at all.
- Making complex stuff (telephony stuff, for instance) simpler and more accessible is a great feeling.
- Dealing with scaling issues is fun and educational. If your company makes APIs, this will likely be necessary sooner rather than later.
Hang out with cool programmers, write cool apps, and make some money along the way? Awesome.
Do More Stuff With the Wife
After the first week or so of working on my company full-time, I realized I was spending a majority of my time hacking, and not enough time with my wife. Since thinking about it, we’ve spent a lot more time together, and things have been great.
Between household chores, cooking, waking the dog, working out, and watching movies–we’ve ended up spending a ton of time together. Not only has this been really fun (my wife is awesome), but it’s been a bonding activity for the both of us, and our marriage has been really great.
Relaxing Means Relax
I’m not very good at relaxing. Even when I watch movies I’ll usually have my laptop open writing code, sending email, or browsing Hacker News.
Since I work on my startup completely from my house, I’ve been working to combat this. After a week or so of desperately trying to accomplish as much as possible while “relaxing”, I decided to give up and just watch a movie. No laptop.
What a difference.
I had no idea how refreshing it can be to lay down on the couch, curl up with my dog, and watch a movie from start to finish with no distractions. Not only have I been really enjoying my relaxation time a lot more, but after relaxing I actually feel refreshed, not depleted.
While this concept is stupidly obvious, I really need to keep it in mind so I don’t go back to my old ways.
Having Fun Is Easy
Having fun is easy if you focus on what you’re doing.
I’ve read tons of books on focusing better (coincidentally, if you aren’t familiar with The Pomodoro Technique, you should be), but nothing beats practical application. For me, this means shutting my office door, and banging out some small feature until I’m done with it.
I can’t tell you how many times I’ve stressed myself out by constantly thinking of all the things I have to get done, and the importance of each item. Taking a moment to realize how fun each little item can be, and focusing on it completely for a small chunk of time is an incredibly great way to get into the zone, have fun, and feel good.
Those are all my thoughts for now. I’m sure in a few months I’ll have a lot more.
Overall, the past two months have been pretty epic. I’ve had a lot of fun, gotten a bunch of stuff done, and had a ton of fun along the way.