Archive for the ‘Naked CTO’ Category

How To Make Ideas Stick In Two Easy Steps

Wednesday, May 5th, 2010

I am reading “Made To Stick” at the moment which has actually been a very interesting read. I will write a full summary of the key points in another post but there was one big idea that really stuck with me.

Find the core idea

Finding the core means stripping the idea down to its most critical essence and removing all the superfluous elements. The core is the main message and its power comes from its singularity, you cannot have five North stars. In order to get to the core you need to discard a lot of ideas to make sure the most important insight shines.

They explain how the US army used to have complex battles plans that were useless the minute combat started as the enemy response could never to be predicted. So in the 1980s the army developed a new concept called Commander’s Intent (CI) which is the core of any mission. There can only be one CI and it appears on the top of every order, for example: “To break the will of the enemy in the south region”. This core idea aligns everyone’s actions but leaves the tactical decision to relevant people in the field.

Communicate the core idea

Once you have found the core you need to communicate it and one of the key points is to make it simple.

The case study they use is that of Southwest Airlines who have the mantra “We are THE low-fare airline” which has guided the actions of the employees for more than thirty years. So if someone comes to the CEO and suggests that they introduce a new meal or extra drinks, they have to ask themselves will this action make us The low-fare airline.

I really like the idea that a simple message can provide high level guidance to lots of different people at different levels. Coming up with the core is not too difficult, communicating it simply is a lot harder.

Experimenting with these concepts

So it is not enough to merely read and understand these concepts the only way I learn is by actually using something.

At the moment I am developing a new hosting service targeted at Django developers, so I decided to apply these ideas. I sat down and tried to get to the core of the business idea and then try and communicate it in a simple way. The keywords I came up with for the service were: simple, easy to use, foolproof, aimed at the novice, allow multiple versions to be run; but none of these are the core.

So I asked myself two questions

  1. What really makes this new hosting service unique?
  2. Why did I decide to build it in the first place?

The answer to both of these questions is complexity, Django hosting is complicated and I wanted to bring it to a wider non-technical audience. So I came up with:

“The easiest Django hosting in the world”

This is the core and it is very simple. This message now guides our decisions on features, operations and design. For each decision that needs to be made we ask ourselves will this make us the easiest Django host in the world. So far it has been very powerful.

The Django hosting service will be launching in a few days and I have written a detailed post on how we went from idea through to launch in just three days over weekend and bank holiday Monday.

A Shorter Working Day – The Power Of Balance

Wednesday, April 21st, 2010

A lot people seem to think that the longer the hours you work the more important you are. I whole-hearted disagree with this. It is very easy to waste 12 hours inventing tasks, browsing the web, playing games or chatting online.

If you are super efficient and productive, if you do not get distracted and if you put all your effort into the work you do, an 8 hour day is more than enough time. As I have written about before most people will fill their day regardless of whether they work 2 hours or 15 hours.

If you are in a job where you need to:

  • Be creative
  • Make tough decisions
  • Manage a team of people
  • Evangelise
  • Develop strategy
  • Think deeply
  • Communicate

Chances are that you will be a lot more effective if you are well rested and have real work life balance. But is this the case in reality?

The shorting working day experiment

Historically I was a real workaholic, I often would work 14 hour days and because I love what I do I could tell myself that these kind of hours were ok. Now I have a family my time seems a lot more important and I wanted to address this issue without impacting my business profitability.

So over the last month I decided to see how much effect it would have on my productivity if I experimented with a shorter working day. Here were my rules:

  • Arrive at the office no later than 8am
  • Leave no later than 5pm
  • No personal browsing or personal tasks during the day e.g. editing photos, Facebook etc
  • No working in the evening
  • Keep distractions to a minimum
  • Focus on what is important not what is urgent
  • Remove non-essential tasks

The results

What I actually have found is that instead of my productivity going down, in fact because I am well rested (assuming my son does not wake up at 5am like he has a habit of doing!) I am actually getting more done in less time.

There are other massive benefits as well:

  • More time (and more importantly more attention) with my family
  • Huge increase in enthusiasm during the working day
  • Time for personal hacking and coding projects which allow you to improve your skills
  • Better well-being
  • Reduced stress
  • Better decision making
  • Better communication and patience

Some very well publicised case studies including 37Signals and Carsonified have actually moved to a 4-day working week and they have not seen any loss in productivity or profits.

I would urge you to try it for yourself, keep a record of how much you get done in a normal working week, then have a look to see how many of those tasks actually needed to be done. Then try a few weeks working a shorter working day with increased focus and efficiency. I would be interested to see how you get on with your own experiments!

Fixed Price vs Daily Rate – Lessons Learned From Agile Scrum

