Jun 8 2010

This is part two of a five part series on how an IT professional can become an entrepreneur, based on my experience of doing just that. The first post talked about courage. The third post will appear tomorrow.


You're going to need money before you can quit your job to start becoming an entrepreneur. As romantic as it might sound to quit immediately and begin following your dream, you don't want to end up having to consult all the time in order to survive. It will distract you from making progress, and even worse, you may be tempted to slip into consulting for a living, thus killing your dream entirely.

You need to attack this problem from two sides. You need to get more money, and need to be spending less.

Getting More

You'll need all the cash you can spare. If you're like I was, a young, single programmer, you'll probably be rolling in it (if you're any good). Now is a great time to start saving your money with purpose, instead of spending it on WoW subscriptions, pizza and computer gear you don't need.

Having said that, I used some of my money to buy a powerful desktop computer while I was still earning a salary, knowing that I could use it for my startup. If you're a techie, or have a techie friend, you can build a powerful rig for $NZ2500 just by sourcing parts and putting it together yourself. I have three screens, an SSD, a quad core phenom and 8GB of RAM, which put together make a great development machine that will last me until my startup succeeds (in which case I can buy a new one), or fails (in which case I go and get a job and buy a new one anyway) [1].

Spending Less

The flipside of obtaining more money and the gear you'll need is to work out a sustainable, long term plan for spending less. It's time to stop buying the coffee, start getting your Mum to cut your hair and finding a place with really cheap rent. In my case, I've co-founded with Martyn Smith, who is giving me cheap accommodation. Our business relationship is deeper than that, but it's an example of a way in which you can get resourceful in order to save money.

You might think it's hard to be resourceful. I disagree. You're a coder. Coders are supposed to be smart. Use your brain, think outside of the box. Try having $0 days, making a concerted effort to wean yourself off caffeine (and no crying that you need it - that's pathetic), ask your family if they'll put you up for a while, buy a motorbike so you can spend less on petrol, or just sell your car.

For a while, I started tracking all of my spending. I kept receipts and labouriously entered them into KMyMoney, a personal finance program. I did it manually as it added a nontrivial time cost to every purchase I made, which made me think twice about buying things. For every transaction that I didn't get a receipt, I recorded it in the Notes app on my iPhone.

I only did it for a while, but tracking my money did two things:

  • I stopped buying random junk, because it would cost me time, and I knew I would have to stop buying it anyway, in order to let me live longer while starting up
  • I got an idea of how fast I was spending money, which allowed me to forecast how long I could live on the money I had

Knowing how much you spend and how long you can last are two very important pieces of information. If you know them, you'll be able to pick a leaving date for your job that's realistic, and also give you the motivation you may need to stay at your job until that date, even if you hate your workplace.

How Much Money?

You want enough to be able to live as long as possible - 12 to 18 months or even longer. If you know you can consult for some money, you might need a little less. You need enough to be able to quit your job without immediately being worried about running out of funds.

Do not use your credit card, and do not get a loan. They'll weigh on you emotionally, and significantly increase the chances that you'll go bankrupt. Getting in trouble with the bank is not a hassle you need.

The good news is, in a high-tech startup, if you're an IT geek then you won't need to spend much on the product itself. In fact, in the first few months, you may find yourself spending more time talking to customers than building a product.

For Get Your Game On, we've only spent a small amount on graphic design. The code, hosting, internet and everything else, we've piggy-backed off existing infrastructure. The site costs $0 to run. When we launch, the site will still be costing $0 to run, meaning the revenue will allow us to last even longer.

Realism

If there's one important point you should take from this post, it's that you should be realistic. You need to drive your costs down to the bare minimum that you can live with for a year or more, then make sure you have that much money in the bank. Until you've done that, it's not time to quit your job.

It's not bad news if you don't have the money yet. You can work on your startup part-time out of work hours, by meeting with customers, going to entrepreneurial events, building your courage and finding out more about entrepreneurship in general.

One Final Note...

Don't think you can talk investors into funding you while you get your startup running. Your family and friends might, but investors don't exist just to pay founders salaries.

[1]Why did I spend all that precious money (which basically amounts to 1-2 months living expenses) on a computer? Because I firmly believe in having the best tools for the job, where possible. Chefs don't cook with crappy knives, and coders shouldn't code without at least two screens and an SSD these days.

Helpful Sites

  • Andy Chilton's Retire at 40 blog is full of great hints on cutting down your spending
  • Mark Suster's advice for startups will give you a lot to think about. Don't spend much time sweating about stock options, lawyers, vesting and other such jargon right now - absorb it all into your system as part of your startup education, to refer to later when each part makes more sense.

Next: Resources #2: Everything Else

Like this post? Subscribe to my RSS feed and follow me on twitter to hear about new posts early.

Want to share this post?

Jun 6 2010

This is part one of a five part series on how an IT professional can become an entrepreneur, based on my experience of doing just that. The second post will appear tomorrow.


I've written a bit recently on why you should quit your job and do something remarkable with your life (especially if you're a young adult in IT), but how exactly do you go about doing that?

