Using Human Actions to plan projects instead of misconceptions

The Rub

I work regularly with a few agencies, and small companies, and more times than I can count I set a request for work. “We would like a website built.” So we have a brief discussion, or email banter, and all parties have a series of preconceived notions (many times their are not 2 parties but multiple parties in a project). I setup a work order and get to work. Next we get 25% of the way done, and then the client has some changes, expanding the job requirements by 50%. Then I say this isn’t in the work spec, the client is not happy, they see it as we are gouging them, or not fulfilling a basic requirement, or something like that. The other side of the coin, I had a co-worked who ended up not up charging for changes for a project, and was working for $20 an hour - Which is less than what he spends for taxes, and health insurance, and tools. By the end I have seen where all members of a project walk away frustrated and feel taken advantage of in projects.

Agencies

I love agencies, in fact I get a healthy amount of work from them. The issue that I have seen multiple times is that a client goes to an agency, for a project to be built. They then outsource a project to another agency, from that point, to another group, and then finally to a independent contractor or a worker. The worker makes a bid of say $4,000 for a project, by the time it gets back to the client it could be a $16,000 - $20,000 project. When a client wants to make a change they say hey I’m paying good money, you guys need to do this. The worker, says I bid for 2 week’s worth of work, this change will cost me 2 days worth of time, it is going to be a up charge.

Who’s right here? A the client - who feels entitled to make perceived small changes (though small changes can be relative here.) The worker - who discovers that a change can be an extra week’s worth of work, because it demands a total refracting of the project. Or the agency who is deeply invested in the project. They manage the clients, they are involved in maybe the graphic design of the project, and they are using up hours on this project.

In my opinion all parties are right. They all from their own point of view are correct. I think from doing these projects backwards, as I have done for the last 10 years is the issue here. The problem is instead of spending a week up front sketching out what people want, it is a rush to production, and instead of a project taking a month, it takes 6 months. Instead of being in budget, we have many parties which are trying to make up for extra time, in this case what we are bartering is time.

I decided 6 months ago that for me to work a paradigm had to be changed.

Behavior Driven Development

About 6 months ago I started to explore Behavior Driven Development. Basically it sets in plain language the goals of a project to be performed. See wikipedia for more info on BDD. Probably the most popular BDD framework currently is cucumber, and I think it is a great framework. But in my opinion it also doesn’t meet the initial level of project overview. To get the project laid out, with a correct budget, and timeline, I think that BDD needs to be done at the earliest stage possible. That is when the client comes to the agency. Before any budgets, before any mockups, before any contracts. In fact right after the initial meeting is the correct place to start.

A Simple outline

I don’t want to give away my whole strategy, nor would I say that I have perfected this process yet. But I have used it with 2 clients on major projects, and am currently working with a client from initial idea using this model, and overall it seems to be the best formula for building a web application, that I have found.

  • Step 1 thought bubbles

    After an initial meeting, take what the client has given and create a series of thought bubble about what the client has told you. I usually send these notes to the client, to just make sure I got the project correctly.

  • Step 2 - User Usage Diagram

    In this step we layout how we want a person to interact with the application. E.g. Bob wants to share about his new car…. A lot of ideas are able to be fleshed out, quickly. So take a project I worked on last month, the client wanted an iPhone app, with some data coming from a DB. Well 1/2 into the project since we didn’t really have this fleshed out before hand, the client said he expected a web UI to manage subscriptions, ads and data. This was totally new to us, and not part of the original spec. But if they had done some usage diagrams to start with then that would have been part of the original bid. Instead of tweaking the entire project to work with a website. I came in late on that project and quickly built up a web ui, but even that changed a few times.

  • Step 3 - Create a todo list and a timeline

    Now that the client has agreed to a basic usage diagram, we next setup a todo list, with such information such as timeline, DB tables, work spec, etc. It is after this information is setup we can give a bid. All in all we have only put into this project a small fraction of the work, and after less than 1 weeks worth of work, the client know what they are asking for, as well as has a todo list. Even the agencies can now get involved in the project and begin working on their parts. Also now when someone bids on part of the project they can have item A - $400-600 item B - 900 which is taken straight from the usage diagram, which the client and the contractors have all agreed on up front. Everyone involved on the project are speaking the same language.

  • Step 4 - A model -

    Since I primarily deal with web technologies, I next like to build a quick model. This model is for the client to get a overall feel for how it works, as well as let the client, and stakeholders figure out what they want. This model will be a totally insecure website, it will use a tool like Rails scaffolding to quickly build the application. Also at this point it should be done with a few visual items as possible such as colors and logo. Some JavaScript interactions can take place if they help give an overall enhancement to the application. But overall we are about simplicity. All parties can be involved in changing the scope of work, but before actually building the project isn’t this the time to do it? I think so. The key here is to get at least 20 users involved in trying the application out.

    Ideally I think this would be a perfect time for a bid, but so far no one has taken me up on it at this point. Since actually having a test model it would be nice to wait until this time for a final spec. Overall, we are looking at around 2-3 weeks total work here. Not bad for a functional sample application.

  • Step 5 - Graphic design & population -

    All members of the team are interested in getting moving on the project, with a sample project built, we can now begin the overall branding of the site, as well as start getting the data together for the application.

  • Step 6 - Beta release

    Once the application is built its time for beta users. I really like invitation systems, and gathering as much feedback as possible.

  • Step 7 - Public launch

Example User Usage Diagram

Now without giving away to much about a sample application that I’m currently working on. Here is a screen shot of part of a usage diagram. The story goes down the left hand column - Behind the scenes interactions, questions and comments are on the right side of the page. For a good picture of the project, I usually build one of these, show it to the client, and then have the client build a second one. While they are doing it, I build another one, and then we collaborate and discuss these as a starting place on the project.

User Usage Diagram

Conclusions

Overall this is totally different than I have seen any other project built. Instead of a client spending 10k and finding out that they can’t do the project. This model will cost 2k to get started. Overall we will have a true outline for the project, and have well managed expectations. Everything that we are missing in to many of these projects. Overall, I wonder what others think. Overall, I this whole process has really helped the clients who I have used it with, and as always if you or your company could benefit from this service feel free to send me a email for a quote.