Wednesday, April 14th, 2010

If you are involved in quoting for software projects you have to make sure that you estimate each job correctly or you could find that a job quickly becomes unprofitable. In reality it is very hard to estimate as you rarely have a defined technical spec and requirements are constantly changing.

Often the scope creep, changes and alterations can account for 20-30% of a project, could there be a better way?

I am not sure that the fixed price model is so valid any more, the scope is rarely fixed so why should the budget be fixed? I am going to experiment with a new model that take some ideas from agile development method scrum.

Instead of a scope of work have a backlog

This is a high level document for the whole project. It contains broad descriptions of all of the features, wish list items and nice to have items. The most important part is that it is then prioritised by business need with rough estimates for business value and development effort. This document should be owned by the project manager and the client.

Fast iterations, the sprint backlog

This document shows all the features that are going to be developed in the upcoming sprint (typically 1-2 weeks). The highest priority features from the backlog are developed first. The features are broken down into tasks (which should be no more than 2-12 hours work). Anyone on the development team can then work on a task they are not assigned. A task sheet is often used so you can keep track of the progress of the tasks.

Burndown

The burndown chart is something that is visible to the whole team and the client and shows the remaining work for the current sprint. It should always be up-to-date and used as a reference for when the sprint will be complete.

How can this help us with pricing?

The great thing about this method is that it prioritises the most valuable features for the business. It also means that if the client wants to add new features they must take out other features or it is very obvious that the scope has increased and that will incur an extra fee.

So your fixed price means a fixed amount of effort which is then allocated against tasks. Once the allocated time runs out and the agreed features are delivered, your client can then buy more effort or sign off the project as complete. I am not sure how this will work in practice but there has to be a better way to estimate and cost projects.

Share Your Ideas – But Only To The Right People

Wednesday, April 7th, 2010

I have been reading a few articles recently that are advising people not be so secretive with their business ideas. They advise sharing ideas with as many people as you can to get feedback, advice and to give you the chance to hone your elevator pitch. I think that this has merit BUT it also has the ability to cause confusion and procrastination.

If you have an idea that you really believe in, then the hardest part of making your idea a reality is the execution. If you ask too many people for feedback, you will get too many opinions and you may get overwhelmed or dismayed. For example take a look at the following:

  • A site to broadcast updates only up to 140 characters (Twitter)
  • A website where anyone can update the definitions of anything (Wikipedia)
  • A place to upload your videos of anything (YouTube)

None of those propositions sounded compelling to me when I first heard about them, but the results speak for themselves.

I do think that it is a good idea to talk about your idea, but start with close friends and family until you have perfected your pitch. Then move onto sharing your idea with the actual customers you are targeting, it is their opinion that counts the most.

Worry About Scaling Later Just Build Your Product

Wednesday, March 31st, 2010

Just a short post today as there is not a lot to say on this topic.

I think too many start-ups worry far too much about scaling. My advice would be to just get your product built and worry about scaling later, if you have scaling problems it is a nice problem to have as it means your app is successful. If scaling issues occur you probably have huge traction and a lot of users so you will have the resources to deal with scaling. I would estimate that the majority of web apps that are built never encounter scaling issues. The MySQL vs NoSQL debate has perpetuated the scaling discussions but you need a lot of traffic before you consider a huge architectural change to a schema less database.

There are some simple tips you can use to speed up your site and deal with moderate scaling issues:

  • Have a separate file server for your static files (running nginx or lighttpd NOT Apache)
  • Get a decent server with good ram
  • Use memcache or some other object caching system for templates and database calls
  • Find bottlenecks in your code and optimise them
  • Tune your existing servers
  • Have a load balancer for your requests
  • If you have separate database and webserver then make sure they are all with the same hosting company to keep latency low

A really basic architecture would be:

  • One load balancing server
  • Two web servers
  • One database server
  • One file server

You can then add to each of the clusters as you need to e.g. you can add another database server or another web server. It is obviously not as easy as that but that it is the basic concept.

Explosive Development – From Idea To Protoype In One Week

Wednesday, March 24th, 2010

A couple of years ago I heard Obie Fernandez (from Hash Rocket) talking about rapid prototype development and that sparked a huge interest in me. Ever since I have been investigating and involved in rapid software prototyping and have learned a lot of lessons through experience, trial and error.

In the last year I have been working with various companies and projects to deliver working prototypes of software in one week! It can be done and in fact I argue should be done. I love the work that Eric Ries is doing with lean start ups. I share his opinion that you need to increase the learning of the organisation and test all your assumptions quickly so you do not waste resources.

Preparation, preparation, preparation