Rather than be unhelpful and give you a pithy statement like "it's different for everyone, find your own way", what will follow over the next week is a bunch of practical advice, based on my own experience of quitting my job to found a startup. I hope it proves useful as you begin your own journey to becoming remarkable.

The Ingredients

You need three things before you can quit your job. Courage, resources, and a plan. A healthy dissatisfaction for your current state of life is helpful too (and some say it's almost necessary).

There's nothing stopping you trying to obtain all three simultaneously, and indeed you'll probably end up doing just that. But if you need one place to start, begin with courage. All else follows from that.

Courage

Courage can come from many sources. Mostly, I got mine by talking to other people, and by reading blogs and essays from certain amazing people.

You should start with Seth Godin and Paul Graham's essays. I'd never heard of Seth or Paul until I started looking for people who wrote about startups, but I devoured their content over the weeks after finding them.

But the most confidence I gained was by talking to friends and co-workers about my ideas and dreams. The wistful comments of "good for you!" and "I wish I was doing something like that" will inspire you.

The Education Motivator

One thing I got from my discussions was that a great way of looking at the upcoming change was that it was like going back to school. For me, founding a startup is like getting an education, except this time it's based in the real world instead of the classroom.

Your tuition fees are the capital you put into your business [1], the cirruculum covers a broad range of topics from software development, business management and entrepreneurship to networking, sales and living with an uncertain future.

The best part? This allows you to feel free to spend $20K and two years working on your business. There's something else that takes $20K and at least two years - a university education. And all you get at the end of that is a stinkin' piece of paper. If my venture goes belly up after two years and costs me $20K, it'll be the best education I ever hard, and I'll be eminently more employable afterwards.

If I was an employer, I'd rate someone who tried and failed to start a business higher than someone with a degree. At least the former person hows how business actually works. Even better, their mind probably isn't polluted with Java and ideological design pattern bollocks. At the least, when you tell them to hack it together because the business needs the money, the former person will feel your pain and ship it, rather than arguing about it.

So I find the education motive to be a great confidence builder for me. It also gets you thinking about how much money you'll need, which is where resources come in. More on that tomorrow.

The Ego Motivator

Who wants to be Dilbert?

Do you work for a boss who isn't remarkable? Who doesn't understand your job, and doesn't value it as much as you do?

If so, why? He's getting paid more than you. You might think you're smarter than him, but he's the one earning all the money. You're getting played, and you don't even know it.

You're smart and good at your job. That makes you more than capable of being an entrepreneur. You have the advantages of passion and intelligence. So use them!

It's all about learning

While prodding your ego might help, I think you'll need to feel comfortable about changing to be an entrepreneur on a deeper level than blind anger about your current job. For me, I found a great way was to learn about the path I was sending myself down, so I had an idea of what to expect.

Crank out your browser and start searching. Look for entrepreneurs, motivationalists, successful people, the people that everyone else are talking about. Start absorbing the entrepreneur culture, subscribe to blogs, follow people on twitter. Read, read and read some more. Spend an hour a day just absorbing all the positive energy, feeling the opportunities, reading the excellent advice. There is a massive community of people out there who have walked the entrepreneurial walk before, and are now sharing what they've learned with others.

During the series, I'll highlight a couple of sites per day that I found to be extraordinarily helpful while converting to be an entrepreneur. But I won't list everything I have found - it's up to you to search for yourself. Pretend you're Neo, searching for the Matrix, if that makes it any easier :)

