As for the rest of it, it seems like you can summarise the whole thing as “it’s good to have experienced team members”? Sure, but I don’t see why that’s a particularly novel insight.
As for the rest of it, it seems like you can summarise the whole thing as “it’s good to have experienced team members”? Sure, but I don’t see why that’s a particularly novel insight.
Combine this with the fact that we weren't delivering any artifacts at the end of the sprint, so we didn't have any feedback from stakeholders and weren't really iterating either.
But there’s no such thing as “one big rolling sprint” though. If it’s “one big rolling…” then it can’t be a sprint. It’s like dehydrated water. It’s conceptually incoherent.
To untangle the wording of this, when you say your process became “one big rolling sprint”, what you’re actually saying is that you stopped using sprints, aren’t you?
The only reason I'm posting this is because we have had similar things happen in almost every attempt at using sprints. They're just not suited for any sort of formal/business context where you don't have absolute and frankly religious buy-in to the concept.
A sprint is a discrete period of time in which discrete software development tasks happen. A “rolling sprint” is conceptually void. You can’t have a discrete period of time that lasts indefinitely any more than you can have dehydrated water. The “rolling” part and the “sprint” part are mutually exclusive.
I’m not even saying that they weren’t “doing real Agile” – I’m pointing out that what is being described has literally no meaning at all. You can’t be good or bad at it because it’s a meaningless term.
Not that I disagree, but I think it's not modern. In the past, it was probably simply much more accepted that the agency is taken away by authorities, that's just how life is. I think people grew much less tolerant of that recently (which honestly I think is a good development), and more willing to question authorities in general. The hate part then comes from nostalgia.
Frankly, this reeks of empty cynicism and we can do better than that around here.
Your experience is also far from universal. In my previous company I was part of the leadership core and not only did teams have agency to decide what process to use, we were actively encouraging teams to consider alternatives since our practices had become pretty frozen over time (old habits, etc).
Maybe your problem is you just found yourself at shitty companies. The world is a big one out there.
The problem with Agile in general is that it can easily be twisted around to make anything you want. A great team doesn't need agile methods, but it can use them and still be great, and possibly even get some improvement with careful use. Agile intended to fix organizations but organizations don't want to be fixed, and certainly not by a bunch of software people...
But this is a misconception. Stick to the process (religiously) at first, then assess how it works.
In this case: you did not meet your sprint goals, which either meant you overcommitted (meaning the next sprint you pick up less work), the tasks did not meet the definition of ready (that is, they could not be finished in a single sprint), or you had impediments that weren't solved on time. All of those need to be spoken out loud during a retrospective session, and action undertaken.
Not having any artifacts isn't the issue, you still need to set a moment to stop your work, review what has been done, consider what went well and what could be better, learn and improve.
If the learning is that scrum doesn't work for you - and you can show that you did it properly - then there's other processes that might work better for you, as suggested.
I don't think so. That's why sprints are so toxic. It's even right in the name. A 100m run is a "sprint", but nobody expects you to maintain that pace for a marathon. Much less for a multi-decade career. But in software you're expected to be in a sprinting pace all life long. And even increasing your "velocity" constantly. If that's not a death march, what is.
> Sprints are just a way of breaking up work into discrete periods of time.
There is not rational purpose to this. If the work takes 4 days, there's no reason to fabricate an artificial sprint boundary that forces you to break it down into two 2-day tasks just to fit into the confines of this imaginary sprint. It'll still be done four days from now.
However, your example is unrealistic - you wouldn't split that task into two. If it won't fit comfortably in the sprint it waits for the next one.
It varies hugely by team and process, but where scrum/sprints are a good fit a reasonable first level of sprint loading seems to be a limit at about 70%. E.g. if an engineer has ten days available to work in a sprint, no more than 7 days of estimated work are pushed their way. The other 30% is assumed to be code reviews, meetings, pairing, bugfixing etc.
If that 70% is too high or low, it can be adjusted.
For everything else, there's Kanban.
That will never be how it's done. You work on it however long you can on this sprint and then finish it in the next one. So now you have two choices: either break it down in a completely arbitrary way into two stories, one for each sprint. Or just completely ignore the sprint boundary nonsense and just work on it.
Either way, it highlights how dumb it is to put silly boundaries on work delivery. Accomplishes nothing other than to waste people's time.
It works because your stakeholders see that you're actually delivering what you said you would _when_ you would, and that gets you the buy in and authority to run the team in a sane and sustainable manner.
For what it's worth, I prefer Kanban in most cases - but both are just different ways of managing WIP, utilisation and delivery time.
There is a clear rational purpose to breaking tasks up into parts. There are atomic units of work. Very few tasks can't be broken up into two-week segments.
An increase in velocity does NOT mean "work harder"; an increase in velocity should come natural as your codebase expands, you get more reusable components, your team gains experience, etc.
Example. New feature, estimated at 5 story points. One part is a button, takes you half a day to build it.
Next feature, very similar to the other one, 5 story points. But this time you have a button component already, so you can just reuse it. Same points delivered, less time spent, meaning you have time to pick up another story, meaning your velocity goes up.
Nobody, least of all proponents of scrum / agile methodologies, is saying that you should work harder, do a death march, etc. It acknowledges that software development is an infinite and long term process.
Scrum does NOT work with deadlines. It works with predictability; your team's average velocity and the story points of upcoming stories are known, it's then up to the product owner to set priorities if they need a feature live at a certain point in time. Missed deadlines then become bad planning and prioritization more than employees not working fast enough.
> There is not rational purpose to this.
Just to highlight this: The rational purpose to sprints is for project management to be able to look ahead and be able to say "we expect this feature to be done in X weeks time". It doesn't mean that a 4 day task should be done in 2 weeks. A sprint is just a unit of time, it isn't a promise.
This makes absolutely no sense to me and it is not how we do things at work. When the second task is estimated it will get a story point count of 1 because it's just copy pasting a button, not 5 which requires implementing a button from scratch.
you may not respect academic software engineering, but if this is true you have just created a perpetual motion machine.
changing / adding software to a system becomes more expensive (takes more time) as the size of the system increases. and it is not linear.
This makes no sense, nobody works like that. And to be fair, shouldn't.
The next button is a 1 point story because the component is there already. Or not even 1 point, may get buried in a 1 point story to add ten new buttons.
> Scrum does NOT work with deadlines.
No true Scotsman, we're all holding it wrong.
Deadlines will be imposed from afar, in just about every company ever, and then the points will be attempted to be retrofitted to the predetermined plan.
When approximately everyone, for a couple decades now, is always "doing it wrong", it's time to acknowledge that the problem is the idea not the people holding it wrong.
> The rational purpose to sprints is for project management to be able to look ahead and be able to say "we expect this feature to be done in X weeks time"
This is how that goes:
PM: It'd be great if we had all the stories and their points in the place for the next quarter so we can predict good dates, get on that will you?
Eng: Awesome! So I'll need to plan out the work for the quarter, write stories and estimate them. Nice, will do that.
PM: NO! This is agile, don't ever look beyond this sprint. We don't do planning in agile. Just work on your microtask of the sprint, we'll worry about next sprint later.
Eng: Um, wait, what?
You might again say they're doing it wrong. There's no true agile scotsman.
4 days is too long for them to wait, they get antsy and think nothing is happening if you can't actually show them something they can understand in a day or two.
I think it actually affects the code, everything has to be taped together tiny bits, because you can never do anything that doesn't show results fast, so you if you need a framework or an architecture or a plugin system, it's really hard.
But agile says that's fine because you're going to be doing first drafts and throwing away code anyway....
That’s absolutely not what’s written there and I’m surprised the context - and the narrative goal of the article - is not being grasped.
To put it more simply and distill it even more the gist is: “senior professionals know how to work and can manage their work structure/pace”.
You don't even "fail" the sprint, that's a bad attitude. You just consider work spilled over and take on less work + spillover work next sprint.
There's only cause for concern if you repeatedly have spillovers every sprint - that's usually mostly a manager issue, and sometimes IC's.
Ideally you only have spillovers because of things that were not under your control - power outages, 3rd party vendor outages, etc.
First and foremost is that most product/project managers, engineering managers, “scrum masters”, etc. do not truly love doing the work of backlog refinement, ticket management, writing acceptance criteria, or other forms of planning that entail actionable results. They may love the glory of leading or assisting a team of software engineers to build great products, but I’ve seen maybe 1 or 2 who are actually qualified to be the agile/process guy/gal. Additionally, they’re frequently counter-incentivized to be meeting jockeys, PowerPoint creators, and “culture people” who simply do not do the job as it’s meant to be done.
As soon as ^^ happens, sprints are destined to fail, because the work of sizing tickets falls squarely onto engineers who would probably rather be writing code than talking about it, so they make informal agreements about value of a story point being a day’s work or not blocking tickets that don’t have defined success criteria, or what have you. As such, tickets are not properly vetted and grow to be massive, amorphous chunks of work that either allow devs to hide from the (painful/annoying) process of Scrum and just do their thing.
The last (and worst) of the reasons spillover happens is that people are burnt out, unmotivated, or unrewarded by the process. If the “customer” (also a massive rats nest of a concept in Agile) isn’t at the demo and actively interested in the product being developed, any amount of “points” will feel arbitrary and useless. There’s no faster way to lose interest in Scrum than canceling a demo and having your developers lose faith that completing that ticket actually matters to someone.
In my experience this rings true. Whenever I see a ticket with no description or acceptance criteria, a ticket that's blocked by another ticket in the middle of the backlog, or a ticket that's being repeatedly rewritten mid sprint to include work that's already in the To Do column or at the top of the backlog, I feel like walking up to the Scrum Master and going "What would you say... you do here?".
Bring this stuff up at retro and blame gets redirected and watered down. The action becomes "we as a team" need to get better at doing the Scrum Master's job.
But like you say, they're very fond of big picture stuff like PowerPoints and meetings about doing agile better.
If your PM is appraised by Power Point quality or number of sprint points while engineers are managed by some other criteria, success and failure become asymmetrical and incentives clash.
You never use language like "the sprint failed" or "what went wrong", you say "we underestimated", "there were unforseen circumstances", or "what can we do better".
I'm sure there's cynics in here that will have a benny about "soft language" and "the tofu-eating wokerati are at it again" or something, but it's not so much about language but mindset. "We failed" is giving up, "what can we improve" is taking ownership and action.
I think it's less about the language and more about being forward looking. You can't change what happened in the sprint, but you can do the next sprint better.
It's also about clear separation between identifying issues vs assigning blame. The latter doesn't help anyone, because blame is almost always backward-looking.
That's already the same as saying "A, B, and C parts will be done in that period of time, then C, D, E, F" and so on.
So you already pressupose what's to be done by when. And even if you roll-over tasks that haven't been completed to the next sprint, you still have this concept of falling behind (which is what "talking about why you failed the Sprint doing the retro" reinforces - and that invariably will lead to death marches and the fool's errand of "doing a better job of allocating work in the next sprint").
Whereas what they describe is "A (or B or C...) will be done when it is done, and the same holds for the whole project".
So they work everyday 9-5, give it their best shot, and it is completed day by day, with no arbitrary deadline to have A, B, C parts completed by.
If by using sprints you're going to do the exactly same thing (just work 9-5 everyday, and your project is ready when it's ready), then you don't need sprints.
Sprints only make sense when you don't plan on doing that, but to use them as a yardstick of being on some schedule or falling behind, and as a way to force developers to work overtime to "keep up with the planning".
A) if I am motivated, in the mood and it is my project I can program a thing in one go (e.g. if I have no dayjob, healthy breaks, time for sports, etc)
B) One of my employers wanted software, while my dayjob was something else. I told them I can do it if I get a fixed day on which my other responsibilities don't need to be taken care of. After half a year the project was finished. The biggest delaying factor were external partners who used the "sprint" model.
C) I do my current private project on two mornings in the week before work when I have time, it makes good progress.
If you need to constantly crunch to finish things you are either bad at management or you have perpetual bad luck, one of which is more likely.
Everything if done well takes a certain amount of time. And because things never go as planned and requirements change you can multiply that time by the value of pi. Additionally you should ensure that time is actually available for your employees and not something where they need to fulfill other crap (especially not your crap). If your employees are not totally incompetent (your responsibility again), you should be able to finish that project without a single hour overtime or any need to crunch at all.
The problem starts when managers confuse how long they wish something would take with how long something actually takes. Often managers promise things go faster because they don't dare to break the illusions of their superiours (or gamble on the slim chance that they can whip their team into finishing faster to then reap the fruit of that success).
Things take as long as they take. Multiply by arbitrary, pessimistic safety factors, you will finish it slow and steady on time, while still leaving space to try some things out.
that 'failure' bit right there is some bullshit that should get cut out.