San Skulrattanakulchai
Feb 15, 2018
A piece of software starts with a customer’s idea.
It’s the developer’s job is to turn the idea into working code.
Code must satisfy the customer. If your customer’s unhappy, everyone’s unhappy!
Delivered software must be
as needed
on time
on budget
How much will it cost?
How long will it take?
Start with rough ideas about what the customer needs.
Waste no time. Start cranking out code.
After some period of coding, deliver the software.
The customer never gets to see the software until it’s finished.
The resulting software is usually a big mess.
If your customer is not happy, you built the wrong software.
Hidden assumption:
The developer thinks she is building what the customer wants with no feedback until she thinks she is finished.
Tom is a world-famous trail guide who provides guiding service and sells trekking equipments.
He wants to have a web page for his company.
He hires you to implement the software.
Tom says, “The customer should be able to search for trails.” What does he mean?
The customer should use a map of the world and then enter an address to search for trails near a particular location.
The customer should be able to scroll through a list of tourist spots and find trails that lead to and from those spots.
The customer should be able to enter a zip code and a level of difficulty and find all trails that match that difficulty and are near the zip code.
Tom says, “The customer should be able to order equipment.” What does he mean?
The customer should be able to view what equipment Tom has and then create an order for items that are in stock.
The customer should be able to order any equipment they need, but depending on stock levels the order may take longer if some of the items are back-ordered.
Software development is not guesswork. You need to keep the customer in the loop to make sure you’re on the right path.
If you’re not sure what the customer wants, or even if you think you’re sure, always go back and ask.
Questions to ask
what do you mean?
can you give me more details?
what are the options about how I might implement your ideas?
The technical term for this process is obtaining the software requirements.
The secret of getting to the goal is iteration.
Without iteration, your software can deviate a lot from what your customer wants.
With iteration, your customer helps keep you on the right track
No matter how big the team, or how long the project, iteration is always one of the keys to building great software
Iterations cannot be compressed into one long meeting. The customer often does not understand what she wants herself!
Everybody who has a say in the software needs to be involved in the process.
Can start first iteration when you have some running software. Meet every 20-30 calendar days as a rule of thumb.
Each iteration is a mini-project.
Each iteration is quality software.
Your iteration length should be at the right tempo for your project.
The customer will change things up.
It’s up to you to make adjustments.
Estimate the new features.
Have the customer prioritize the new features.
Rework your iteration plan.
Check your project deadline.