Friday 22 August 2008

Losing site of the project scope


I'm shocked. I've looked at my original business plan and cash flow forecast. The system that I am building now is far beyond the orginal first version. At some point I had changed my mind over a major feature which was going to be in version 1. That feature was very specific, for a very niche market. I changed my mind and went for another feature that was broader and had a large market potential. I thought it made sense on a technical level to do the basics first before adding advanced features.

I'm shocked because I changed the market I was aiming for technical reasons. That sounds bad. I lost site of the project scope, so it was enevitable that I wouldn't keep to any deadlines.

Am I proving that I am just a programmer and don't have a head for business?

Have I aimed for a too broader market?

Do I have enough time to salvage my mistakes?

Monday 11 August 2008

People matter more than anything


I came accross a blog post with advice from Marc Hedlund, co-founder and CEO of Wesabe.

A couple points he discussed really struck a cord with me.

"Write someone and ask them for help every day"

Friends, family, strangers on forums, anybody. If they could help, I think it's worth a try. This ties in with my last post about being too quiet. I try and solve all problems myself. Most of the time people actually like to help. I'm going to act on this advise and try to contact at least one person every day.

"Don’t get caught up thinking you need someone, just anyone, to support you. It’s far better to wait for a star."

In the early days I was concerned that I was lone founder. I thought a lot about ways that I could get another founder on board. What I never considered was being open about what I am doing. By being open, people may actually want to join me or help the company in some way.

I'm working on rectifying my mistakes by launching the website with a basic blog and writing about my story so far.

Friday 8 August 2008

Don't Keep Quiet


Like most programmers, I use forums and mailing lists all the time. Some people post hundrends of times a day on various websites, others lurk silently in the background.

I'm one of those lurkers. Most of the time I manage to get the answer to my question without asking for help. Only when I'm desparate I tend to post. What I should be doing is joining the conversation when I have something to say. If something inspires, angers or provokes some kind of emotion, I should say something.

When I do say something I should have a link to my website and blog in the signature, so people that have interest in me can find out more. I should post messages using my company email when possible.

Obviously this blog post won't apply to everybody, but if you do own your own business you should be using every opportunity to promote it, including message signatures!

Wednesday 6 August 2008

Should I Open Source My Code?

I'm not talking about all of my code. Just part of it. I can see several benefits.
  • I can release something to get me out of my 10-month-no-release hell
  • Boost in motivation
  • Early feedback from users/developers
  • Good for my personal reputation
  • Coding help from other users
  • Can publicise my web application to all developers/users of the open source project
  • Can lead the project in the direction I want it to go
  • Reduce work load for this part of the website (not guaranteed)
  • Reduce cost of this tool to $0. Competitors will (hopefully) struggle to keep up improving their propriety versions.
  • Get to know developers that might want to help with my site.
  • Lowering the risk of total failure. If my site fails, but this open source project succeeds, at least I've achieved something.
As for the draw-backs:
  • This tool would be a particular selling point of the whole web application.
  • Less profit?
This part of code that I'm talking about is JavaScript - a significant amount of JavaScript code. It's a large project in it's own right. I can see other open source projects wanting to use this as part of their applications.

If somebody did want to copy my web application, having this open source code would clearly help. However, after building a significant amount of my site I feel copying it would still be pretty difficult.

Clearly by writing this post I have convinced myself that going the open source route is best.

Producing for the Public Domain


I've recently been listening to the Stackoverflow podcast. Jeff Atwood has commented a couple times about how he feels he has not produced anything until it's public. That's how he gets his satisfaction at the end of the day - knowing something is out there that can be read or reused.

I've been focusing far too much on code. I thought I would start blogging as soon as I get the web application online. This is too late. Start blogging before releasing any software. There are four real benefits of getting stuff out regularly onto the web.

Your Users
By talking about something you usually gather interest. If these people like what you are talking about, then they should like the software once its released.

Reputation
You will build a reputation of expertise in your particular area. This is great for networking and future job prospects.

CV / Résumé
Having a well written blog on a subject relating to a job is bound to impress prospective employers. It's going to put you ahead of that other candidate without the blog.

Content Is King
All webmasters should know that content is king on the Internet. Regular postings of content will build up to substantial amounts over years.


Oh dear. Looks like I've made another big mistake. Why didn't I start blogging from day 1? I did release my company blog a few months ago, but nobody will be interested in the company until they have interest in the company's products.

Tuesday 5 August 2008

Always Being 90% Done


I've only just posted about one of my biggest problems, always being 90% done or 2 weeks away from completion.

Now I've just coincidently come across Jeff Atwood's post On Our Project, We're Always 90% Done. Since this describes me completely, I'm going to make a new project plan. This time breaking tasks down into at least daily chunks of work. Last time I did this I kept up with my month plan for 2 weeks - and it felt good. So why didn't I do it again?

Perhaps I'll have to give the book, Behind Closed Doors: Secrets of Great Management a closer look too.

Hitting the wall


There comes a point when your motivation for something dies.

We all need people behind us, encouraging us in what we do. I've certainly had my ups and downs over the last 10 months. Hitting many dips and overcoming them. I read Seth Godin's The Dip a while ago. It's a great little book about recognising when to quit and when to hang in there. Should I quit? What should I quit?

