Posts Tagged ‘agile’

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.

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.

What Does Agile Look Like?

Monday, June 15th, 2009

So you think you might already be using an agile philosophy. Here is my take on what agile looks like.

Agile Teams

It’s a team effort, agile teams tend to be small (ten or less people), they work very closely together in the same location if possible sharing the same code and development tasks.

There are short daily face to face meetings, with each person speaking for a maximum of two minutes on what they achieved the previous day and what they are working on today.

Working Software

People focus on outcomes not blame. The only measure of success is working software.

Delivering What Users Want

You work very closely with the client showing them the latest version of the software early and often to get constant feedback.

Business owners should make business critical decision, do not guess what the user wants ask them. Keep records of these discussions and your project progress in a wiki or blog that everyone can see.

Feedback

You get constant feedback from the code you are writing via automated build and automated and continuous testing. You will refactor often to make the code more usable and elegant.

Iterations and Sprints

Work progresses in small iterations (small blocks of time one to two week sprints), where you identify a set of features, implement and release them. Time boxing means that during an iteration features can be skipped but the deadlines that cannot be extended. All the time demoing the iteration to the client to get feedback to check you are on the right track.

Business owners and the development team should work at a pace that you can continue forever.

Agile Software Development

Saturday, June 13th, 2009

In 2001 seventeen people got together to discuss a better way to develop software, these people coined the term “agile” and developed the agile manifesto to describe a re-focused approach to software development. The main values of this new approach were:

  • Value individuals and interaction over process and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change rather than following a plan

“Agile development uses feedback to make constant adjustments in a highly collaborative environment.”

Basically it was a shift from a plan based approach to a more continuous natural style. You expect the requirements to change even late in the project and that is ok as you have a flexible results driven approach; responding to change is more important to following a plan.

The project is released in small phases to the client with constant feedback from the client to check you are on the right track. Constant communication between the team, the client and the business decision makers are crucial to the success of the project. Success is determined by working software that the fulfils the users needs.

So how do you know if you are an agile company? I will detailing my thoghts on that in the next post.

Introduction to Development Methodologies

Thursday, June 11th, 2009

I find that a lot of developers stick to one development methodology. Now while I personally like development methodologies as they have been created on best practice and proved empirically in real world projects, you need to learn to use the best tool for the job. I tend to mainly lean towards agile development.

The main development methodologies are:

Agile

Agile started from the agile manifesto and is designed to deliver the software your customer needs when it is needed. Unlike waterfall it allows you to react to the inevitable change in requirements even if they are late in the project. It is a set of values that cover planning, designing, coding and testing. Branches of agile include extreme programming (XP) and scrum.

Rational Unified Process

This is an iterative software development process developed by a IBM. It is not a rigid process but more of an adaptable framework that is tailored to the project and organisation.

Waterfall

This is a sequential approach to software development and typifies the Microsoft dominance of the 90s. You move from one phase to the next, as you do the previous stage is set in stone and cannot be changed. E.g. when you move from requirements to design you flow down the waterfall and cannot go back up.

I have never worked with waterfall but I have experience of the rest and will be sharing my thoughts over the next few days.