Archive for May, 2010

People Leave Your Company, That’s Life, See It As An Opportunity

Thursday, May 27th, 2010

Just a quick thought today on building your team when people leave.

The people who work for you are one of the most important investments that you have in your company. You should spend a lot of time and investment to make sure you have a happy and productive team. Recently we have had a couple of people leave the team, for personal and professional reasons and this can be very hard to take if they are key to your business and it can feel like it will be impossible to replace them.

I was once fortunate enough to be given some great advice from Sir Ronald Cohen who said when someone leaves your company you should see it as an opportunity to replace them with someone even better. So if you lose a developer, replace them with an even better developer, in this way you find that the quality of your team will improve at a much faster rate. This is very good advice but it is easier said than done.

From Idea To Business In Three Days Using Minimum Viable Product

Wednesday, May 19th, 2010

I have been reading a lot of Steve Blank articles at the moment and I was really looking for an opportunity to experiment with his idea of Minimum Viable Product, so we invented an internal project to work on over a long weekend. What could we achieve in just three days and how would the process work? It was a pretty crazy experience and this is a quick overview of what we did and how we did it.

You can see the final product here: http://hosting.djangofoo.com/ not bad for three days work!

The idea

We are a Django shop and find it hard to get simple hosting for clients. What we needed was a simple point and click solution for people with no technical knowledge at all, so that is what we built.

Planning

The first step was the planning phase which took an hour and we did this one week before we started the project. Each person in the team was assigned an area of responsibility and the planning was around the high level design, features, investigating the technology and the existing competition. Then for the next few days we all did some thinking about our areas and let the ideas distil in our sub conscious.

Day 1: High level structure

Day 1 Design. The first iteration of the design has all the elements and a global design but the messaging hierarchy does not flow, it appears too jumbled.

The first day started at a crazy pace as the enthusiasm was at its highest. We had a quick briefing session in the morning and then we all set off to our assigned tasks. We had documented the high level features in advance so we all knew which tasks were our responsibility.

We were a three person team, spilt into three areas:

  • Liza (an incredible designer) worked on the brand and the global styles of the interface
  • Davo (super coder) worked on solving the huge technical problems of how to set up the server, permissions, limited file space, writing bash scripts to create accounts
  • Me, I designed the data model, bootstrapped the project, wrote the models and set about coding the application

We communicated mostly by IM even though we were all in the same office, this helped us keep focused and keep our concentration.

Defining the features, proposition, wireframe and setting up the server, bootstrapping the code base, code snippets

By the end of day one we had completed:

  • A rough interface and brand
  • Wireframed all the pages
  • A feature list assigned with priorities
  • High level marketing messages
  • The skeleton code structure
  • The data model
  • Server set up and configuration
  • The ability for users to change Django version
  • A basic auth systems for users to sign up and login

Day 2: The detail

Day 2: A more polished design with better message hierarchy. There is a real visual style that can be carried across the rest of the site.

The day started with the same amount of energy and we spent the first part of the day validating the logic we had come up with on day one.

We also made some changes to the data model based on the design decisions we have made whilst coding. It felt like more of a details day, there were lots of questions that came up and lots of small issues needed to be addressed.

A large part of the day was spent working on the visual style and making sure that the right messages and visual cues were delivered to the user.

By the end of the day we had completed:

  • A more polished design, visual identity and brand
  • All the text pages content
  • All the user login pages, recover passwords etc
  • The content and elements for the logged in user pages
  • The ability for users to sign up and create their hosting environment, logins, FTP passwords etc
  • Bash scripts to create new users and folders
  • The base HTML and CSS styles
  • Mod WSGI reload when changes are made to the source code

Day 3: The launch

Caption here

In true MVP style we have not yet implemented the payment system, we merely get an email if someone attempts to pay.

Throughout the project we decided that we wanted to be the “easiest Django hosting in the world” so this totally guided our decision making. For every feature we asked ourselves if that will help to make the app the easiest Django hosting in the world. I think the project was defined by what we did not include rather than what we included.

By the end of the day we had completed:

  • All the HTML and CSS for all the pages
  • Integration into PayPal
  • Admin functions
  • Manage.py tool
  • View live logs
  • Security patches

Lessons learned

I think the main lessons learned were actually nothing new but they re-affirmed a few things:

  • Be ruthless with your features if it is not essential then move it to the wishlist
  • If a feature is taking more than about 2 hours then find another way or abandon that feature
  • A framework is a must, you do not have time to reinvent the wheel
  • Small team (ideally two developers and one designer)
  • It is very important for someone to co-ordinate the project
  • Don’t worry about not meeting all your users needs you can always add things later
  • Think of clever ways to get feedback and save time. When we looked at our tasks and times we thought payment integration would take quite a while so we skipped it and simply have an email alert if someone tries to upgrade

One of the biggest lessons I learned was to build your decision making around your core proposition, for us it was “The easiest Django hosting in the world’s”, anything that did not fit into this philosophy was removed, even at the cost of alienating more advanced users. Be bold and focus on your core customers don’t worry about being the solution for everyone. We knew from early on that people who wanted a high level of customisation and were advanced users would not want to use our service, that is ok we are not building a service for them.

Stop Planning and Start Doing

Wednesday, May 12th, 2010

Just a quick post today as I working on a project where I am following my own advice of this blog post.

Planning is guessing and guessing takes time, effort and ultimately does not help in making decisions. My mantra is think things through and then jump in and get on with it, make a prototype, launch that business, build that product you have been thinking about. If you have the right approach the time it takes you to actually build something is the same amount of time it would have taken you to plan it.

Build something, anything and then get real life customer feedback and validation. Then learn from that feedback and iterate again. Focus on one thing, do it, test it and decide quickly on the next iteration.

So try:

  • Less planning
  • Less documentation
  • Less diagrams
  • Less meetings
  • Less strategy

Make it happen and you will learn a lot more than you ever will planning.

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.