Agile projects have become waterfall projects with sprints
thehosk.medium.com
thehosk.medium.com
I have had Agile/Scrummy Agile/FrAgile/Enterprise Fragile shoved firmly down my throat in every single job I've work since 2006. Rather than actually let the software professionals do their job, other non-technical people insist on these poor excuses for a micro-management methodology.
Just this week, I was asked by our resident enterprise management consultant to put hourly estimates and actual hours worked on all of my assigned 20+ User Stories. He said "This is Agile 101! All of the best teams in the world do this! Follow the process!" Today, he wants me to add estimates and actual hours to my 20 Bugs and bug-fixes too, plus add tasks to each User Story explained what work I actually did. Nevermind that I'm the only developer 100% allocated to the project, so there's only one person to micro-manage I suppose!
Shouldn't commonsense prevail in these modern times? No? lol :-P
Edit: Is it possible for one to get paid just to rant about how terrible Agile is?
Is there a better way to do this than agile? No duh, but that's another topic. :-)
The common pattern I've seen is that everything is about estimates, which end up becoming deadlines. The management worry about them to the point of bloody-mindedness, at the neglect of gathering actual requirements from the customer. In my company, I work in a software department (I suppose we're an internal agency with just one customer). But, we can't speak directly to the customer and instead speak to another Project Manager (apparently because of "SaFE Enterprise Agile" policies), so we can't ask the customer what they truly need, and so the product isn't accurate, and neither are those estimates!
Entering a contract with a client based on an estimate without a large margin for error is a statistical failing, not a strategy one.
That said, I still think waterfall and other related variants are overwhelmingly the way to go. I've done both styles and the difference is night and day.
I have two problems with this.
One, almost all work that is easily estimated falls into the realm of trivial work. Most work is not trivial given the rapidly changing work environments. If it isn't the tech itself, it's the people around you and above you. If it isn't the people, it's some context which in common human fashion, has become overcomplicated to high heaven.
Two, because things change so rapidly and riskmanagement is the way it is, we are in a perpetual state of businesses trying to pressure one another into getting the best short term deals at the cost of almost everything else. How many times has a deadline not been met with it being critical? Not that often, most things can wait another month. So why do we keep making unrealistic deadlines? (Semi-rhetorical)
If there's some set date (eg. demo/launch at big industry expo) it makes sense keep that constraint in mind, plan work in small chunks, iterate, and always try to deliver tangible things needed for the demo ... and it also makes sense to periodically check in (let's say at the end/start of every iteration) how the demo is coming along ... and it again makes total sense to adjust course if it seems that progress is better/worse than expected ... and it makes sense to try to do this tracking and estimation in some consistent/rigorous way, instead of just gut feeling.
"And that's how story points were born". (Which is just a fancy name for reference class based forecasting - https://en.wikipedia.org/wiki/Reference_class_forecasting )
And, again, if there's enough reliable data it's possible to give educated guesses about how the remaining tasks compare to the already finished ones.
...
Now, doing this top-down, from day 1, expecting 100% accuracy, and whatnot is complete business madness, and anyone who does that needs to be thrown out of a fucking (ground floor) window again and again until this gets through their (apparently) very thick skull.
...
I've seen this done well. (Not the defenestration.) And seen this done horribly. The "methodology" is not magic, and it definitely doesn't make sense if the people trying to "do" it are senseless imbeciles forcing things they don't even understand on people whom they also don't understand.
Usually what's not trivial is how much to build and when (which is product design).
> it's some context which in common human fashion, has become overcomplicated to high heaven.
yes indeed :)
If business (and/or management) is too neurotic, that definitely will fuck things up and it doesn't matter what methodology you try to manage projects with.
I used to scoff at the first dictum of the agile manifesto (individuals and interactions over processes and tools), but it fits exactly these problems. Business has to plan and build on what Engineering already does, not try to force things down onto it. Management has to work with the people, not try to force the people into their own crazy world.
And if they don't, then out of self-preservation, leave.
I've literally had clients go "Hey, can you add search to the platform? Can't be that hard, it's just a single input field on google dot com".
Your task is to tell them that this is too big to estimate and needs to be specified better and broken down into managable chunks. Well ok, in this case, just telling them to sod off would've been smarter, but that's a different story.
Also the fact that you're alone and only you to do them means it will get done when it will get done and they should only prioritise items in a list.
Sorry you seem to hate agile and I could see why but hopefully some day you get to be part of an effective team with a common sense approach to agile.
Next we multiply by the number of points in the backlog and we have our delivery date. If you don’t keep turning out two points per day the project will be late and there’s gonna be a problem.
Estimating in points is just what the magician does so you don’t see what he’s really up to.
I think some of the root issue is the annoying micromanagement and lack of trust from non technical stakeholders. They need to chill out, but it's in their nature to be dicks somehow. They think if only they plug numbers into a spreadsheet correctly, huge savings will just pop out. But really they waste time and annoy the hell out of people. Maybe anti-agile is "fire all the nontechnical managers".
Agile as a system of prioritization isn't bad, but human factors mess it up a lot.
Edited: grammar
Sure. And now imagine that one of those people encounters your proverbial, arrogant, software solves it all developer. The results, if there are any to begin with, are glorious (gloriously unusable).
It's absurd how this extreme is used to justify micromanagement without recognizing how things have exploded despite micromanagement being the status quo. Haven't seen a single stereotype micromanagement scrum shop care enough about the consequences of letting a few cowboys loose only to have trouble hiring devs to fix the mess later (because no self-respecting developer wants to fix old code with near zero documentation for a pittance).
I have seen this transformed into "We don't need documentation, just work on a new feature".
I'm sorry you have to endure this :(
Any time you see a product manager plan 10 sprints ahead, you know that whatever that is supposed to be, it involves a lot of pre-planning before anything has actually happened. We used to call that waterfall. Planning is not actually a bad thing. It's just when those plans are unrealistic, infeasible, or very rigid that they become a problem. That was always the problem with waterfall. The plan was treated as set in stone and two months into the project it became a bad plan. That still happens a lot. People come up with bad plans all the time and then get sucked into believing in that plan. Being agile means having the tools to adjust the plan when it needs changing. If your PM sells a six month 12 sprint project four months before engineers even look at it, you know it's going to be a mess. The plan is probably wrong and the clock started ticking long before engineers got involved. But on the other hand, when you sell a project, there needs to be more than a "we'll see what we do and how long it will take". This fundamental dilemma was never really solved by agile.
I'm less concerned with agile as a noun or adjective these days. Everybody does some form of that; so there's very little point in splitting hairs over it. I'm more concerned with processes and practices. And as an engineer, cto and product manager, my observation is that processes are introduced when automation and common sense fail. Getting rid of unnecessary process is form of agility that is good. I'm always on the lookout for those.
When it comes to sprints, I treat them exclusively as planning horizons. Checkpoints where we assess where we are relative to the current plan and decide on what to focus on in the near future. We practice continuous integration and continuous deployment. The life cycle of a sprint and of a feature bear very little relation to each other. Work might start one sprint and then a few sprints later the change might get merged and deployed. Or the work is planned, executed, and shipped during a single sprint. Or even in between sprints. I define work here to cover the whole process of inception, business requirements gathering, design, implementation, and deployment. It's fundamentally an asynchronous thing. Features ship when they are ready, not when a sprint ends. Work on features starts either when planned or when prudent/urgent. Some things just can't wait and generally, I like short cycle times for work.
There is no need for synchronization bottlenecks in the form of meetings, commit freezes, sprint reviews, or other things we had to do in the past. Because we have asynchronous tools now. Up until the merge, the feature is not interacting or interfering with the software. After the merge, the CI/CD is fully automated. There's just one manual step: clicking the merge button. Doing this in an agile way means doing that without unnecessary delay but with all the due diligence of testing, reviews, etc. And it's nice if that goes according to a plan.
The litmus test is quite simple: are sprints planned more than one sprint ahead? If an organization has a schedule where they map work to sprints months in advance, they are doing Agile. If they just have a backlog and the only planning they do is in preparation of the next sprint, they stand a chance of being agile.
The agile manifesto is purely common sense, everything else is useless managers je*ing off.
There is no mention of estimates at all lol.
The really frustrating thing is that what's now called "Agile" devolved from "Extreme Programming" (XP) which was as appropriate as it was poorly named. I first heard of it sometime around '99 or so, long after I had put up with my share of frustrations around the expectation that every programming task could be predicted ahead of time on the spot (and that every prediction was a few hours). XP, on the other hand, was a reasonable pushback against mismanagement: say what you want and then get out of the way and give them time to make incremental progress toward that goal. There were no estimates or deadlines in XP. There weren't any in the agile manifesto, either.
However, what's now Orwellianly called "Agile" as "tell me right now on the spot how long it's going to take to deliver this vaguely defined piece of functionality so I can 'negotiate' it down to when I need it by"... which is exactly what XP and the agile manifesto were trying to explain was impossible.
In the teams I've worked on that had a good sense of the essence and spirit of agile principles, we've done extremely well. But it's always been context specific and very fluid.
Where it's been a mandate from on high, where it's dogmatically enforced and people say things like "that's not Agile": it's always been a bit of a shitshow. Usually it's just window dressing on old school command and control style management.
I've personally found almost all SCRUM teams I've been on to be more of the latter. Not all but close.
I think fundamentally business school is just teaching a more static model than what really makes sense with modern software development, and that pervades throughout and beyond the organization. Hopefully we'll see that slowly evolve as competitive pressures punish the less adaptive ones.
Some highlights:
> How many books, conferences, certifications, practitioners, evangelists, etc. does it take to make a paradigm, supposedly the paradigm, of working actually work?
> If the number one answer to we're using Agile but it's not working is "you're doing Agile wrong", then maybe Agile isn't the solution?
Today everywhere I work is now “Agile”, doing scrum or similar. It’s all lip service, it’s just another process and ceremonies over the actual spirit and ethos of the original manifesto.
The teams I’ve worked on who didn’t practice agile where actually the most “agile” in the spirit of the manifesto. The teams that did agile, by the book, with the ceremonies and all, dogmatically, doubling down on it, where the least agile in the spirit of the manifesto and not that productive or creative, often micromanaging every tiny detail in a Jira ticket.
Agile/scrum is a codeword for "we don't want to / know how to / haven't ever experienced long term planning, but we're going to do it anyway".
"Scrum" has become waterfall without the pre-work so it often descends into iteratively pulling estimates out of your asses.
Well, mediocre anything is usually better than bad something.
I have friend in a defence sector waterfall project. It was meticulously planned years ago, the design was locked. Production was started. Everyone knows it'll get scrapped for being out of date when it's finished on schedule in 2024. But they need to finish it anyway, because the deal is hard-locked and there is a big penalty for not delivering or delivering late.
But let's say that the problem they're solving doesn't exist anymore, tech advanced and you can get 90% of the same functionality with off the shelf stuff =)
But they also know they need it by Tuesday.
Sales use a sales funnel as their guiding organizational tool. IT operations and support do reactionary work on incoming tickets, and some rather routine and planned projects. HR is almost all routine paperpushing. Legal has to take the time it takes to answer the questions they get, because they have to answer correctly. Market analysis is timeboxed analysis - a spike in agile lingo. Hardware design is innately waterfall. Hardware production is just mindless repetitiveness as fast as you can go... and so on...
They're all different!
Backlog grooming can be done asynchronously, constantly. The PM can push a task to the top without making the developers work harder this sprint. They can go faster or get delayed, because they don't have to meet the arbitrary requirements of a sprint.
Personally I have noticed opposite scrum works if you run it by the book first and then start tinkering process based on retros and this "agile" does not work where you implement something that kinda looks scrum or kanban and kinda mess major part like estimates are hours etc. It is not ideal but low trust or multiple stakeholders it works.
In reality, software development doesn't fit neatly into this model. It's part R&D, part operational expense and part capital expense all at once (even in maintenance phase) - but it's impossible to distinguish which parts are which. The resulting product's value is constantly in flux, which means it is difficult to plan depreciation like a traditional asset.
Agile will always fail unless the way software is accounted for changes too, because the people at the top are looking at budget spreadsheets, not JIRA boards/burndown charts.
The problem isn't how the business solves software. It's how software dissolves the business.
Depending on where you are, you might find that allocating expenses as capitalisable is much more tax-efficient, hence the desire from the business (finance, specifically) to treat it that way.
You need a good PM who knows how to handle this for you. I did agile correctly in a large bureaucratic organization because our PM shielded us from those requests, and basically told the business that they could prioritize the requests appropriately in the next sprint planning session.
If they showed up and participated, they got to duke it out with the other competing business units about who got priority. If they didn't show up, we told them that their work was not prioritized because they failed to attend the planning session.
- You can only ever work on projects which are finished in one sprint.
- You have no idea how, when, or even why the big initiative you're working on will finish.
It's not practical to build a business this way, what happens when one team pulls priority and a different one next week? what happens when a multi-sprint project becomes a multi-year forever project?
You can get around this if someone (such as a manager/PM/lead) converts the sprint process back to a practical roadmap/design. However not involving the sprint team in this process merely robs them of autonomy. At best, the absence of autonomy for an individual in a scrum team might be the point of the whole process.
Absolutely lack in long-term thinking, goals and vision.
> It's not practical to build a business this way, what happens when one team pulls priority and a different one next week?
Someone has to own the project, and have the final say on priority. If the project is at risk due to shifting priorities, you need to escalate this to them for a final decision.
> You can get around this if someone (such as a manager/PM/lead) converts the sprint process back to a practical roadmap/design. However not involving the sprint team in this process merely robs them of autonomy.
If you have everything in your backlog, you can judge velocity to come up with an estimated timeline given all of the assumption at the current state. This isn’t a promise, it’s an estimate. When the business shows up to sprint planning and sprinkles around new ideas for high priority tasks, you always remind them that this means deprioritizing other tasks which will affect timeline.
> what happens when a multi-sprint project becomes a multi-year forever project?
Yes, at the end of the project you will likely have done something very different than what you originally put in your backlog, because the business will have changed their minds 100 times. This is the point! The point is to track close to building what they want, not to build what they wanted 8 months ago.
I like to say that the whole point in the estimates is to set expectations. At that point a discussion is had with the stake holders.
If you know the velocity of the team, because it’s actually been measured (a rare thing in my experience), you will have a good idea on what is actually possible within a time frame.
What’s the difference between this and “waterfall” then?
The difference between this and “traditional waterfall” is that you do this continuously, simultaneously with implementation, and not just once, up-front before building anything.
(At least that's the common picture of “waterfall” -- which of course proponents of various “agile” methodologies prefer to contrast their product against -- though IIRC Brooks or someone had proposed / recorded iteration on this in parallel with implementation long before the Agile Manifesto.)
Filter out the crazy (which can be the entirety) and then pass down to the team the best way you can figure to move things forward.
I managed to do this for a while. It's hard on the ol' mental health though.
<insert meme of soldier protecting sleeping child>[0]
The SM is supposed to be part of the team, not part of management.
[0] https://pics.me.me/the-silent-protector-sales-department-man...
Of course, our PM and scrum master, just went along and put us all into a room, to estimate and figure out how we could deliver. All our estimates were proclaimed wrong, and we had to estimate again, eventually devs just gave a number to make it fit within the two weeks.
Needless to stay, the product did not launch, and the developers got blamed for not being flexible enough. That’s how agile works in big companies, use agile as a term for everything wen it fits, use it as a way to blame others. Scrum masters are just there to pass along communication from the business, and absorb complains from developers. It’s just another one-way street of communication.
I've seen something like this happen, and I must wonder. The only ones that can give an estimation are the people who will actually do the work. This estimation will likely be also wrong, but it's their job and their estimation. How can anyone else dispute it?
Very tempted to reply "well, how about you do it in two weeks then?". I never do, because I want to keep my job. And nobody is ever punished for missing deadlines, anyway.
This should be fairly easy to communicate to the business people.
Pretty much, the general consensus amongst developers was to just go along with whatever the scrum master is saying, just so that we could at least get out of the meeting and start our work. Missing deadlines was pretty common, getting blamed was pretty common, but you won't get fired. Perhaps you'll get moved to a different team, where the same story repeats itself.
We don't need unions for better wages. What we're often missing is respect, dignity. (Yes, sorta like sex workers.)
All of these have been unusual work environments so I’m not sure I have reproducible insight to offer (though the second case probably is more reproducible than not at all, and I highly encourage anyone with the opportunity to throw down and choose your own planning adventure to coordinate with your team and see what shakes out; you have nothing to lose but your estimation poker hand).
My approach is the MVP way, where the team delivers everything that is necessary to meet the customers goals. All the bells an whistles can be qdded once those goals are met. If the goal can't be met within the given timeframe, then it's a problem of unrealistic expectations. But most of the times we have met the deadline while otheres with their bloated waterfall projects were late.
1) lack of customer feedback loop - agile is meant to ship features quickly to customers, get feedback, and iterate/enhance/pivot based on their feedback. Often times the projects were simply things that "had to be done" and the whole agile process was not necessary.
2) inaccurate estimation - projects would start with asking engineers to estimate "t-shirt size" efforts on user stories, and what happened in reality is the projects always ended up taking longer than expected due to unknowns, dependencies etc. I've only worked with a few senior engineers who can accurately estimate, but junior engineers starting their careers in a big company, it's a tall order to ask them to be accurate.
Eg. 2 hours becomes 4 days. It allows for delivery, QA, bug fixes and documentation.
Agile is better thought of as a product management than a development methodology. It is meant to be agile in developing your product to iterate quickly and respond to feedback from real users. It's a great fit after a MVP is released to users to iterate on their interaction in a responsive way. It's not an ideology to be followed religiously for all projects with all constraints (particularly those where those paying for it want specific features/dates are a poor fit).
- If a given project is only agile on the development side and not also the project and product management/sponsor side, there's going to be a ton of friction.
- If all projects use the same methodologies (be it agile or waterfall or some other new hip flavor) to develop regardless of their scope and needs and sponsor, there's going to be a ton of friction.
- If your teams adjust their approach to meet the needs of the project at hand, and all aspects of the team for a given project are in sync with that approach not just developers, you just may be able to glean a relatively smooth experience.
As a corollary, all ideologies end up as self-parody, contradicting their original intentions in sometimes egregious ways.
> The retrospectives are gone
Oh, they’re still there, they take like seventy-five minutes, they do produce some good observations, aired-out grievances, and action items, the latter of which are never ever followed upon in full or even half.
[1] https://nextbigideaclub.com/magazine/voltage-effect-make-goo...
The last job I worked at still had defined features, test cases, and release dates for its projects, but since they were "Agile" they stored all of their "user stories" (read: free-form requirements that needed to be built according to a literal separate design document) in Jira tickets. I worked there until the urge to play in traffic became too strong.
But agile is often sold as a tool to fix such incompetencies i reckon!
The manifesto was so small and stark because those were the few things that all of the manifesto signatories could agree on. They were trying to find consensus on principles that made products successful.
Big A Agile is much more rigid and top-down, marketed to management. Success there means selling training and certifications. Nothing more.
> still makes projects late.
But under the concepts of the agile manifesto there is no concept as "late" so I'm not sure why the author refers to a project as being late. The whole point of an agile process is to be able to iterate quickly. 2 weeks is a generally accepted timeframe in which you can revert attention if what you develop is incorrect. So whats the gripe?
[0] - http://www-scf.usc.edu/~csci201/lectures/Lecture11/royce1970...
After all, half a week is burned, minimum, at the beginning and end of the sprint on process paperwork and screaming at disconnected Zoom windows.
Next sprint, their week of work is frequently reverted or irreparably hacked to meet an arbitrary deadline.
Also, the product sucks, but management metrics ensure people that focus on shuffling the titanic deck chairs instead of fixing it get promoted.
If a group of engineers puts in a heroic two month effort to save the project, their metrics tank, and they end up reporting to the first group until their options run out or they are laid off.
My wife is a teacher and she was telling me that a panel who was responsible for hiring a new permanent teacher was "not allowed" to consider their prior knowledge of the applicants' teaching abilities, and had to go with the teacher who best answered the Department of Education's paperwork questions.
They chose (against their personal better judgement) the worse of the two teachers because "on paper" they appeared better.
I'm currently struggling to find a job (my current contract ends in a couple of weeks), and I just don't have the ability to be the level of ass-kiss dishonest, straight-laced, official textbook answers that seem to be what lands the fish. I'll get something eventually, and that's all I want, but it really feels like the world is tuned to the sizzle even when you can smell that the steak is rotting.
When you start a 2-week sprint how do you magically understand what you're planning to build if you don't do any planning...?
Worse even, 'agile' gets used as an excuse for project managers and architects not to document requirements or plan properly, even in situations where all the goals can be known ahead of time, because that's a lot of work.
It's also rife with "It's not working? Clearly what we need is more interference, more monitoring by management, hire more 'agile coaches' to inflict more 'ceremonies' on developers and use even more of their time."
Never mind that planning is always thrown out of the window because priorities shift. Never mind that none of the changes that were identified as necessary in the retro get any sort of management buy-in, rendering it pointless. Never mind that 'stand-up' has become a management-run progress-report session. Never mind that this kills the feedback loop and developer-lead benefits that are supposed to come from this. No! Do more agile! Whatever the hell that means! Do it harder!
What's the complaint? The higher ups have a scapegoat, so they're happy. And you can rejoice in it not being you or any of your friends!
10 The stakeholder says which features are the most important and gives the team a prioritised list.
20 The team goes through the list and determines how much work each will take. At this point the stakeholder might be asked to re-prioritise.
30 Team picks tasks from the top of the list for each sprint and shows the result to the stakeholder after the sprint in a demo.
GOTO 10
That's it.
If someone from outside the team has "a quick request" that needs to be done ASAP, the scrum master shows them the prioritised list and asks them what features should be dropped. If the someone is stupid enough to pick something, they can go wrestle with the stakeholder(s) of the deprioritised tasks about whose thing is more important.
The team doesn't see anything of said quick request, they can focus on their sprint.
If the stakeholder has any "quick requests" The Process says all work for the sprint is to be scrapped (no one really does it, but you don't tell that to the customer) and the sprint is restarted with the "quick request" included. In my 20 years in the business, zero customers have taken the "scrap the sprint" route.
But none of this will work unless an expensive enough consultant can convince the higher ups that it's a good idea. If they're not with the process, you get scrumfalls, 45 minute standups and other crap.
Agile is great when you can be agile. Not every busyness fits into that mold. Some software projects are big, regulated, public, etc. They need more structure.
For instance, you don’t update the cloud provider at a 500 company with agile. It takes planning, coordination, contingency plans, and often 2-3+ year timeline. Agile is for smaller companies or smaller projects that can be broken up into sprint size pieces. Many are not.
Just not true. I know it's hard to know if you haven't seen it but I assure you it's possible and much for effective for a large team to be truly agile
Honestly I hate the term agile, it should really be "open communication", and it can apply on even a daily timeline
Waterfall "style" is a directive comes from on high to get every service running on the new cloud provider, and 2 years later those on high find out we're still 2 years away from completion and along the way we spent months working on tiny aspects of it because the directive couldn't capture every nuance.
Agile "style" is where you get to return feedback to "on high" before that point. If there's a service that represents 5% of our revenue but required 30% of the effort, you get a chance to push back and talk to stakeholders before committing that.
-
It's really the idea of "further unraveling uncertainty as you go along instead of assuming you accounted for all of it at the start" that makes agile useful, and that can work on any project of any scale.
No matter how rigid the parameters of a project, at some level there's uncertainty (otherwise you'd have perfect estimates and nothing would ever be late). So better that "on high" learns more details about that uncertainty as you go along, and you get input on how to handle that uncertainty... than in a giant "we're flailing" moment later down the line.
I think people focus too much on the whole "no committing to deadlines" idea, when that is not at all central to the value proposition, and honestly feels like a feel good platitude that doesn't actually work when it meets reality regardless of how small you are
_All_ software projects include an element of discovery as new details are discovered, technical challenges are encountered, etc. To think otherwise is naive.
Waterfall in software means there are fixed timelines and a fixed starting scope to work against. This helps align the efforts of multiple teams that have their own deliverables and timelines. As a project progresses, the timelines and scope are reassessed. This is true of any methodology.
Full agility is when you can pivot quickly to new opportunities. This flexibility requires a small scale. Most larger companies have too much going on to allow for something like this yet they also allow for agility. For instance, a security incident is not going to be neglected because of an ongoing project. Waterfall in software is not what the author makes it out to be.
No one proposed or implied that any software doesn't have an element of discovery?
Obviously there's wiggle room for all of these terms but you're defining waterfall so loosely that you didn't describe waterfall at all (nothing about fixed starting scope and fixed timelines requires waterfall...)
Then on the flip side you're defining agile so precisely that almost no one can meet it. I mean what is "full agility"?
It feels like you invented a term for a theoretical "perfect" implementation of agility, but my entire point is that you don't need to go off the deep end with the concept of agile to reap the benefits.
-
Waterfall and agile mentalities don't need to be mutually exclusive, which is exactly what the article is about.
I lead projects on self-driving cars. When the NHTSA has hard requirements we don't get to go back and ask them to reconsider, but that doesn't mean that within implementing long-tail features we can't be have an agile process for making sure the teams implementing parts of those features aren't blindly banging away with no iteration on their approach.
Waterfall and agile should just be means to an end. The weird want some people have for one to be the "valid" approach has never made sense to me.
That is literally how definition of waterfall starts. Unless you use waterfall as "the mythical thing I project all my grievances at".
Waterfall "as it should be" was presented as a flawed model: In reality there is no competent team, using waterfall or otherwise, that relies perfect estimates and I wouldn't insult anyone by claiming they're doing so.
The waterfall is process where you start by collecting requirements, make estimation and sign contract with set deadline. The rest is development in one go, then testing and then you give result to customer. So yes, it relies on precise estimations. Whatever else you have in mind is not waterfall process. Waterfall does not prescribe how exactly you make estimation nor how do you communicate inside the team.
It has disadvantages which is why no one was using it for decades. Except as straw process to blame when other processes fail or dont prevent dysfunctions. So, management tries to implement scrum, it fails or turns into hell. Then next guy will try to implement Scrum or whatever, claiming he is bringing agile to save us from waterfall. But that is just a way to avoid saying that it was scrum that failed and repeating exact same cycle.
Again, literally no competent stakeholder anywhere is expecting a perfect estimate.
Both agile and waterfall both aim for precise estimates.
With agile you're still aiming to have roughly correct story points, or having roughly enough work for your sprint. But you're moving the yardstick on how often you estimate and how you handle missing those estimates.
All of which is why again, I don't see the point in being so rigid in where one ends and the other begins. Waterfall has gone from a punching bag to a real process people follow by adjustment. People seem to miss that while the "OG" waterfall diagram was supposed to be flawed, even in the same document practical improvements were introduced.
Incompetent stakeholders are real world phenomenon. In this sense, even stakeholders that are otherwise smart people and competent in other areas often fails in exact this way. Real world companies pay fines for being late. Real world customers without contractual guarantees end up paying more then project is worth too.
> Waterfall has gone from a punching bag to a real process people follow by adjustment.
This is the thing I disagree with strongly. Waterfall is punching bag and is not used in practice at all. It was past being used when I was young. Waterfall was also far from the only process that existed before agile came.
Iterative development process existed long before agile came to be. Agile means nothing and everything these days. Waterfall however is canvas where people project their grievances with other processes. That is why it is undefinable in these threads - it is either about communication, or people being treated bad, or about iteration or host of other practices that companies combine together.
It stops my momentum, annoys me, which ruins my motivation.
;)
or the team is doing too much at a time, and delegating different "projects" to different people in the name of efficiency.
I think that's actually wrong - the whole team should work on the "same" task. For example, coding a module could be done together. It might seem like only 1 person is writing code, and everyone else is over the shoulder looking, but you save knowledge transfer times in the future, and you save code review time (you do review at the same time when everyone is there).
And literally nothing was lost in the process. I am as productive as before, know as little about product we are developing as before.
Being there straight, talking, thinking and listening would tire me out. But, I only half listen, dont focus on parts that dont seem relevant and get rest as I please.
These meetings were super tiring for me when I was trying to learn requirements from them. But the result was that I did not learned much anyway and not paying attention made no change.
The only thing he did in response to failure was to pivot us to feature driven development, and then he screwed that up by not clearly defining teams and muddying responsibilities.
Pick your jobs carefully or be prepared to walk away :(
Enjoy! All your problems are solved.
I'll tell you what I'd do, man, two teams doing Feature Driven Development at the same time, man.
> "Soon there will be a new project methodology that will promise to deliver software projects on time and on budget. It won’t work, but we will all have fun learning new terms and joining a new methodology cult."
I think everyone here will agree this will happen. Again, and again, and again.
And that they understand agile to mean the same thing as the engineers. That is to say to small deliverables within a short period. Review the small deliverable with client, make adjustments, then repeat until final product is done. Basically get things working a small piece at a time. Change directions if needed. Don't boil the ocean.
What usually happens is that the clients take "agile" to mean changes on-the-fly AND quick delivery of final product. They also usually prefer the waterfall deadlines, because then can line things up for Q2, Q3, etc.
I think a big reason for the disconnect is the word "agile".
Read it, it will take 20 seconds.
That makes sense. Now how does that turn into some monstruosity like scrum or anything else all the tech companies use, that I don't know.
"Agile" in the companies is all about process (have you done your standup, backlog refinement and retro?) and deadlines. The only thing we kept is not having documentation.
Great one btw, in the waterfall times we at least had an idea of what the hell was going on in a company.
The truth is that in most cases escaping the good - fast - cheap triangle is expensive because it involves a lot of research, and most companies either can't afford it or are led by greedy short-term thinkers.
Agile can only be solved with honesty. If you want some cheap crap, you can have it, but let's not get too pretentious about it.
In practice, the only thing that ever really happens and I've never see anything deviate from this is as follows:
1. Product team wants something feature or new product
2. A plan is formulated to get there, often by a certain date with engineers present.
3. An individual or team is entrusted with the delivery of said imitative
4. People go off to do the work to make it happen. Often for months, often without a ticket associated with the work, they just want to get their work done.
5. If you're lucky, the senior resources on the project will flag any issues as they arrive or foresee them.
6. A the end, if everyone isn't too burned out, it's nice to have some time of retrospective about how things went.
Ideally through this process, there is a lot of open and healthy conversation about the progress and status of the work. Anything outside of this is really almost always just cruft, a distraction and leads to bad feelings because the people who need to get the work done are distracted with silly things like poorly ran daily stand ups.Sometimes things make it so the project is late, no level of agility or number of waterfalls can avoid the sometimes inevitable so it's better if product acts under the assumption things might not always be on time and have a more flexible marketing schedule etc.
None of this would be a problem, except now there's a lot of anxiety about not "doing agile", or waterfall or something...
https://steve-yegge.blogspot.com/2006/09/good-agile-bad-agil...
It's now apparent that Google is both very a different place in recent years, AND that all the "Good Agile" stuff from 15 yrs ago kinda screwed most of their products and reputation long term.
15yrs of hindsight later and it has probably become the biggest product pathology cliche identified with Google.
I recently had a kerfuffle with a manager when I brought up the idea of a novel solution to a time consuming problem and proposed doing a quick proof-of-concept. I was told not to work on anything until we have requirements.
"How will stakeholders know to submit requirements for something they don't know is possible?"
"Well, we can't to any work unless it is submitted for approval in an Agile way".
To me the most disturbing part is people read the 'Agile Manifesto' and say, "yep, that's what we do", yet for every item it is the exact opposite. For example, "people over process" seems to be addressed by considering every team member identical and focussing purely on the tickets.
I am to the point now where I think corporate 'Wagile' is the Agile process and I simply don't understand what it was years ago.
They do it for a reason, to be fair. But, it is ridiculous that for how long agile existed, every single uncomfortable or dysfunctional thing about any agile process gets blamed on waterfall.
No. These are all issues with agile methodologies. Agile manifesto is just feel good document meant to make you buy into the process in abstract. It is inspirational, but that is all there is to it.
Needless to say things didn’t go as planned and I was let go for not being a team player. The project is still not live years later and all people we worked with were fired and replaced several times as well except the ‘managers’.
The authors thought it was important to actually do it twice [0]. Of course, nobody in the big corporate/government world wanted to pay a second time for work that has already be done, so most of the projects failed and continue to fail.
[0] https://en.wikipedia.org/wiki/Waterfall_model#Royce's_final_...
People want to blame the method of project management but it comes down to the team and the project manager. There's a reason why project managers get paid so well in every field. They know how to manage a team while bringing in the project on time. It's a hard job. What method is used is not as important.
While your experience may suck, mine at my company has been pleasant and planning/estimates greatly help us organize and predict our work. We get the benefits of breaking down complex tasks, while throwing out anything unnecessary to us and coming to terms with the fact that estimates != time. Anything the business asks of engineering is a problem to be solved be engineering leaders without decimating the productivity of your teams.
I've gone from IC to engineering leadership and while I get the arguments, most of the blame falls on poor engineering culture and management implementing things without thought. You don't have to do everything the framework tells you. Use it in spirit in a way that's appropriate to your current team and company.
We manage 2 different conversations at all times (agile and waterfall):
Internally, the Chefs in the kitchen agree on Mise en Place practices, prep time, and have strong confidence then can run 100% regression tests and deploy at anytime. The overhead of TDD, technical debt (sharpening the knives), and retrospectives are kept internal.
Externally, the customers don't care about the ingredients or process. We encourage business users to take the waterfall view, think through their requirements, discuss menu options, set delivery dates and formal acceptance testing criteria.
It's not that development teams aren't doing agile. But the Agile Manifesto's ideal that Developers and Product Owners would all sit down and speak the same language turned out to be less than practical.
It was a list of values that accept waterfall practices, but with a preference to do things slightly differently.
"That is, while there is value in the items on the right, we value the items on the left more."
- The agile manifesto is a smattering of nice-sounding principles with no suggestion of how to achieve/implement them.
- Scrum is an over-prescribed, subtly-complex theoretical workflow from the 1980s that was carried forward in the absence of any alternative other than Waterfall, in the same wake that created TDD, XP, and other now-ancient methods that we pay lip service to.
- DevOps came and went like a fart in the night. Was supposed to result in better outcomes for developing and running software projects. It's now literally a cargo cult. People who have no idea what it is, saying that they "do" it.
If you have a suggestion for a better way to work, by all means, someone please blog about it, I will read it. But please no more blog posts about how Agile or Scrum don't work. We have a decade of those posts already.
You will not ship complex business software by just "Programming, motherfucker". You will build the wrong thing if you talk to the customer for one hour and then go off on a mad programming frenzy for the next 6 months. You need constant iteration and feedback (agile), or completely up front agreed-upon specs (waterfall), to not build the wrong thing. Both of these are absolutely not programming.
Next to that:
> "We are tired of being told we're socialy awkward idiots who need to be manipulated to work in a Forced Pair Programming chain gang without any time to be creative because none of the 10 managers on the project can do... Programming, Motherfucker."
This seems very stereotyping. Does anyone actually experience this? In this job market? The companies I've worked at are generally very happy to have a software engineering professional in the team, and are trusting of my word/estimations.
If someone would call me a "socially awkward idiot" at work, I'd have no problem finding another workplace that does respect me.
> This seems very stereotyping. Does anyone actually experience this? In this job market?
While not directly spoken to engineers' faces, there are absolutely people who think this way. And I know former coworkers who have worked in pair programming shops, so that part is actually factual. Innocence is bliss, though (;
1. They have no replacement methodology.
2. Even if they did, it has no name.
I get that lots of people dislike Agile and what it has come to mean in certain quarters. But I have yet to see a cogent, actionable response. Criticism is well and good, but changing a bad situation requires a better idea.
But "leave me, the beleaguered, over-meetinged, over-instrumented developer, the hell alone" is not a methodology, and it's not something any sane business is going to sign up for.
Many of the comments here against Agile really attack process itself. Not particular processes, but the notion that there is a process that is followed, the same way every time. And extra scorn is heaped on process attached to metrics.
Yes, we do.
> it has no name.
Yes, it does - it's called the "Agile Manifesto". When MBA's do something called "Agile", they're actually doing Waterfall, but worse.
Imagine if you hired a cleaning crew to clean a warehouse but, instead of sweeping up the floor, they started opening bags of garbage and dumping them on the floor. Now imagine that you pointed out to them that what they're doing is the exact opposite of "cleaning". Now finally imagine that they say, "oh, you warehouse owners always say we're not doing 'cleaning' right".
AIUI, there is no capital-A "Agile". It's a pilosophy, a mindset, a set of methodologies, not a brand or a product.
I actually think that could be a heuristic: Talks about capital-A "Agile" == doesn't get what "agile" is about.
The way I remember the RUPs and FDDs of the world they actually addressed technical questions developers cared about. Starting from XP they have all been about managerial concerns. I'm not aware of a consistent explanation for that transition.
Actually, the point of agile is that it should become whatever the team needs it to be.
Also, scrum is an agile methodology, not a separate thing.
Neither are silvet bullet solutions to a problem.
But scrum has a well-defined method, that works for everyone. It is managed top-down to deliver items for individuals to do.
Whereas kanban needs the individual to take on whatever the work throws at them, including total failure of the deliverable by issues outside of their control. In this situation, the individual has to be empowered and trust should have been settled between managers and members of the team.
There is a reason there are managers and planners in every company. Projects are messy in all different ways.
Be flexible and keep an open mind. Try different things and figure out what works best for you.
The Module pattern design built into many languages like Python is perhaps why some folks get away with it for awhile. ;)
Some highlights:
* 6 week cycle + 2 week cooldown
* no ticket backlog
* handoff between product and eng, scope hammering
* fixed deadlines
* integrate first then refine
To me it feels like a modern blend that takes a few good things from the Agile philosophy but concedes that not everything happens in 2-week sprints in reality and that effective product people have to actually design product and buy work instead of just dump user stories into the issue tracker and tell engineers to build them all.
With our team of 4, we essentially choose from a set of "pitches" 3-6 "bets" for a 6 week cycle. We then work on answering all the unknowns (e.g. "does this platform API support some requirement in the way we think it might?", or "is there a de facto library for this or do we need to build it?") and prototyping solutions for the projects. Those prototypes we share with each other once they're working (and of course collaborate along the way as needed). From the prototype, now that you actually have an engineering handle on the task, you basically resolve how much time is left in the "appetite" (allotted time for the project) against the remaining scope of work. Then you do an amazing rare thing: the engineering team cuts, or "hammers", scope until they can deliver something on time. This is very different from the norm in my experience where product tries to micro manage the outcomes of the project the whole way.
Obviously things are not totally rigid and sometimes a little more appetite appears to allow something to not be hammered out of the final thing or some preferences are expressed for which project to hammer harder when competing for remaining time, but it generally works pretty well.
At the end, product gets to taste what got cooked up by the chefs and then, during cooldown, decide (with eng leaders) what to pitch and ultimately bet on for the next cycle while the eng team addresses smaller tasks, monitors deployments, polishes, and fixes bugs.
The key, "shape up" terminology and logistics aside, is forcing product to make up front "purchase commitments" (my term) of things they need/want in the product. This forces a lot of things that don't happen normally or happen ad hoc during a sprint to happen up front (in theory, alas no process is perfect).
Somewhat secondary but also very important and close to my heart is that this methodology avoids the utterly useless and inaccurate time waste of trying to achieve task-level estimates prior to work, usually building something that nobody has every build before, has starting. It inverts the commitment so that engineers are building what the time allows rather than product asking how long something is going to take and then rightfully getting angry/frustrated when things 4x as long as the engineers said they would. It feels way more human as an engineer to be given some freedom to explore the solution space and then use your and your teams expertise to deliver a solution in the allotted time.
--------------------
What about Scrum, Agile, Kanban, PMP and CAPM?
At this point many of you will be wondering, where is the conversation about all of the formal methodologies? Some of you will think it’s strange that I’ve written a whole chapter about project management without mentioning Scrum, Agile, Kanban, PMP and CAPM.
...I have not personally noticed that credentials (such as Scrum Master or PMP) are necessarily associated with real skill as a project manager. Rather, the key things that make a great project manager tend to be more qualitative:
• Does this person have the moral convictions necessary to take a tough stand against upper management, for the benefit of the overall company?
• Does this person have the confidence necessary to fire a poor performer for the benefit of the overall team?
• Does this person have the perceptiveness to correctly read team members and know when they are lying or boasting?
Certain people gain these attributes as they gain experience, but these attributes tend to be things that are not emphasized in formal credentialed courses. Strong moral convictions tend to be picked up in childhood and are only learned slowly in adulthood. In formal credentialed courses the focus on various rote processes tends to shift the focus away from the things that are really important."Sprints" are supposed to be humiliating. The very message is that you're not trusted with even two fucking weeks of your own (!!) working time. It could not be clearer. If you work in sprints, it's because the higher-ups think you're a child and a loser, and you'll never be able to overcome that negative inference, because if you perform poorly you will confirm it and if you perform well, you will confirm that their micromanagement actually works--there is no winning.
Also, "Waterfall" never really existed. It was a straw man invented to sell this Agile bukkake.
In any case, a number of the dysfunctions are, in effect, intentional. Standups that go on for 45+ minutes? Long meetings are a classic way for managers to punish perceived underperformers (or, in Agile terms, "impediments") when they're not entirely sure who problem player is. The theory is that the rest of "the team" (I put this term in quotes because coworkers in corporate aren't an actual team--that's just management speak--but are often pitted against each other) will get sick of the incessant meetings and rat out the underperformer who is causing this wastage of time. The humiliations of Jira and "user stories" aren't bureaucratic accidents that occurred in good faith; they hurt because they're supposed to hurt.
That part is true.
> It was a straw man invented to sell this Agile bukkake.
That part is colorful, but retconning. A fellow named Royce coined the term in 1970 and used it as a strawman for common project iteration organization (V-model?) a the time.
I agree with most of the spirit of the rest of the parent's screed, though not with all the details.