Agile vs Scrum vs Waterfall vs Iterative...

- Much more reliance on the customer to prepare their 'stories' before anyone actually starts working on them, this has been a huge blocker and slowing down the entire process.

What is a story? How big does it have to be?

The main issue is that some people think they need to define every little bit into infinite detail.

The epic user story I used to write was relatively small, including the required definitive tests to demonstrate that it was done.


The secondary is that delays cost money - however if you're only delivering "done" and being paid for that work then any delays should be part of the contract as a penalty. At the moment the client being slow is simply costing you money with idle fingers burning cash. That should be a penalty in your agreement. You may be able to substitute tasks but if the tasks aren't ready for a sprint then I would look at why? Perhaps a task to "define" in the backlog that means the engineer works with the customer to drive it - then you can point at the time it's taking directly with a define task with your customer.

Working as a set number of developers for a year is another way, but as a client I found that it doesn't incentivise the third party development company. It simply means whatever they do, and how badly they do it, they get paid.


If the client has to dovetail the agile process into a traditional process - then the way the requirements are being defined may need attention. Simply putting it all in a word document or DOORS may tick all the process boxes but it's not really delivering business value. Process for process sake.

The role of an engineer within agile/scrum is wider than "the monkey presses the button". Some development teams expect to be spoon fed all the details and put down tools until what's perfect is fully documented - this demonstrates a fundamental misunderstanding of agile. If anyone takes this approach with me they tend to feel very uncomfortable - their responsibility to get off their butts to drive the thing forward. If the customer is blocking that should be very visible to them..
 
Last edited:
Just employ a lean philosophy in the organisation and try and bring about a cultural change. Workers with sort out the problem quicker than anyone else.

Use six sigma for the data to back up the ideology and the qualification to get a chamption and buy in.
 
Say how long it will take you to build a solution.
Write a plan that says it will be built in that time.
Build it in that time.

Job done.

:p
 
Basically it all comes down to breaking your epic up into good sized storys that don't contain shed loads of work, and then this makes it possible to do things in parallel and get your team to all be working on stuff that all fits nicely into a sprint.

