The Perfect Programming Job
Fresh out of a Computer Science degree at uni, I hit the job market looking, naturally, for the best job I could find. I immediately ruled out moving into big business (think banking, insurance) and the consulting roles that tend to take you to such places. I wanted to work with technology I could enjoy, on new projects, churning out interesting “stuff”. That is what led me to the wonderful world of the VC-funded startup.
There are many great things about startups:
- New projects: by their very nature, startups have brand new projects to work on. We all know that starting from scratch is much more stimulating and fun than maintaining a 30-year-old COBOL codebase.
- Great people: because they have interesting projects and questionable job security, startups tend to attract people with a real interest in technology. You don’t get people who moved into “IT” as a career strategy, you get people who love what they do.
- Great atmosphere: partly because of 1. and 2., but also because of their small size and youth, startups often have a great feel. They haven’t had time to develop the painful politics and beuraucracy of older, larger companies. Hopefully they never will!
- No customers: when you’re just starting out, there are none of those annoying end-users to pester you with support questions and Real World problems. You can just code away in your own little world.
So I jumped aboard the VC-funded startup roller-coaster, and I had a great time. I lost my job a couple of times, but there were always new ventures to start on. I had a ton of fun and I learned heaps.
But something did start to bug me. I poured my efforts into these ventures and their projects, and even though the technology was fun, there was somewhat of a hollow feeling. The problem was that all of this effort was going to waste: without customers everything I created was consigned to obscurity. Of course the startups planned to get customers, and lots of them, but the business model was the classic boom-or-bust strategy. Either we would “disrupt” the world, or we would fade into oblivion. Of course, the odds lean heavily towards the latter.
So this supposed advantage of not having to worry about customers turned out to be the one great drawback of working for startup ventures. Jeff Atwood touches on it in his post Shipping Isn’t Enough:
How many users actually use your application? Now that’s the ultimate metric of success.
I achieved plenty in terms of development as a programmer, and I even managed to do some pretty good work (I hope!). But at the end of the day, I didn’t have the sense of achievement that only comes from creating something that other people use.
However, I have not given the startup game away :). I realised that you can have all the advantages, just with a different strategy. So at Zutubi we’re not planning to “disrupt” anyone. We just make software that people love to use, and grow organically off the back of that. And for once, I have Real Customers that use my software, and I interact with them closely. Who would have thought it: I love dealing with customers! Not because they pay (though I thank them for that ;)), but because every time I learn of someone new using our software, I get that sense of achievement I had been looking for.
Even while I wrote this entry, an email landed from a customer commenting on how they loved the user experience of Pulse. Honestly, it does not get any better than that!









February 1st, 2007 at 6:30 pm
Lost (losing – ?) the techie, programmer, code-like-a-demon ego since I began doing customer-facing work.
Customers keep it real for me. It’s not about the technology, the elegance of the code or anything that gets a geek off in the middle of the night.
Sure I can code up the solution in a couple of days but DELIVERING THE VALUE can eat up the whole week.
It’s about leading the customer:
– clarifying the problem
– influencing the solution(or as I wrap it ‘co-developing’)
– user-acceptance testing
– support & maintanence
Customers keep it real: what they don’t teach u in comp sci.
February 1st, 2007 at 6:55 pm
To both of you, I could not have said it better. There is nothing better than working with the customers who uses your software. You learn so much, and see that your assumptions does not always hold up. Actually I think that “disrupting” the world is making software that users like. When Google was the new kid on the block. People did not use it be course of the cool technology, but be course they liked the user experience they got there.
February 1st, 2007 at 7:44 pm
I’ve been kicking myself recently over the fact I’m behind on releasing a personal Rails project of mine. I normally like to release personal projects whether complete or not and the poor user experience (such as bugs) causes me great motivation to complete a flagging project. It normally works great – My work rate increases massively. It is only a hobbie project with no real plans to make millions.
However, after reading this I think I may build it on quality and not release until I’m 100% happy with its flow and I’m reasonably confident the user experience is everything it can be.
If anything it would be a useful experiment. I may find I retain more users over longer than if I release early.
February 1st, 2007 at 9:21 pm
I wholeheartedly agree. When I was a freeware programmer 10+ years ago, I got a thrill not from writing code but from getting feedback from my users.
February 2nd, 2007 at 2:51 am
I just blogged about my dream job a couple of days back:
http://poundbang.in/2007/01/30/the-ideal-job-workplace/
I guess I should also consider starting up
February 2nd, 2007 at 11:59 am
Hey Doug,
Releasing early is great, but I would cut back on features, not quality. So just let go of a few features and polish it up a bit, then unleash upon the world. Your users will help you realise which features are the important ones anyway :).
February 2nd, 2007 at 12:04 pm
Hi Harish,
If starting up is something you want to do: go for it! It’s extremely hard work but extremely rewarding. Even if you don’t want to start up: just make sure you don’t settle for something that’s sub-par. The sort of place you are looking for exists, if you’re motivated enough to find it ;). Hey, if your current workplace is close, use your own initiative to improve it!
February 2nd, 2007 at 10:05 pm
Wow, when this came up in my feeds and I saw “The Perfect Programming Job” as a title I had a mental groan figuring it was going to be another compare-my-job-to-google piece but I was pleasantly surprised.
I am graduating in a few months and this is the exact view I have of software. I don’t care about code elegance nearly as much as I care about what the user gets out of what I write. (Though code elegance is the reason I like scheme.)
I recently had a class that let us pick our project. I decided to help a master’s student by writing a couple of tools that would help her automate a couple of steps of the process she described in her thesis. When I described my XML to Production Rules and Production Rules to Java code programs most people groaned and asked isn’t that boring? What’s boring to me is another sudoku solver no one will ever use (there were actually two! teams that chose to write a sudoku solver and I know another doing that this semester!). If my software helps someone out and makes their life easier and they love using it that’s all I ever ask for and that’s the only reason I write software.
Thanks for this post, it reflects exactly how I feel.
February 5th, 2007 at 7:37 pm
Hi Guillaume,
I’m glad you liked the post. I’m also impressed that even at uni you are thinking about delivering something that is Actually Useful, rather than just earning marks. I envy your users ;).
February 6th, 2007 at 2:52 am
[…] The perfect programming job, from Jason Sankey. […]