Everyone needs to be prepared in advance of work starting. Ideally a kick off meeting is arranged about a week before the start date and the whole team needs to be present. This should be a short meeting and will cover:

  • team introductions
  • the problem you are trying to solve
  • the scope of work (feature set)
  • the process for the week
  • the roles of the team members

What I have found is that after this meeting the rest of the week before development starts your subconscious mind will start to generate ideas, start solving problems and make sure you are ready when development starts.

Everything needs to be ready when development starts, the room you are using, meals, communications, servers etc. These items can eat into your valuable time.

Focus and prioritise

The only way to get to a finished product in one week is to make sure that you only build the bare essentials. This means heavy prioritisation and focus on what is important.

First focus on the problem you are trying to solve and then make sure that you product solves that problem elegantly. Every feature should solve the customer’s pain or it should be removed from the feature list.

This is the idea of the minimum viable product (MVP), the smallest feature set you can get away with to solve problem. You are not looking to the world here and there will be plenty of time in the future to add features and polish the tool once you know you are on the right track.

This is where the project manager needs to really steer the ship and make sure that progress keeps to the agreed tasks and features.

30 minute meetings

If you must have meetings they should be kept to 30 minutes maximum, this will keep everyone focused and prevent people going off topic. It is important that someone chairs the meeting to make sure that the schedule is kept to and that the focus on meetings is making decisions and moving forward.

Most of the time we have the rule that once a decision has been made in a meeting then it is final, you do not have time to constantly debate the options and waste precious brain power pondering if you have made the right decision.

Mixed team of experts

In order for the this process to work you have to only have experts in the team, people who know the tools and processes that you are using like the back of their hand. It is also helpful if the team have worked together before so they know each others working practices and styles of working.

It is also essential to have a mixed team ideally consisting of:

  • 1-2 developers (who build the code)
  • 1-2 designers/ front end developer (to design the screens and build front end)
  • 1 project manager (manage communication, brainstorms and tasks)
  • 1 client (at least one member of the client team)
  • 1 customer (at least one customer)

Feedback loop

The whole objective is the make sure that all that the product you build solve the needs of the user. This can only be done if you have end customers in the room working with you to give you feedback.

It makes no sense to write hundreds of lines of code only to find that the customer is actually indifferent about the feature. This feedback loop can be short circuited by using wireframes, html mock ups and design screens to make sure the interface meets the customers needs before you spend time building it in code.

No distractions

This seems like an obvious one but in practice is hard for people to do. Ideally no emails, phone calls or other communications outside the project. You need the team to be totally tuned in to the project so that all their conscious and sub conscious thoughts are tuned into making progress and moving forward.

Automation tools and frameworks

You do not have the time or the energy to re-invent the wheel, so you need to automate and remove common or repetitive tasks. This is where a good framework like Django (or Rails) can make a big difference.

We also have a library of code we can call on, CSS snippets, user authentication, common JavaScript libraries that also reduce repetition and give us a huge head start.

Where possible use web services or common webservices such as Amazon S3 or the Yahoo developer tools to offload some of the development.

Don’t work all night

Initially we thought that it would be a lot better to work every hour of the day as time was so limited, but we soon found that actually that was not the case. Having time off in the evenings and getting a good nights rest meant that you could actually do more with less time. Now that does not mean that sometimes you will not have to work long hours especially if things are not going to plan but it should not be the norm.

Conclusion

Building a prototype in a week can be done but it requires a lot of discipline, focus and an amazing team to make it happen.

The only way to make sure your company succeeds is to make sure that you are making products that solve your customer’s need. The faster you can get feedback from the customer the better, don’t spend months writing code only to find it actually is not fit for purpose. Get something basic product to your customer, learn from their feedback, refine your product and then continue this cycle.

As I said at the beginning you need to increase the speed of your company’s learning, the faster you can learn and make adjustments the more relevant your product will be to your customers.

The Problem With Unsupported Software For Businesses

Monday, March 22nd, 2010

Recently I have been trialling some content management systems for some very small websites that do not warrant custom development. I have looked at some of the big players like Expression Engine, Joomla, etc as well a lot of others.

In the end I found one that I really liked the look of, it seemed perfect for my needs so I tried to install it. I went to the set up screen and it was totally blank, so I followed all the advice on the forums, read the docs and still had no luck.

Here is where things went wrong, I immediately went to the site to look for support and there wasn’t any support only a support forum. So I posted a message and waited, and waited. In the end I got three replies pretty much all saying the same thing; read the docs and post your server config, both of which I had stated in my original post. After two days of waiting I gave up and chose another solution that had better support.

The lessons here are that if you cater for businesses you need to:

  • Solve user issues quickly
  • Provide support (even if you have to pay for it, I would have paid for support)
  • Provide multiple channels for a user to reach you, having a forum is not enough
  • Give people an idea of time scales, there is nothing worse than not knowing