I think his point (and apologies if I'm wrong), is that even with small simple stories you can't work in parallel.

Say for example the user story involves creating a login screen for a website.
On day 1 the developer can start coding and the tester can start writing test cases. Assume they both have finished their respective task at the end of day 2. So far so good, nice and parallel. But what do they do on day 3? Obviously the tester starts executing their test cases, but what does the developer do? They either move onto the next task or sit and wait for bugs to be raised? Either way they're not in parallel, and the tester will always finish later than the developer as they can't complete their task until the developer finishes theirs.

As you can tell, I'm not familiar with agile so I might be way off the mark...
 
Any discipline is only as good as the people directing it IME.

I did Prince 2 and one of the few things I remember was the first morning of the course, "You'll rarely, if ever, need to use all we're about to go through on one project. A good PM will pick and choose the elements that are required for their specific project at that time and bearing in mind their 'customers'."

Too many people are just book learned with no real experience of PM or a real understanding of it, it's just a tick box exercise of getting all the "right" documents and meetings in place from a crib sheet ripped from A Dummy's Guide to <insert method being used>.
 
I've done APMP, Prince2 Prac & CSM, and they all have their merits... however, having recently changed organisations part of my role is to introduce/implement SCRUM for software dev projects.

So far, the SCRUM work has been very well received and allowed us to react to changing business requirements in a way that waterfall would never cut the mustard. However as others have said, trying to use SCRUM outside of software development gets a bit tricky, and you end up trying to 'shoe horn' things to make them work. You need to live and breath the core values of SCRUM to make it work, don't cut any corners and make sure that people understand all of the roles.
 
That quote in the original post doesn't make sense. If I'm understanding it correctly, the requirements, design, development and testing for a discrete package of work is supposed to finish in a sprint? I can't see how that would work in practice.

I've worked on a number of projects where we all try to work agile but in reality the devs work agile and the BAs work waterfall, so we get a kind of hybrid approach. The current project I'm on is a bit more agile but we don't do any of the poker or retrospectives and it's literally churn out functionality every 2 weeks.

The beauty of it though is that the client gets a product quicker, they can provide feedback earlier, and they can prioritize work as needed. It's more of a framework that you can adapt accordingly.
 
I think his point (and apologies if I'm wrong), is that even with small simple stories you can't work in parallel.

Say for example the user story involves creating a login screen for a website.
On day 1 the developer can start coding and the tester can start writing test cases. Assume they both have finished their respective task at the end of day 2. So far so good, nice and parallel. But what do they do on day 3? Obviously the tester starts executing their test cases, but what does the developer do? They either move onto the next task or sit and wait for bugs to be raised? Either way they're not in parallel, and the tester will always finish later than the developer as they can't complete their task until the developer finishes theirs.

As you can tell, I'm not familiar with agile so I might be way off the mark...

So...what if the developer is the tester? And the story is only complete when they have coded and tested their solution? I think is partly what the quote is getting at, a sprint delivers production ready code that within a sprint cycle has gone through all the phases of a traditional software development lifecycle.
 
- Much more reliance on the customer to prepare their 'stories' before anyone actually starts working on them, this has been a huge blocker and slowing down the entire process

That one surprised me a bit as it doesn't sound particularly agile. I would have thought it would have been the other way, with stories being perhaps a bit flawed/basic to start with but then challenged and iterated during the course of development. Then again, it depends on the type of development being done. In disciplines such as data warehousing where rework is typically costly/risky/time-consuming, there is a greater need for clarity when entering into an iteration.

Going back to the OP, really that soundbite is just talking about a utopian, pure agile form whereby all resources would be working in parallel and you'd be delivering fully complete artefacts in one go, rather say than say Requirements>Design>Code>Test as seperate phases. The reality is that it will not be instantaneous but should be condensed down into a small timebox
 
Agile is great if you are given the time to reduce the inevitable technical debt, either with time between sprints or dedicated user stories.

My favourite thing about agile is being able to demo what we have worked on to the product manager and have them come back in future with user stories containing alterations/changes as required as we go rather than a mass of changes after a major chunk of development.

The last project I helped migrate to an agile workflow we got more achieved in the following 6 months than the whole year before, mainly because of the faster feedback loop.
 
Kanban is also good if you have a 'waterfall' step by step approach. It's possible to even couple agile and kanban with the kanban supporting different groups. However when used in this way it does breed the over-the-wall issues like doing just enough to dispense with the problem, then people start putting defensive checks in place and it all gets into red tape and no better than a project.

Kanban works better when you have things such as customers onboarding etc in processes where it's not self-service - using it to demonstrate the state of customers.. however using it as a boundary marker for individual teams authority is (in my opinion) and example of incorrect use. As each team's definition of done ends up being "getting over the wall and for it to be someone else's problem".

Lean works. Although there is justification for having a conceptual design for some systems that is part of the deliverable. A high level design means people can get up to speed quicker in larger systems. It's not an API document, it's concise, exacting definition of the components.

In the past I've developed with many methodologies (anyone remember RUP, SSADM or formal specifications?), the reality is that they all need the concept of delivering business value by understanding the work that needs to be delivered, and then demonstrating it's delivered.
They all just define and demonstrate this in different ways.
 
Is your client the British government by any chance? They're pushing Agile methodologies big time.

I've only ever worked on Waterfall and V-Model projects - V-Model was far and away the best.

No it's not the government by any stretch!

That one surprised me a bit as it doesn't sound particularly agile. I would have thought it would have been the other way, with stories being perhaps a bit flawed/basic to start with but then challenged and iterated during the course of development. Then again, it depends on the type of development being done. In disciplines such as data warehousing where rework is typically costly/risky/time-consuming, there is a greater need for clarity when entering into an iteration.

In fairness, the process is only 3 months old and the culture shift is still happening, my mini-rant above was about it's current state. Give it 6 months and I may well be singing the praises of agile methodology.

One nice change is monthly scheduled releases into the production environment containing the previous sprints completed work, before it was very much 'it's done, get it in!!', which can be quite strenuous on personal time/sleep patterns.
 
Lean is fantastic, and my limited involvement with Kanban and SixSigma is positive too. I don't rate iterative deployments purely because of my own live services background. As the receiving manager I was accepting into live as part of a transition organisation. Iterative just means the responsibility is on the receiving managers to poke holes in each attempt, get the feedback to the devs and have them run around the loop again. Great for them to have the bitesize chunks and quick feedback, but rubbish for us that are burning hours trying to get what it is we need (and even then we weren't the client, and we didn't have a direct relationship with the client either).

An iterative waterfall approach with short timelines and formal feedback loops does work, but it doesn't have the speedy start that agile has purely on the basis that what's required needs to be baselined.

In an agile environment you can't have the hands-off approach that too many orgs have, and especially so when the work is outsourced. I'm working with a major retail business in the UK at the moment and they have outsourced almost the entire of the IT business to an external consultants, and then the service design to another external provider. Having been on the account a week it doesn't feel like the closeness of working relationship is there to engender the required trust to work effectively in scrums in an agile delivery.
 
So...what if the developer is the tester? And the story is only complete when they have coded and tested their solution? I think is partly what the quote is getting at, a sprint delivers production ready code that within a sprint cycle has gone through all the phases of a traditional software development lifecycle.
In that case you need to make sure you don't give yourself too bigger piece of work that you can't ever complete the storey.
 
So...what if the developer is the tester? And the story is only complete when they have coded and tested their solution? I think is partly what the quote is getting at, a sprint delivers production ready code that within a sprint cycle has gone through all the phases of a traditional software development lifecycle.

That makes absolute sense, and is the only way I can get it straight in my head. But in reality having someone who is skilled at both developing and testing is quite tricky and I don't think that I've ever seen a job advert for a joint dev/tester role in an agile environment. I think most places will still have testers and developers which leads me back to my original confusion.
 
Agile is very powerful when used correctly. It requires a shift in culture and working practices which is not easy to implement but when you have full feature teams that work well, you can produce much better software.

I've worked in Scrum teams in the last 3 years or so and tbh, I wouldn't want to use anything else.

Agree that Agile is great. Where I work currently though it seems to mean 'start work on a project and just make it up as we go along, occasionally check in with the stakeholders'.
 
Back
Top Bottom