rss feed
blog - learning and productivity in a micro-ISV
posted by witten on November 11, 2007
Several months ago, I mentioned that I was starting my own software company (http://coderific.com/blog/post/645). Well, I'm pleased to report that I'm just about ready for a 1.0 product launch, even if the software as it stands is currently rather minimalistic. The product is a WYSIWYG personal wiki called Luminotes, and you can check it out at http://luminotes.com/ if you're interested.Anyway, after several months of slaving away on my own software, I've learned several important lessons that I thought would be worth sharing with you, dear Coderific reader. When I worked in the corporate world, one of the benefits was that I was constantly surrounded by smart software developers, so it was almost guaranteed that I'd pick up new development tips from them. It was in the corporate world that I really internalized test-driven development by working with a team of people who wrote unit tests for a living. And it was working for a corporation that I really became halfway decent at C++, picking up tricks and best practices from other developers.There were just so many things I learned from other developers on a daily basis. So when I finally left the corporate world to sit in my pajamas all day working on my own micro-ISV, one of my fears was that I'd stop learning. Not being constantly steeped in a team of other developers, I worried that I would fall behind, no longer picking up the tips and tricks that kept me sharp.Well, I'm happy to report that my fears were completely unfounded. It is possible that by not being around other software developers all day, I missed out on learning some particular topics, but there's a whole slew of things to learn when you're working by yourself, things that simply aren't learnable when you're in a busy office environment.When you work for a big company, your coding productivity is almost always bounded by things beyond your direct control. Perhaps you get interrupted frequently or have to attend inane meetings all the time. Or maybe you waste time struggling with poorly documented libraries or dealing with office politics, rather actually getting code written.But when you work for yourself, your coding productivity is mostly bounded by your actual ability to pump out good, working, debugged code. There are still the occasional speed bumps, but if you structure your day properly (and you have immense control over doing so), then you can minimize interruptions and productivity drags. And if you're a one-man software shop, I'm guessing you don't spend a lot of time in meetings.When your productivity is no longer constrained by your environment, the only constraint is yourself: How well you can concentrate and keep your butt in that chair, how much discipline you can summon to write unit tests, how well you can deal with tricky coding problems. Suddenly, when working for yourself, you are the limiting factor, rather than the organization you work in.This shift opens up immense opportunities for learning, opportunities that you simply don't have in a corporate environment. Want to learn how to keep yourself coding for 8 hours at a time with only a few breaks to clear your mind? Now's your chance. When you don't have a meeting scheduled every two hours of every day, suddenly you've got to learn how to focus. Want to know how to stay motivated through all the ups and downs of a typical project? When you're on your own, you are the only person cracking the whip, not teammates and certainly not pointy-haired bosses. Ever wonder what time of the day is your most productive for doing specific tasks like debugging, design, algorithmic analysis, and so on? When you run your own micro-ISV, you can structure your day however you like, so it's a perfect opportunity to find out.Simply put, one of the best ways to improve your productivity, or at least start learning what could use improvement, is to quit your job and start working for yourself.