(no title)
EngineerBetter | 7 years ago
Don't do sprints. Have a continuous backlog. Don't do overtime. Don't make estimates. Always do the simplest thing. Only ever do the most important thing, as defined by the stakeholder.
I've written and talked about this at great length. The fact people suggest agile gives you burnout reinforces my experience that Scrum is largely misinterpreted and people incorrectly focus on sprint commitments. If Scrum is so commonly misinterpreted, it is flawed.
https://www.linkedin.com/pulse/scrum-makes-you-dumb-daniel-j...
Scarblac|7 years ago
They need to know that, because they need to decide if it's worth it in the first place, or because they need to plan follow-up actions for when the feature will be done.
If the developer doesn't make estimates, you're just forcing other people to make their own estimates, that they'll hold you to.
BurningFrog|7 years ago
Of course they do. We all want things that are impossible to have. I want to know the AAPL stock price in 6 months.
The traditional way to manage this impossibility is that engineering lies about it (they have to lie, because they can't know either), and once people are lying to each other, trust is unlikely to arise.
The agile concept of "velocity" is the best way I know of managing this. It's not very good, and it's often a victim of Goodhart's law.
beat|7 years ago
This can be a very hard pill for the business to swallow. They want it all, and they want a predictable schedule. But Beck's triangle is akin to thermodynamics. Do you want the volume, or the pressure, or the temperature? When fixing devops-related and agile-related process problems, I often hear "But we're a schedule-driven company!" when they have a scope-driven problem like process transformation.
1. As The Mythical Man-Month pointed out almost 50 years ago, adding resources to a late project makes it even later.
gregmac|7 years ago
If this is the case, they should also be able to state the threshold above which the item would be "not worth it", and I would assume this is significantly easier to figure out than it takes developers to build a decent estimate.
From a developer point-of-view, the first high-level estimate is then much, much simpler: "Is it going to take more or less than $not_worth_it to build?"
If the answer is "more", then it gets dropped -- at least in its current state. It could be re-scoped later as a new item with a smaller MVP, for example.
If the answer is "less", then the developer can put in the time to get a proper estimate. I think there might also be an argument that if the backlog is properly ranked the detailed estimate also becomes pointless -- just work on it until it's done. No one should be doing detailed estimates on items that are more than a few weeks/sprints away in the first place.
Disclaimer: I've only recently been thinking about this abstractly, and have not yet tested this in practice, though I'd love to have this discussion with anyone that has.
RandallBrown|7 years ago
Do your best to break tasks up so that all tasks are the same size. Then work on tasks. You'll find a stable average of tasks per amount of time and that will let you forecast how long things will take, how much they'll cost, etc.
That's how you figure out when things will be done.
tybit|7 years ago
I think most problems people have with estimates is when they are applied to things too large, or too small, to reasonably estimate. E.g How long will it take to build this product from scratch with a laundry list of features. Or more commonly, to micromanage. Why does anyone care whether this task will take 2 days as opposed to 3? That’s not meanginful information unless you’re mistakently expecting the individual user story estimates to add up to a reliable assembly line of work.
I’m happy to estimate when it has some business purpose. If not, it’s meaningless busy work or worse.
watwut|7 years ago
ramraj07|7 years ago
MrBuddyCasino|7 years ago
Thats only if that feature is optional. Often it isn't, and then it is pointless to estimate. Absolutely pointless.
noxToken|7 years ago
The problem with this is that the stakeholder might not understand what simple means. It happens here all the time.
We get "simple" requests for verbiage changes, but after reviewing the story, the verbiage request isn't universal. It only applies to certain offerings, and the stakeholders only want the verbiage the be applied after a certain step in the application. This is still a relatively simple change, but when factoring in all the other "simple" requests that involve complex logic, changing displayed text becomes relatively complex.
We do sprints because it's our time box to see how close we are to hitting the mark. A sprint isn't a hard deadline in which the team must kill themselves to get everything finished. It's an arbitrary passage of time for setting goal to keep on track with what is going to be released. If you have something that's releasing two months into the future, it's easy to say that you can still make time although your first two weeks were riddled with unexpected complications and stoppages. A sprint forces us to focus on what should have already been completed to re-prioritize if necessary. And you can't feasibly do that without an estimation.
The two biggest problems with estimations are underestimating and treating estimations as promises. It's hard to estimate. So the best course of action is to make stories as small as possible. Probably smaller than someone would consider rational. If not, at least have the stories divided into individual tasks or chunks. Then once you have estimations, treat them as goals rather than deadlines. Use your sprint review as a time to honestly reflect on why the estimation was missed. Then, and this is critical to successfully estimating in the future, use the notes of reflection to make better estimates.
joncp|7 years ago
"Do the simplest thing" means don't overengineer, not necessarily that the feature won't be complex. You only code up what helps fulfill that particular story's definition of "done."
As for complex features. when my stakeholder asks for some big complex change it's almost always decomposable into much simpler stories. Maybe those have to be hidden behind feature flags until the whole epic is done, but they're shippable individually. Doing that decomposition up front helps demonstrate the complexity to the stakeholder and takes some pressure off of me. It also makes them feel secure because they have more granular insight into progress; that they're not sending me off on some Lewis & Clark expedition.
tootie|7 years ago
beat|7 years ago
wool_gather|7 years ago
fatnoah|7 years ago
EngineerBetter|7 years ago
ako|7 years ago
Agility has nothing to do with software development, and everything with business.
tetha|7 years ago
However, this doesn't mean you can't take out and exchange parts. Some teams work profiles fit well with set sprints with a stable set of tasks. Others, like ops work with few people, doesn't due to incalculable factors like incident management. Prioritization might need different mechanics depending on the position and the responsibilities of the team.
It's all a big grab bag of tools to create some working workflow for a team.
Scarblac|7 years ago
Agility is a way to deal with the fact that the idea of what "valuable" is changes constantly.
EngineerBetter|7 years ago
If you can accurately estimate how long a software task will take, you should have already made a reusable component or automation to generate that code.
Estimates are meaningless. I've seen PhDs waste endless hours faffing with estimate-calculating spreadsheets.
Fundamentally, the universe is unpredictable. Chaotic and complex systems require their starting conditions to be measured to an infinite level of precision to be predictable. The Heisenberg principle means this is, as far as physics can tell, impossible.
On a more practical macro level, a complex adaptive system becomes unpredictable once three feedback loops are present (the three body problem is related).
Modern computer systems are unpredictable because we cannot predict the interplay between levels of abstraction.
It does not matter how smart you are. Unless you have perfect knowledge of all levels of abstraction in the system below you, even in a macroscopic sense you cannot predict the future. Precise estimates will be inaccurate.
Confidence ranges and superprobabilities are of some use. Discrete and precise estimates are an utter waste of time at best, and are dangerous and misleading at worst.
EDIT
Written on a mobile waiting for plane take-off, hence lack of citations. For more on complex adaptive systems, I recommend the works of Murray Gell-Mann and the research output of the Santa Fe Institute, particularly Scott E. Page.
virtualized|7 years ago
EDIT: Of course there are projects where you actually know exactly what to do. Happens a lot in consulting. That has nothing to do with Agile though.
hrktb|7 years ago
I think it's often the over approach from the manager/PM side: they will be looking for a methodology to have estimates and team commitment, and Scrum will be an option.
There is an awful lot of PMs who will candidly explain that they don't really care about the methodology, they just need stuff to get done and know when.
potta_coffee|7 years ago
Very few managers / CEOs are going to let you get away with this.
hopler|7 years ago
You don't have to make big promises when your client has ongoing clear visibility into your progress.
JohnFen|7 years ago
This may be doing Agile wrong, but if something can be so easily done wrong that it's common, I count that as serious flaw in the methodology.
jayd16|7 years ago
Said another way, estimates are not promises. Don't crunch to meet them. I think it should be phrased as "no deadlines".
The whole sprint structure is so you're constantly adjusting your plans and estimations at some predictable time. Without a sprint you can end up with randomization.
asark|7 years ago
It's like when car salesmen try to get you to name a number you'd definitely buy the car for and sign it on some not-at-all-binding-or-official piece of paper, like that means something, before they go back and "ask their boss if they can make it work". Psychological trickery bullshit.
justjash|7 years ago
I guess maybe it could work assuming you fully control a single product. Everywhere I have worked we need the estimates simply for coordination of all the moving parts.
spamizbad|7 years ago
But it’s counter productive sometimes to say “ I think feature X will be completed by Y” and then that estimate turns into a deadline.
eikenberry|7 years ago
uhhhhhhh|7 years ago
you just described doing agile wrong...
You're advocating for a version of agile lite, not agile.
Or alternative, agile is different to everyone you talk to and your agile isn't the same as someone elses agile.
Take your pick, but sprints, estimations, not only doing 1 thing/most important things are basic tenants of agile as most people see it.
fwip|7 years ago
andrewprock|7 years ago
jgust|7 years ago
Can you clarify? If you meant "always search for the simplest solution" I agree. If you meant, "always do the easiest tasks" I don't.
chrisweekly|7 years ago
I highly recommend this Rich Hickey talk (transcription):
https://github.com/matthiasn/talk-transcripts/blob/master/Hi...
mverwijs|7 years ago
Note: This would require a _really_ good product owner that does not merely focusses on features, but also on feasibility and 'fitness functions'.
The rest of that article had me cheering all the way.
LifeLiverTransp|7 years ago
jeletonskelly|7 years ago
jdauriemma|7 years ago
diminoten|7 years ago
Also, "always do the simplest thing" is one of those phrases that can be twisted and morphed to support literally anything, which makes the phrase useless. It feels good to hear and say, but the reality is it doesn't help you out of a jam.
Sprints are exactly what you're describing, except with accountability built in. That shouldn't scare people, but it does, and that is what causes burnout. Fixing the fear around accountability is how you fix burnout, not eliminating the thing that your boss can use to justify your job.