[1]And you could also claim the opportunity cost of not earning a decent salary, but then you're earning that salary by working at a job you don't like anyway.

Like this post? Subscribe to my RSS feed and follow me on twitter to hear about new posts early.

Want to share this post?

Apr 25 2010

This has always bugged me (scroll right to see the whole thing):

[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84] [WAR] 7d (lib/web.php:916) Undefined variable: message, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84] Call stack (most recent first):, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84]   * log_message("Undefined variable: message", 8, true, true, "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916) at /home/nigel/src/mahara-test/htdocs/lib/errors.php:446, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84]   * error(8, "Undefined variable: message", "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916, array(size 2)) at /home/nigel/src/mahara-test/htdocs/lib/web.php:916, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84]   * json_reply(false) at /home/nigel/src/mahara-test/htdocs/admin/extensions/test.json.php:22, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84] , referer: http://mahara-test/admin/extensions/test.php?

I like using log files to display messages instead of the screen, but somewhere along the way somebody decided that the 'referer' (sic) was needed in the logs too, and that makes them totally unreadable.

Here's my fix, when tailing a log file:

nigel@mahara-test:~$ sudo tail -f /var/log/apache2/mahara-test.error.log | perl -pe 's/, referer:.*//'

And, instantly:

[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84] [WAR] 7d (lib/web.php:916) Undefined variable: message
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84] Call stack (most recent first):
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84]   * log_message("Undefined variable: message", 8, true, true, "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916) at /home/nigel/src/mahara-test/htdocs/lib/errors.php:446
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84]   * error(8, "Undefined variable: message", "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916, array(size 2)) at /home/nigel/src/mahara-test/htdocs/lib/web.php:916
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84]   * json_reply(false) at /home/nigel/src/mahara-test/htdocs/admin/extensions/test.json.php:22
[Tue Apr 20 01:06:47 2010] [error] [client 192.168.5.84]

Much better! But we can do better again:

nigel@mahara-test:~$ sudo tail -f /var/log/apache2/mahara-test.error.log | perl -pe 's/\[error\]\s+\[client.*?\]\s+//; s/, referer:.*//'

And we end up with:

[Tue Apr 20 01:06:47 2010] [WAR] 7d (lib/web.php:916) Undefined variable: message
[Tue Apr 20 01:06:47 2010] Call stack (most recent first):
[Tue Apr 20 01:06:47 2010]   * log_message("Undefined variable: message", 8, true, true, "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916) at /home/nigel/src/mahara-test/htdocs/lib/errors.php:446
[Tue Apr 20 01:06:47 2010]   * error(8, "Undefined variable: message", "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916, array(size 2)) at /home/nigel/src/mahara-test/htdocs/lib/web.php:916
[Tue Apr 20 01:06:47 2010]   * json_reply(false) at /home/nigel/src/mahara-test/htdocs/admin/extensions/test.json.php:22
[Tue Apr 20 01:06:47 2010]

Hooray! Readable PHP log files.

You don't want to have to remember to type all of that, so for best results, put it in a script, chmod +x and you have:

nigel@mahara-test:~$ sudo tail -f /var/log/apache2/mahara-test.error.log | phptail

You could even combine it with Monkeytail to make viewing the logs even easier ;).

I've trawled through the PHP codebase looking for where it adds the referer in a vain attempt to change it, or provide a patch to make it a configuration option. Sadly, I never found it. If anyone finds out, please let me know!

Thanks to Martyn for the original idea, and assisting with the arcane perl stuff.

Like this post? Subscribe to my RSS feed and follow me on twitter to hear about new posts early.

Want to share this post?