Please do not get me wrong, communities and forums are superb, and I am grateful that someone took the time to reply to my forum post. But they are just not good enough if you have a business requirement that is time sensitive.

You need to know who your users are and what is important to them; price, time, operations, task completion etc and make sure you communicate how you solve issues if they arise.

When Did Failure Become Desirable?

Wednesday, March 17th, 2010

I have been reading some books and blogs recently and I have come across a recurring theme of failure:

  • Fail fast
  • Fail often
  • Aim for failure
  • Fail in order to learn from your failure

Listening to some people at events recently it almost feels like people are aiming to fail! Almost like it is a badge of honour.

Don’t get me wrong when things go badly lessons can be learned, but I would much rather things went right. I think some people overlook that fact that you can learn a lot from your successes as well. Find the things that are working and do more of them.

If you aim to fail chances are you probably will. If you aim for success chances are you more likely to reach your target.

Try the success cycle instead

So I suggest a new formula, a success cycle:

  • Aim for success
  • Succeed often
  • Learn from your successes
  • Do more of the things that are working
  • Rinse and repeat

Start Up Business Phases – Early Stage, Seed Stage to Rapid Growth

Wednesday, March 10th, 2010

I have been consulting recently with some start ups that have all at different stages in their development cycle. Something that I have found some business founders overlook is that your strategy, approach and focus need to change depending on the phase your business is in.

Typically you would classify your business into the following:

  1. Conception or Early Stage
  2. Seed Stage
  3. Series A (or Funded) Stage

You need to know which stage your business is and align your operations and strategy to your phase.

Stage 1: Conception or Early Stage

Funding: Usually from savings or friends and family
Revenue: None / very little
Team: 1-3 people (founders)
Financials: Keep cash burn low as possible

Objective: Build the product

In this bootstrapping phase you are mainly focused on building the first version or prototype of your product. It is a lot easier to test your concept and raise seed funding if you have a tangible product. This is why I think it is essential that the founding team have at least one or two people who can build the product themselves; you cannot have founders who are all ideas people at this stage everyone needs to contribute to the product.

Quite often in this stage you will be working in small home office, bedroom or out of your garage.

This stage is about also about finding your working styles with your co-founders as usually you will not have employees apart from the founding team. After this stage you will really know if you can work together and you may find that you have to make the tough decision to remove one or more of the founders.

This stage is all about doing and action, there should not be lengthy debates or lots of planning, you need to build your product and build it fast. Think about the features you want to have in your beta version and then cut the feature list in half, you want to have the minimum viable product for your launch.

Stage 2: Seed Stage

Funding: Friends, family, angel investors or seed capital
Revenue: None / very little
Team: 2-7 people (mostly engineers)
Financials: Prove revenue model

Objective: Prove the concept

Now you have a working prototype you need to take your product to market and test your proposition. The whole approach is build, test, refine and build again in short cycles. You need to really communicate and listen to your early users and offer incentives for feedback.

At this stage you may have taken on seed funding so you can grow your team, most of your team will consist of software developers and designers as your focus is on developing and refining your product. I have seen some venture capitalists that value your business on the number of developers you have and then reduce that value for every person in a suit on your team!

This is a testing and feedback phase that applies to the whole of your business. You will want to test your marketing messages, marketing channels, operations practices and revenue model. You should start building your revenues and work on how you are going to refine your revenue model in later stages of business growth. This stage will prove if you have a viable business to grow in the future.

If you need to you should be looking at raising Series A funding, this can take several months so you need to start early before you run out of cash.

Stage 1: Series A (or Funded) Stage

Funding: Operating profit/ venture capital
Revenue: Moderate
Team: 7+ people (balanced team of engineers and business people)
Financials: Break even and move towards operating profit

Objective: Grow the business

Now you should have some real momentum behind you. Your product should be polished and you will have gone through several iterations using customer feedback. Your objective now should be to grow your customer base and grow your revenues (and operating profit).

Your team should start to become more balanced as well with a better mix of business people and engineers. You will need some people to deal with the sales, marketing and commercial side of the business as well as the technology side. Do not fall into the trap of growing your team too quickly as you may find that you run out of cash sooner that you think.

At this stage you should start to become self sufficient (if you haven’t already done so) and move from break even to profit. You need to generate enough profit to make your business viable. This is the really exciting phase where you really prove your worth and build a business for the long-term.

Django Developers and Coders

Wednesday, March 10th, 2010

If you are a Django developer check out Django Foo, I have been writing some posts on there recently with the rest of my team.

Everytime we solve a problem that is not well documented we post our solutions on there. It has started to become a really good resource for the community.