Looking Back

by Nate on August 24, 2010

For readers who don’t know, our startup was acquired by Rally Software at the end of March. As things started to calm down a bit, I remembered that I had a blog, and decided I should look back on my time as a co-founder of a startup.

Launching AgileZen was hard. Well, the act of launching was easy — all you need to do is deploy your site and tell some people — it was the lead up to it was difficult. Actually, the hardest part was to convince ourselves that we could actually make this work, and to stay focused enough while still holding a full time job to build enough software to validate the idea. I was fortunate enough to have a great co-founder/wife and a group of friends to be able to keep myself on target.

When I left my full time job in mid-May, we didn’t have much. The product wasn’t really more than a prototype, and the marketing site was non-existent. We had a good grasp of our business model, but we had no branding and weren’t really sure how we were going to sell the product. When I walked away from my job with the idea we’d launch on July 7th, we had six weeks to build something real and convince people to pay money for it.

If I had to guess, I’d say I worked about 500 hours in those six weeks. Niki put in a huge amount of time on design, testing, and copywriting, but she still had obligations at school and most of the hours were spent grinding out code anyway. I have to admit, by the end I was only partially lucid. A few nights I’d wake up in the middle of the night with ideas and, not being able to get back to sleep, I’d get up and start working. Although, that led to some interesting creative moments: the performance screen in AgileZen was one of the last things I built, and at launch, I felt it was one of the better-designed parts of the app.

I’m not complaining, though. Far from it. Building AgileZen in those six weeks was one of the hardest things I’ve ever done, but I absolutely loved it. It made me remember what it was like to build something because you loved it, not because nameless customer X needed it for generic business process Y, and not because it was the next story or defect in the backlog.

It also completely changed the way that I look at software. I’ve tried to express this to others since, but I think you just have to experience it firsthand in order to really understand. It’s a unique experience to build a product of your own, from scratch, with no paycheck or deferred responsibility or venture capital to save you — you either create real value for your customers, or you fail. And I don’t like to fail.

To be successful at bootstrapping, you have to cut every feature except those you think are absolutely necessary. Then you cut some that you thought that you absolutely had to have. You compromise your design because you need to get the product to market. You ignore automated testing and documentation because your code is too unstable to be held back by rigorous processes.

I built AgileZen unlike any other piece of software I’d built. I cut corners that I would never have thought of cutting if I was working a day job. And you know what? It didn’t matter. We launched on schedule, we crushed our user and revenue goals, and our customers raved about the usability of the product. No one gave a shit about what our test coverage numbers were. Our software made their job or life easier, and that’s why they bought it.

Now, I’m not saying every product should be built this way, but it certainly shifted my perspective on what’s vital and what’s not when building software. AgileZen was built with an architecture that I’m still very happy with, but on top of the strong foundation there was a lot of kludge. That being said, if there was code that was hack-and-slash, I did my best to isolate it. The trick is to know which parts of the app are “load-bearing,” so to speak, and which parts can be safely patched together.

After we launched, I spent the month of October basically rewriting every line of JavaScript in the app to create a more maintainable structure. Was it wasteful to throw so much code away? Maybe, but we were up and running, and we were making money. Before we could afford to spend a lot of time to make the software maintainable, we first had to prove that we would actually have to maintain it — we had to make sure that we actually had a market. Your app can have the best architecture and be 100% defect-free, but if no one cares what it does, it’s wasted effort.

The key thing I learned was that when your time is so restricted, you can’t solve problems that you think you might have some day — you have to spend all your time on the problems that you have right now. You have to have an overall vision to guide you to your goal, but you need to keep a laser focus on the next step towards it.

The last year has been quite an experience. Startup life is stressful and painful and wonderful. I learned more about software and business and myself than I ever expected to. We had a successful exit, which is the brass ring lots of startups look for, so it’s easy for me to look back without regret. Still, I think even if we had flamed out it would still have been worth every bit of effort for what I learned in the process.

We love working for Rally, but at some point in the future, we’ll be back.

{ 2 comments }

Ninject Forever

by Nate on February 25, 2010

I’m happy to announce that after quite a while in beta, Ninject 2 is finally official! It was actually one year ago today that I announced the beta version of Ninject 2. I had originally planned to release no later than March of last year, but in the meantime I had this crazy idea to launch a startup.

As you might imagine, I quickly found that running a business has a tendency to sap your free time.

Fortunately, after Ninject laid dormant for a bit and I was conspicuously absent on the user group, Ian Davis contacted me to offer his help. Ian was a user of Ninject since way back (when it was still called Titan), had committed patches, written extensions, and had more or less taken over answering questions on the group in my absence.

So, please join me in a officially welcoming Ian Davis as co-maintainer of Ninject! Without his help, we probably wouldn’t have made it to an official 2.0 release, at least for another year or two. :)

Note: Ninject 2 is a ground-up rewrite of Ninject 1, and as such, there are some breaking changes. We’re still working on getting the documentation migrated over (along with upgrade guides), but you can see a quick overview of the differences on the Ninject 2 wiki. I’d strongly recommend upgrading, because no future work will be done on the Ninject 1 line, other than critical bug fixes.

The official source repositories for both Ninject 1.5 (the final version of the Ninject 1 line) and Ninject 2.0 are on Github:

The subversion repository on Google Code has been discontinued for awhile, and will be removed soon. You can also grab binaries from the shiny, newly-redesigned website. (Now with even more ninja references!)

Thanks to everyone that uses Ninject, and thanks for your patience as we scrounged the time to get this release out the door! As always, if you have any questions or feedback, please feel free to post them in the user group.

Note: the title of the post comes from James Avery, who had taken to calling Ninject 2 “Ninject Forever,” in reference to Duke Nukem Forever. At least we finally released something! :)

{ 15 comments }

Justin Etheredge’s LINQ Challenge

January 8, 2010

Justin Etheredge just wrapped up a series of videos on LINQ for TekPub, and when announcing it, he offered a challenge with the following rules: You have to blog about a single LINQ query which starts with Enumerable.Range(1,n) and produces a list of prime numbers from the range. You can’t cheat. This is determined by [...]

Read more →

Guarantees, SLAs, and Hollow Promises

December 7, 2009

Since we launched Zen, we’ve received an interesting question a few times from prospective customers: if a company commits to using Zen in their organization, what happens if we go out of business? As a startup, what sort of guarantee can we offer to our users that we’ll be around years from now? It’s a [...]

Read more →

A Few Lessons Learned

August 17, 2009

Running a business is nothing if not a learning experience. Every day presents a situation that you haven’t encountered before, and you have to be ready to shift your perspective and learn quickly in order to adapt. Here are a few tidbits of information that I’ve learned (sometimes the hard way) so far as we’ve [...]

Read more →

Open Source is not a Zero-Sum Game

August 10, 2009

I had originally left off the name of the person I was talking about because this post isn’t intended to make him sound like a bad guy. However, he felt I wasn’t being conversational, so the person that triggered this post is Sebastien Lambla, author of OpenRasta. Read his response here. I caught some flak [...]

Read more →