I feel as if I've come to a point where something has to change. Perhaps that means quitting something. I've been battling hard and this website still hasn't been released. Yesterday I finished a large new feature and still had the feeling that this site didn't have enough features to be useful and wasn't easy enough for novice users. I suppose I am a harsh self-critic. I don't want to put something out there which makes me and my new company look bad.

I've got lots of options.

1. Continue as normal.
I can rule this out straight away. I've done this for the last 10 months and I still haven't released this web app.

2. Quit. Find a job.
Perhaps a little extreme. Although I'm running low on funds (I'm funding this business out of my own pocket), I don't want to get a "proper" job until absolutely necessary. Also I feel potential interviewers might be a little concerned with my record if I do this.

3. Quit. Do freelance work.
I could earn some money by doing contract work again. Like #2. I feel as if I can leave this as a back-up option after trying #3. or #4.

4. Release the website now.
What's the worst that could happen? People get annoyed with site, publicly criticise it and never come back.
What's the best possible outcome? People actually like the application and are willing to provide helpful feedback.

Even if I do release the site now, I won't earn any money from it. I still need to code a payment system. I still think its several man-months away from being a tool worth paying for. My biggest concern is that the site (currently) attempts to do too much and achieves very little. I'm confident that if my site is implemented very well, it can earn a lot of money. A lot of features are required and required to work well to encourage users to use my web application rather than desktop equivalent software.

5. Release a small useful utility

I have done a lot of coding in the last 10 months. Some of which would make a very handy little application. Perhaps one worth paying for. I know this since I've been contacted several times about some buggy open source code I contributed that does a similar thing.

If I do not allow any feature creep from this little application it might be possible to release it in under a week.


Are there any other options? What would you do?

This Blog sucks, it needs a better design and...

I've had to force myself to stop tweaking with this blog. Like my software, I tweak the unimportant bits, striving for perfection.

Of course of I was considering installing my own blog software. Shouldn't I buy a domain for this?

My only sin is taking 2 seconds to change from the default blogger template, since the design is too recognisable as blogger.com. I think I've picked an even worse template. Let's see how long I can prevent myself from procrastination and actually concentrate on the important bit; content.

----
update:
I confess, I have modified the design. I couldn't help it. Better than the default now.

How Not to Start a Software Company


OK, let's face it, I've made some mistakes already. That's even before I've released the web application.

Let's start with my top five rules I've learnt by doing the complete opposite.

1. Release Early, Release Often.

Everybody knows this right? I knew this. Yet why has this site still not been released after 10 months. Ouch, that hurts just writing that.

I started off with careful planning. I even planned a version 1 and 2 so I knew the full scope of the first version.

So how do it go so wrong? What lies and excuses do I tell myself?

"It's Only 2 Weeks Away". I know I can code a hell of a lot in 2 weeks. On that premise, being 90% there, surely I can get it done. No you can't. After two weeks you realise that 90% was really 75% and after another 2 weeks it will be done. And so it goes on.

"But this feature is essential". By saying this I'm proving that; I didn't plan version 1 in enough detail. If that feature is so essential, why didn't I include it in my version 1 design?

"It's not polished enough". I'm acting like a perfectionist. My friends and family will judge me based on this, so its got to be great. So it needs this this extra feature. No. No. No. They won't care if its not polished, it's just a beta version for testing. You add the polish once its on the web.

2. Think Small

I didn't think small enough. I wanted a big project to get my teeth into. A project that has big potential.

Why didn't I start by releasing the first bit of code as a small useful utility? Ah, but that was to be the core part of my web application and I didn't want to give away my hard work did I? But then others could copy the code and they would become competitors.... Stop. Why and how would anyone compete with that small utility? People would only start competing if that small utility application became successful and profitable. Two magic keywords which would propel any start-up to greater things.

3. Focus on the Essentials

A forum is essential, right? Contact form, also essential? Blog? Of course! Content management system for managing the website? These all have to be integrated to look neat and pretty.

Wrong.

All the basics such as forums and blogs can be set-up easily on 3-rd party sites like getsatisfaction.com, blogger.com, or wordpress.com.

Some might say its important for a professional site to have everything on its own domain. Whilst that would be nice, it's certainly not important. Your software is the most important thing. Other stuff can wait.

4. Too much time.

I never thought anyone could have too much time. Too much time means too many features. Too much faffing, too much scope, too much to do.

Less time focuses the mind. You don't have enough time to code everything so you code the most important stuff.

I remember learning this from 37 signals. I love their less is more mantra.

5. Who is making you look stupid?

I kept this project to myself. What a mistake.

By this I mean, I wanted to work on it quietly and release it with a fanfare and show everybody at once. Wow, that's a lot of pressure I was putting myself under.

I did have a mentor to help me on the business side of things, but I stopped talking to him. I felt I couldn't trouble this person too often since he always seems to be busy. Either I should have contacted him on a weekly or monthly basis, or found someone else to fill his shoes.

I feel it's important having someone or several people to report to. If you don't deliver what you said, you look stupid. I was counting on my users to do that job. That would be fine if I released the software on time!



Hopefully by acknowledging these mistakes I can learn from them and move on. Like when you must admit to an addiction before you have any chance of conquering it.