My first team, some 14 years ago, had the best experience with Agile. What made this work
> During planning, everyone understood that the estimates were _estimates_. Tasks could take longer or shorter, that was OK and even expected. The goal was to improve velocity, not to accomplish every story, every time.
> Engineers felt comfortable taking stories in areas they knew nothing about. A stated goal was that every engineer understand every piece of the project.
> Standups were team only. Engineers felt comfortable saying they got stuck or needed help or got lost in a rathole and didn't make the progress they hoped.
> Demos were important so that the team and the clients could understand what had changed and what new features were available.
But it quickly got lost - managers and PMs and Directors got involved and Jira boards became published for all to see. (In the beginning it was whiteboards and sticky note). Standups and Demos were all about self-promotion. No one ever wanted to take on a task they weren't 100% certain they could do. If a task was 3 point it needed to be done in 3 days or there would be questions.
When I left the last company it had gotten outrageous. Every task should be completed in three days and in production in five days - and if not that team was Doing Something Wrong.
( We were told that this was standard FAANG practice, I have no idea how true that was )
What happened was what you'd expect - shortcuts, tech debt, unit tests cynically design to pass and meet code coverage expectations instead of actually usefully testing.
The reality is that any process is going to fail one senior leadership decides it's a way to evaluate engineers, not create a good product.
A looong time ago I went through Army basic training. As a BS degree holder I was given the job of "book man". This meant I carried around the platoon training book and carried placards to put in signs at various training locations that told what battalion, company, and platoon we were so if anyone driving by a gun range, motor pool, or classroom could look and see oh that's 1st platoon, C company, 1st training battalion.
I've come to believe that that main driver for Agile adoption has come to be something similar. Making visible to outsiders what software development teams are doing, and making progress (or it's lack) visible to management. I thinks that's a completely reasonable expectation. Businesses are paying exorbitant salaries and providing ping pong tables, why shouldn't they have visibility into what's being done?
Where it becomes toxic is in areas this posts parent indicates; posturing, one upsmanship, pressure to perform. Effective teams need "safe spaces" to learn, discover, try and fail. Agile isn't that anymore. Hasn't been for a long time.
> Businesses are paying exorbitant salaries and providing ping pong tables
Businesses are paying market rate salaries to employees who generate them revenue. If anything engineers should be the ones questioning the exorbitant compensation and perks at the top of the org structure.
> why shouldn't they have visibility into what's being done?
Because they shouldn't be micromanaging. They should be setting high level goals and expectations and giving teams autonomy and trust. Intrusive surveillance and low level metrics create perverse incentives that detract from those high level goals.
You use this argument to defend engineers but then question c—level executive salaries. The exact same principles apply but at a multiplicative level
That’s simply not true, workers and managers are qualitatively different. There are no shortage of examples of managers of companies losing money and marketshare who nevertheless are paid bonuses every year then leave with a golden parachute.
Trust, but verify. I work on the services side and we frequently are in the position begging for more surveillance. If you are really so confident in the speed and quality of your delivery (my org borders on cocky) then the biggest risk we face is being misaligned to client expectations due to poor communication. We always ask for their explicit sign off on story criteria and feedback on features as soon as they are finished to make sure we're aligned and let them see exactly what pace we're setting.
I see what you're getting at, but the Russian proverb that Reagan made famous - "Trust, but verify" https://en.wikipedia.org/wiki/Trust,_but_verify - raises a wry smile each time I read it because it's such an obvious oxymoron. You either trust, or you verify.
There's an earlier version attributed to Mohammed - "Trust in God. But tie your camel first." - so the sentiment has been around for a while.
It feels like it's just a way of reducing cognitive dissonance, which is useful I suppose, but I wish people wouldn't use it because it allows a feeling of resolution without a real resolution of the tension between trusting and verifying.
I don’t think neither of these sayings are in themselves contradictory. The first could be translated as “I trust your work ethics, but I also know that your human nature will lead you to perform better under supervision”. The second basically says: “God has my back on a number of things, but She also expects me to do my part”.
I work in services, so for us it's like "Trust, but write explicit assumptions and disclaimers into the contract". It's like when you commit to paying $2M for a custom piece of software, you expect to pay the fee and get the product. Not spy on your vendor then sue for your money back. But you have to prepared to protect your investment.
But how can they set goals without any visibility into what a team can typically accomplish in a given time period? How can they identify better performers and worse performers?
I'm not saying agile is the right solution, (it probably isn't), but expecting higher-ups to fund a black-box team is kind of naive.
Reporting on random internal stuff instead of the actual problem at hand is the #1 problem I see with corporate reporting, everywhere. I see various combinations of people wasting time measuring:
1) The thing that is easy to measure, typically money or time.
2) The things they "understand", typically people for HR, compliance for legal, money for finance, etc...
3) The things their manager wants to know, no matter how irrelevant that is to executing their own job well.
Meanwhile what they should be measuring is the qualities of the end-product or the overall external customer end result.
It doesn't matter one iota if Bob the Developer Guy missed an internal 3-day deadline that John the Manager made up on the spot if the end product is a winner in the market and makes the users ecstatically happy to part with their money.
This happens everywhere, with everybody. For an IT-centric example, the common one I see is:
Helpdesk: "The users are complaining that the app is slow"
Admins: "The load is only 10%, but fine, we'll add more capacity!"
Helpdesk: "The app is still slow!"
Admins: "The load is only 5%! They should have no reason to complain!"
Do you see the issue? No, seriously: do you? Because practically nobody does, in my experience. Take a minute.
What happened here is that the admins measured the thing that is easy for them to measure: the load. There's a cute little bar graph in VMware, or a chart in their network appliance, or whatever. What they should have been measuring is latency from the end-user perspective, but that's hard to measure and practically no product tells you this number out of the box. So their entire process, their reporting, their troubleshooting, their forms, requests, everything becomes focused on the thing that they can see and control. Even if it's pointless, ineffective, and basically a waste of everyone's time and effort.
This happens with developers in exactly the same manner. Software quality is stupid hard to measure. Long term supportability is borderline impossible to measure without a time machine. Technical debt is hard to even explain to a manager, let alone keep tabs on in terms of numbers. So what's easy to measure? Time! Deadlines, sprints, release dates, etc... That's super easy.
That's why inevitably the unimportant internal time metrics become critical to everybody, but the actually important metrics aren't even measured and become invisible to management until it's far too late.
As a manager, I want to measure leading indicators of success and failure. Absolutely, feedback control based on the real output is important. I must measure that! But I’m always looking for ways to predict that, so I can steer more gently. What’s a leading indicator of a crisis? A late team struggling to make a deadline. What’s a leading indicator of that? Mismatch between estimates and performance. I need to know about bad point estimates because if I don’t fix it—I mean fix the PM’s misalignment—they’re going to push the team into something dangerous.
The problem is that these "leading indicators of success and failure" aren't. A late team struggling to meet a deadline might be a sign of imminent failure, or it might the team working hard to do something that is genuinely difficult to do.
The core problem with Agile (most forms of software management) is that it massively overweights "first mover" advantage. I keep hearing, as a justification of agile, that software needs to be delivered quickly so that the company can go to market first, and gain marketshare while its competitors are still floundering. But, in practice, that's hardly ever true. I can't name a single product that succeeded solely because it was on the market first. I can name many products that were first to market and failed because they were clunky and difficult to use.
Heck, Apple's entire business model consists of being second to market with a product that is more polished and easier to use than its competition.
Yes, if a developer or team is well and truly stuck (as in spinning their wheels on the same problem, week after week), that's a problem. But you don't need Agile to tell you that. A simple weekly status meeting with incremental demos is sufficient. The only thing Agile does is create a bunch of graphs that allow management to comfort themselves with "story points" and "velocity" so that they don't have to confront the hard reality that they have no idea what it is they want to build.
What about maintaining an environment where the team felt safe to communicate to the pm that there was something wrong?
And for the pm to feel safe enough to communicate to you something is wrong.
This feels like a Taylorism. Knowledge work isn’t factory work.
I totally understand keeping tabs on delivery speed to enable the team to benchmark themselves but the act of identifying a problem from that (if there is one) should be the teams responsibility imo.
As a manager, my job is to enable other people to do their job the best they can.
People manage things using their judgement and qualitative observations, all the time. We can accuse them of bias, but that has to be weighed against the fidelity of the metrics.
This is a good breakdown of this really common dynamic.
It is recognizable to many people, some of whom use it for their benefit, which can be very effective. When I learned that last fact a lot of things made more sense.
What happened here is that the admins measured the thing that is easy for them to measure: the load.
Nah, you have it completely backwards. If the users said “this specific job took 5 minutes today but was only 1 minute yesterday”, that’s actionable, you can e.g look at what changes were deployed overnight.
But users always say “the system is slow”, even if they have only the vaguest idea of what “the system” is, and even if it’s actually faster than yesterday. It’s not really clear what any sysadmin can do other than spending hours every day painfully extracting the details from the user only to find nothing is wrong. Every day, forever.
That's not true. It's just that most sysadmins don't bother to upskill to find out what they can and should be doing.
> painfully extracting the details from the user
Asking users for any information is a recipe for disaster. Much like witnesses to a murder that can't agree on the most basic details, users inevitably conflate totally unrelated things. E.g.:
"Citrix is slow?"
"Okay, how so... are button presses slow to respond to a click?"
"I couldn't log on. Something to do with my password. It's slow."
"ಠ_ಠ"
So don't ask. Don't rely on your users at all. Build synthetic transaction tests that act like users. Measure end-to-end latency. Sit down with them and watch them work. Don't rely on their verbal feedback, use your own eyes. Use your tools. Measure. Then measure some more.
Conversely, capacity metrics are largely irrelevant in the era of 10 Gbps networks and 64-core server CPUs. Focus on latency. Look for delays. Timeouts. Deadlocks. Firewall packet drops. That kind of thing.
> only to find nothing is wrong. Every day, forever.
Of course something is wrong! Something is practically always wrong, that's why the users are complaining!
Here's a fun rule of thumb for you: For every 1 user that complained, there are between 100 and 1,000 that had the same issue but shrugged it off and didn't call support.
I got that from a scientific paper. I couldn't believe it, so I measured it in a large 10K user system. The error-to-call ratio was about 500-800 in ours. It blew my mind, and it blew the minds of a lot of people in IT management.
We started gathering every error, tracking every possible latency measurement we could, and it was a horror show. 30K app crashes per day. I shit you not. That's about 3 per user per day! Data loss. Hangs. Login failure rate of nearly 50%.
It tooks months to triage the issues, push patches, and apply workarounds. We had to rewrite several components. We eventually got the errors down to less than a hundred per day. Believe me, that was a real achievement.
Users were so happy they were begging to be migrated to the new system instead of pushing back and refusing to upgrade.
If the users are complaining, something is probably very wrong and you just don't know it. Go look.
By assigning problems to specific responsible individuals, and noticing the existence / quality of the solutions they produce? If anything, Agile obscures individual performance, in that it treats everyone as fungible and every part of the system a commons.
Software engineering salaries are not exorbitant. In fact, engineers may be consistently underpaid for the value delivered. A small team can create millions for executives and shareholders. Ping pong tables etc are a sad tool for management to placate the people who drive the company value up, to keep them from unionizing and realizing the power they hold.
Ping pong tables etc are a sad tool for management to placate the people who drive the company value up
Nowhere is this more apparent than the so-called Hackathon, where you do days of overtime in exchange for a few slices of pizza and worse, are expected to be grateful to management for providing the opportunity to do so! Nothing infantilises the profession more.
Most software projects fail and do not deliver value. Code is not delivered, code is not taken into use, code is not used much. Software is capital intensive and risky. Code can be more valuable than gold but its value is determined by many factors other than skill and effort of the developer.
True, but you can’t figure out what product will fly and which not unless you actually build it. So you are stuck ;-)
Granted, one can filter out 99% of product ideas on a whiteboard but the remaining 1% is still enormously huge. And that 1% is actually the stuff that nowadays gets started.
> Software engineering salaries are not exorbitant. In fact, engineers may be consistently underpaid for the value delivered.
What about the value of those who cooked your lunch? Without them, software engineers would starve and die, so that makes them have far more value, no? Do you think that food service workers are also underpaid?
Consider a food service worker in Facebook's cafeteria. In an hour, perhaps they make 30 lunches, which in the best case delight 60 people for an hour: 60 person-hours of delight for an hour of work.
Now contrast a Facebook programmer, who in one hour might be able to fix a bug that has been annoying 0.1% of Facebook's 2.5 billion users, causing them to be frustrated rather than delighted for, say, two minutes a day, for the next three years before the feature gets rewritten. Maybe that sounds trivial, but if so, shut up and multiply: 2.5 million hours of delight per month for 36 months gives you 90 million hours of delight, for the same hour of work.
So, at a rough estimate, then, the gourmet hacker is 1.5 million times as productive as the gourmet chef. Maybe if I've been overoptimistic it's only a factor of 100,000 or 10,000, but it's huge. And that's how Facebook can be profitable at all despite all the shitty and stupid things they do: capturing even a tiny fraction of the value they produce makes them wildly profitable, as long as they can successfully externalize the harm they do. Some software companies don't even need to externalize their damages.
And that's why software is eating the world.
That isn't the only reason hackers get paid more than foodservice workers. No business is going to pay more for its inputs than it is forced to; that reduces its profits. Hackers also enjoy a dramatically better bargaining position than most foodservice workers, because a hacker with US$3000 has a better BATNA than a cook with $3000: the cook is going to be trying to sell $3 burritos out of an Igloo ice chest outside of concerts while the hacker can buy a laptop, bring up a couple of VPSes on AWS, and spend a few weeks putting together a useful web service, maybe get a few dozen to a few thousand users, but at any rate can easily scale to hundreds of thousands of users. The cook is dependent on someone investing a few hundred thousand dollars (in the US) to have top-quality tools and a good location. Difficult to do yourself unless your family is rich or you graduated from the Cordon Bleu.
This is purely factual reasoning, so it cannot answer normative questions like whether it would be ethically better to pay hackers more or less. It only purports to explain the chains of cause and effect in the world that give rise to that situation, and illuminate the other possibilities inherent in the current state of affairs, and how they might change.
The cook trying to sell $3 burritos "out of an igloo chest" at a concert is a lot less favorable an example of the successful, entrepreneurial, optimal software engineer that he's compared against. The cook could also start a successful youtube channel and turn into the next cooking superstar -- and you could argue that, in ideal circumstances and optimal execution, their actions have just as much or more impact as the software engineer. But few know and can execute their optimnal path and thus their (our) reality is much more mundane.
(Also I don't know where you're from that burritos might be sold out of an igloo chest, that just sounds gross)
There's a difference between working in foodservice and making a TV show about it. I was talking about foodservice workers. You can probably build a successful cooking channel without much capital investment, but not a successful restaurant. Starting a successful restaurant requires talent°, equipment, and land; starting a successful website only requires talent.
That's what FAANG are competing against when they hire hackers. And that's still true even though most hackers didn't apply to YC last fall, because they can sign on as employee #2 or employee #20 with someone who did. Because the other factors of production are not scarce enough to matter, jobs for hackers are abundant in a way that jobs for chefs are not. Patents, noncompetes, H1Bs, the anti-poaching conspiracy, and API keys are efforts to change that, but mostly they haven't been very effective.
(What makes you think the cook is a "he"? Both of the people I was basing that sketch on were women.)
° By "talent" I mean "strenuous and persistent effort by highly skilled people", not some kind of inborn genius. You can't start a business by sitting around thinking deep thoughts; you have to work hard. But for a restaurant, working hard isn't nearly enough, and that puts foodservice talent at more of a negotiating disadvantage with respect to investors.
I'm calling bullshit on this because without the cafeteria worker the whole place would be a cockroach infested dump with moldy lunches in the fridge
It's a fallacy to view anyone's work as less valuable when contributing to the whole -- everyone's work is essential in the ecosystem even if all they're doing is unclogging the toilets of all these knowledge workers toxic turds
> Without them, software engineers would starve and die
Software engineers are perfectly well capable of making a sandwich themselves, bringing a packed lunch, or surviving on an empty stomach for a few hours until they get home. Not to mention buying lunch from somewhere else or ordering delivery food if one cafe is gone.
Unless you're positing a world where all food production, farming, fishing, etc. has vanished, then software engineers are in no worse a position than chefs, cooks, baristas, grocery store employees, or anyone else.
> Software engineers are perfectly well capable of making a sandwich themselves
I have an idea! Let's call it DevFood, and make it a requirement for everyone.
I mean, we already expect the software engineers to analyze the requirements, so we don't have to hire analysts; we expect them to test their products, so we don't have to hire testers; and we expect them to do the operations, so we do not have to hire an administrator. So tell me, why do we have to waste money on an extra guy who makes the lunch? DevFood is the future of software development!
People are generally capable of cooking to nourish themselves. Learning enough cooking to cook for yourself can be achieved in one afternoon. The foodworker employment market is completely based on convenience culture. The software engineering employment market is very different to that.
When asking about the value that a certain occupation provides, I think it's fair to compare them to the rest of society and ask about the balance. I'm not bringing up the plight of other employees randomly to dismiss one argument, I'm asking for a defense of the stark difference in economic status.
Sure, but don't just compare to people who are also underpaid. Also compare to management. In many companies, managers get paid a lot more than software developers. That's not necessarily fair.
Right now a lot more meals than usual are being prepared at home, and a lot of people who had jobs doing that are out of work. On the other hand, essentially the entire accounting system for the state hardest hit by coronavirus is run by "nonessential" employees, because that is what we are calling people who can work from home.
Right now, there are definitely lots of people who can't work from home that are enormously essential in the ordinary sense. For instance, say you have a plumbing emergency. But, you know, your unemployment check is pretty essential too.
As someone who had a plumbing emergency I can attest it was essential also. I can also say I am sure we would have been able to get the repair done regardless, as humans want to help (and make money).
It is correct that those who are working remotely are no longer supporting the cooks, child care workers, etc ... while also having hardship due to the lack of these services. These hardships however are temporary. Our society can't really afford to live with these disparities. I spent a first career in the restaurant industry before learning to work with computers. I can say for certain in my case the first career was much harder and had much less rewards. However, I don't see eating out as essential, but a privilege. I am not sure how we walk back this system, but it seems the time has come that more people raise their own children and cook their own food regardless of their jobs.
I can't figure out what you are trying to say, particularly about plumbers. You seem to be disagreeing with me about something, but your link supports them being essential, which is what I wrote.
There is a division between people whose jobs are secure right now and those who are (or soon will be) out of work.
There is also a division between people who can work remotely and people who have to be at a job site in person.
My point, or one of them, is that these are independent of each other, so all together there are four types of people/jobs.
My apologies, I misinterpreted your remarks as saying plumbers were essential but not able to work. I was therefore defending plumbers necessity and showing their status based on it. Thank you for the clarification on your point for me.
I do agree with you. Those that are able to work now are certainly lucky (as long as the work allow proper social distancing) whether remote or essential.
My last point was on remote workers, especially those in tech which I am most familiar with, is that one should realize how pampered that role has become at the cost of others. Many of the new stresses those situations involve now with cooking and child care that was done by the service workers who are not essential and can not work remotely are the same stresses those service workers encounter all the time, not just in a pandemic situation. If one is able to work remotely now you should take this time to count your blessings and re-evaluate your own internal definition of struggle and what you are entitled to as part of society.
Also, as you may have alluded too, remote does not necessarily mean job security, rather it could be quite the opposite in the long term. It is times like these I wish I was a plumber.
My point was many lower wage workers can not afford the luxury of prepared meals or child care. I was in no way comparing cooking professionally to cooking domesticaly. As someone who worked at every job except baker in the food service industry for a decade and changed careers because of the stress I can not agree with you more. Restaurant work is hard and in my opinion underpaid.
this is not how prices are set. If you don't like how they are set then you don't like capitalism, where capitalists pay labour, and labour have to work because they need to live.
That's all fine, but let's be clear on how the price of wages are set. It is not "value created - some 'fair value'" for capitalists.
If people could refuse to work because they didn't have to pay rent and had access to the commons to get food or work for themselves, we might see capitalists having to share the spoils more.
Right, CEO salaries skyrocket, not necessarily because of the value they create, but because they can get the board and stockholders to back them more than the people actually creating value in a company.
They can do this in the form of stock buybacks, dividends, etc.
The standard software engineer does not have the power to "bribe" the stockholders in that way.
I quit FAANG and started doing my own thing. I found I hated a ll the paperwork. Dealing with taxes, accounts receivable, accounts payable, business registration, finding clients, meeting with clients, networking for new work, unmovable deadlines, pressure, fears of disappointing a client or the client being late on payment or me being late on filing some form my government requires but I have no idea I need, or a million other things.
I realized that some level of not getting 100% of the value i generate is worth it to have someone else deal with all that stuff.
I'm not saying whether or not engineers are underpaid for the value they create but it's worth something > 0
May I ask which of that you found to be the most difficult?
I've been thinking of going the same route, and I'm confident I can handle the paperwork and deliver, but it's the finding the clients part that worries me the most. Not sure if the problems I see are widespread enough to warrant founding a business and going through all that...
CEOs' decision making has far more impact on the revenue of a company than a single engineer, or many engineers. That's why the market rate is very high for them.
If there were only a handful of qualified engineers available on the market, then they'd get paid CEO-like salaries due to the value they provide and being in high demand. But because there is a whole market of qualified engineers they get paid far less.
It's pretty basic economics and doesn't have much to do with stock buybacks/dividends/etc... Regardless of the value of an individual position, wages will be lower or higher depending on the supply of an occupation. In the big picture engineers are very replaceable at market price compared to executives so their wages are reflective of that.
It may be more demand than supply. Plenty of people would love to be CEOs, and have some ability to run a business and delegate, but you can only have one per company. On the other hand, you can have many engineers. If you could only have one engineer per company, their salaries would likely be much higher.
This would be counter-intuitive, because low demand results in high salary, regardless of supply.
Not related to your main point, but would you reconsider calling them 'exorbitant salaries'?
Engineering is one of the only professions that is paid commensurate to the value they provide
Calling our salaries 'exorbitant' leaves you without superlatives left to describe executives that get paid thousands of times our wage, and at least they do work compared to the owners of capital who are 'paid' incredible money without doing any work at all.
To call an engineer salary 'exorbitant' you must be comparing it to the salary of people who function as modern serfs, and are not paid commensurate with the value they provide, or even enough to live a safe and satisfied life. Being paid enough for modest freedom and security is not 'exorbitant' though- no matter what you're comparing it to.
There are certainly good reasons to make a team's progress visible. PMs/POs ( I'm never sure of the difference ) will want to know if a project can meet the release date. They will want to know that the need-to-have features are being worked on before the nice-to-have. I don't want to sat a team should work in total isolation.
I can only say that IME a team is going to be a lot more productive if they are able to own their development process. Good infrastructure, knowledgeable engineers, healthy relationships instead of competitive ones - that's what creates a highly productive team and highly productive engineers.
> will want to know if a project can meet the release date
The number one main headline takeway axiom of Agile is that this question is completely banned.
Agile is about delivering working software continuously, delivering whatever increment you get working at each timepoint, adapting to observed reality as it comes, and not having deadlines for specific features that might turn out to be impossible or harder than estimated.
That question is banned until a board meeting comes up and your owners asks you "What are your plans for the products the next quarter, misters CEO and CTO"?
If you babble around saying plans and deadlines are for suckers and that things will happen when they will happen, I am not sure they will keep paying you and your team's salaries for long. This new contrarian cargo cult of waving away any kind of medium-term planning or estimation is hurting businesses as much, if not more, as when all projects were waterfalled and timeboxed to death.
Yes, estimating is hard to get right. No, it does not mean we should simply get rid of it. Because engineers do not live in a little bubble of code: there is usually a whole company around them who need insight into what is getting built and when they can expect it. And anybody who believes that asking this question is too much or intrusive has never worked in a non-engineering position, or think of themself too much.
The mistake here is making your measurements too granular. What happens is the board meets, long and medium term plans are made, etc etc. That's all good. Then what happens is every level of management calls in the banners and forces them to pitch how they align their teams and projects to whatever was pitched one level up. Somewhere along the process, you hit the point where planning stops being a positive and starts being a liability.
This process never stops, until you have some toothless PM slave driving devs because they're 8 levels removed from the strategic planning and they've pitched a 40-point/week development rate to their boss because they don't have enough information to do anything else. Anybody that tries to break the pattern is going to find themselves on the receiving end of an unfavourable performance review in any big business I've ever worked for.
There's a happy middle ground somewhere, where devs are given plenty of space to work but their output is still tied to the business's long term objectives. How you reliably reach that middle ground is probably a 8/9/10 figure question depending on the business.
Anyone relying on a medium-term estimate about a software project has clearly never been near one.
A software system is an objective reality. It doesn't care what we want from it; it simply is. We can have intuitions about it, and use those intuitions to generate hypotheses about what will work, and ask the compiler / test suite to check them. But with a system of any real complexity, we're going to encounter surprising answers sometimes. We can't know how surprising, or how often, how long it will take to make sense of them, or what the ramifications will be for the rest of the project, until we actually get there.
It's not like we were producing useful estimates and then decided against it. They were always lies. Refusing to provide a medium-range estimate is finally telling the business the truth, that we have no idea. Instead we can tell you what we do know: the functionality we delivered last sprint, and the functionality we're going to work on next sprint. That is what you pay us for. The software actually delivered. Not bullshit promises.
But if you really do want a good faith, best effort forecast, then we need to plan the project in as much detail as possible upfront. Lock down the requirements, design the implementation, break down the work, and schedule it. Map out exactly what we're going to touch, so we can at least have a gut feel about how surprising it's going to be. That is waterfall. Own that, and do it right. Don't skip important steps and dress it up in agile clothing.
"Banned" may not be the right word, but I do agree it's the wrong question. Story points and velocity measurements are about giving a reasonable guess about what's "likely" to be completed at any given point in time in the future, with bigger error bars the further out you look. Agile projects don't "complete" so much as a decision is made to release at a given point, and everyone is happier with agile in an environment where there's an expectation of multiple, continuous releases.
Except they are used wrong and not required for agility. How many tasks per time is an observation, a hypothesis about usefulness of projection. Story points? Waste.
> making progress (or it's lack) visible to management.
The challenge is that management is only looking through a small window and everything from promotions to raises to favours are dished out based on that window.
Anything not in view of that window immediately obviously becomes useless to one's advancement in a company, so the window better cover everything which matters and it usually doesn't.
It is reasonable but it is not necessarily the smartest way of going about things.
The question of whom things are visible to is an important one. Your comment says "management", and yeah that's one common way of thinking about it. But managers are just individuals with their own motivations. It is really "the business" that wants visibility in order to best accomplish its goals. There is an assumption that "management" is better aligned with "the business" than the employees they are paying "exorbitant" salaries to. But that may or may not be true, managers are also just individuals with their own motivations. So to the extent that it is true that managers are better aligned with the business, why is that the case? I see a few things that trend in that direction: compensation that is more tied to the performance of the business (through bonuses or what have you), more visibility into the goals and reasoning for decisions being made by leadership, and a better grounding in the dynamics of the business (what is the strategy, how does its market work, how does it make money). The theory is that because of those things (and probably others I'm not thinking of), the managers are better suited to be representing the interests of the business, whereas the engineers are just tools those managers can use to further those interests.
That is one way of doing it, probably the most common way, and it definitely seems like management visibility into work is extremely important in such a setup. But another way might be to align the engineers with the business in the same way managers are: pay bonuses based on the performance of the business, give them visibility into goals and decisions, teach them about the strategy of the business and the dynamics of how it makes money. That is, give the engineers ownership in the same way management has ownership, and trust them to make decisions that are in the interest of the business.
To put this another way: if you trust managers to make decisions about trade-offs that are in the best interest of the business, why can't you trust engineers as well? Are the engineers dumber or shiftier than the managers such that they can't be trusted with this?
The general line of argument here is that the managers have spent time and effort as part of their professional development in order to understand the business, whereas the engineers have dedicated their time towards a more technical focus. This is reflected in how they spend their days - the manager spends time in meetings, whereas the engineer is spending time coding (very broad generalization)
Assuming that neither side is doing significant amounts of extracurricular work to bridge the gap, it therefore follows that management understands the business better, because that is explicitly the purpose of their job.
In a best case scenario, it makes sense to provide engineers etc. with the context to understand the decisions. On the flip side, business decisions are often made upon a huge heap of context that is generally invisible to the engineer (unless they spend an equal amount of time in building up their business knowledge, spending time in meetings, etc. - but at that point, they're basically a manager?)
It's not to say that engineers can't develop the background, etc. to make the decisions, but that it's not exactly part of the expected job functions, and not something that's explicitly looked for as part of the recruitment process. In a sense, this is a bit of a tautological issue.
Yep, I do think this specialization argument has a lot of merit, and re-reading my comment I think I downplayed it too much.
What I'm saying is: what if we rethink specialization on this front? What if we expect it to be part of everyone's job to have deep understanding of and context on the business? Recognizing that there are significant efficiencies in specialization that we lose with this approach, maybe it still comes out ahead. Maybe the improvement in decision making outweighs the inefficiencies introduced by requiring everyone to be a businessperson.
Personally, I think this is a really great way to run a business, if you can get broad buy in for it. The best places I've worked have been those that most closely approached this structure.
But I will admit that this is biased by having a personality where I neither want to be "just" an engineer, nor give up engineering entirely in order to be a businessperson. I think lots of engineers don't want the business stuff to be part of their job, and I guess I can understand that, even if I lament it.
One interesting question is: if everyone is acting with the business ownership mindset more commonly expected of managers, what are managers supposed to be doing? My answer is that front-line supervisor managers are there to support their reports, help them get and understand the information needed to make the right decisions. At the higher level, managers are there to make decisions on tough cross-team and cross-organizational trade-offs. At the very top level, they are there to set and communicate the overarching strategy of the business, which everyone else should be using to inform their own day to day decisions. I think there is plenty of that kind of work to be done, without expecting managers to be making the day to day decisions.
That's a really interesting idea that I never thought about. Seems to make a lot of sense.
As far as business deserves to know what they are paying for, that is absolutely correct as well.
The problem is that business is not paying for story points. They are paying for actual product and delivery. So when they measure output by story points, you end up with a situation where teams are trying to maximize story points delivery, etc. as opposed to actual product delivery.
> business is not paying for story points. They are paying for actual product and delivery.
but that's the whole problem, if you constrain time, cost and result there's no any space left for agility.
the point of agile is to maximize the value of what can be produced with a given team within a given project, you picked time and cost and you apply agile to emerge stories that are actually important to you and push back on the gold plating.
if you have all three fixed, waterfall works just fine, actually even better.
If outsiders want to see whats going on in an Agile team, all they need to do is run the "working software". They don't need to see all the ugly bits under the covers.
Having working software is line two of the Manifesto. They can run it each week and see whats new.
Even better, they can provide feedback on the working software and the team can then quickly respond to that feedback. In a week or two, when the outsider next looks at the working software they will see the software improved.
The quality of the software is the best metric of whether the process is working but management has no incentive to blame the process when it breaks down and every incentive to blame the people instead
Making visible to outsiders what software development teams are doing, and making progress (or it's lack) visible to management. I thinks that's a completely reasonable expectation.
The devil is in the details and in this case literally because the granularity of progress is too fine-grained to be exposed away from its context. The project manager or whatever you call the nearest person with power over your time needs some leeway to organize, ask for some extra, compensate, forgive, and reward you, without higher powers micromanaging. Freedom is the premise of responsability.
Absolute evil happens when customer demands access to hourly activity log for each developer in the (not on premises) project.
> I thinks that's a completely reasonable expectation.
Most often it is not. The problem is that management does not understand shit about software. And they usually don't care to learn about it. Hence this is about as effective as me asking for transparency regarding a COVID-19 vaccine. Yes, the practitioners could tell me they are in a phase-II trial. But to process that information fully and put it into context, I'd effectively need to study medicine.
And as you say, managerial involvement is the problem. Managers and execs mostly get paid to appear to be in control, so having the appearance of control is vital to them, even if that makes the results wildly worse.
Which reminds me of one of the other great quotes: "It is difficult to get a man to understand something when his salary depends upon his not understanding it."
Surely uttered by people who haven't been at FAANG companies. It's not magical over here, people.
I've legit sat through 1.5 hour long calls with 6 other devs so we could watch our manager type notes into a presentation that he'll give to a collection of other managers who will only be half-listening until it's their turn to be visible, and all because some other, more powerful manager, decided this was important for the org to do.
It was layers of bureaucracy so deep I wasn't sure where I was anymore.
All of that is corruption of the idea. Probably common, but unnecessary and really needs to the fought against.
The primary point of Agile is to empower developers. If management is determined to micromanage them anyway, then Agile is pointless. If the term Agile is to have any business value at all, then let it be the stick with which developers beat some sense into stupid managers. Points are indeed rough estimates and can easily be off by a large factor, and they're definitely not meant to measure performance. Standups are about the team and about helping each other move forward. Demos are about getting feedback from stakeholders. It's fine if others see the Jira board, but it's not theirs. It's the developers'. And if a task isn't done, and it isn't done.
I fight for this if necessary, but fortunately I'm currently working in a team of very vocal and opinionated developers who take charge of their project and push back against managers if necessary. We do Scrum, but we're not dogmatic about it. We change the sprint scope if the situation calls for it. And we rebel when it's management that's calling for it.
In my experience, every successful engineering process is driven by the engineers. Not product owners, project managers, IT directors, VPs of Engineering, or CTOs.
It's certainly reasonable for those various stakeholders to ask for visibility. Demos are great for that, and a lead engineer or front-line engineering manager can work with stakeholders to establish some metrics to report on, but those are epiphenomenal to the process chosen.
I'm not saying it's a guarantee, just that nothing else really works well.
> Engineers felt comfortable taking stories in areas they knew nothing about.
and it was understood and expected that this meant the estimate would go up
Today we have 'bidding', which if that sounds like something a three year old does to their parents, you'd be right, and it's the same thing. You just ask someone else until you get the answer you want to hear (instead of the one you need to hear).
It's not the same thing. It's not "bidding", even if it's called that because the lowest or highest or middling bid doesn't necessarily get the work. I know, I know, it sounds like another "you're doing Agile wrong", but Agile already fucked it up by saying "bidding", so we get these wild stories of how companies have their laziest incompetents in charge of trying to make improvements to process.
> You just ask someone else until you get the answer you want to hear (instead of the one you need to hear).
Otherwise you will only have the most jr or senior people working on everything. The system of bidding just doesn't work, which is why it's not bidding in a practical sense.
You ask why people put down their estimates by describing what they know about the work. This is an opportunity to transfer some cursory knowledge and reinforce pain points. At a very progressive "Agile" company (we would invite speakers and A/B tested various practices across teams), I notoriously inflated/deflated all estimates by bringing up edge cases and/or constraining objectives. Story grooming aside, there are always people trying to over-engineer and estimation is another gate to prevent that.
Agile was a good try to create software process, but it's incomplete at best. The idea that it would evolve is laughably naiive (https://app.spectator.co.uk/2020/04/22/the-illusion-of-certa...). Companies want S&Ps, not sauce that they have to mix themselves.
I'm talking about the dickering about whether something is N points or N-2 points. Or whether the points even mean the same between two teams. Or whether it's appropriate to assign it to another team or individual who says a smaller number because they have a different definition of Done or are more or less invested in the long-term health of the project.
I'm going to ask this person or the question in this way because I'll get the answer I like, even if that answer is unhealthy or even pure fiction.
Where I work, all teams have different point systems. When we need to do high level planning, we used a normalized "sizing" system of small, medium, large, huge. They give some numerical values to these and use those as points. They're less accurate on a per story basis, but they tend to average out quite well.
We should make "estimate" a banned word and replace it with a word like "guess".
Too often what starts out with an off-the-cuff chat about implementing some feature while people are getting coffee with a statement like "Oh I don't think it will be too hard to do this - will take a week tops <filddles with coffee machine />" etc ends up growing its own legs and becomming a gold-plated and irreversible commitment made to a director/VP/CxO somehow. What was a casual guess made without all the information required is now a rod for.our own back. Again.
Perhaps as engineers we should give ourselves a sort of mental style-guide to never ever say the words hours/days/weeks/months/quarters/etc without alarm bells going off in our head and requiring extensive peer review in the same way we do when we're writing "dangerous" code (e.g. user-provided values going in to SQL queries etc) Only half joking really :)
I've tried replacing "commitment" with "forecast" in my team for the same reason. Even though it's an official recommendation [1], the management didn't like it.
Most philosophies get badly diluted and warped after they get placed into a wider audience. A lot of good ideas come from a small group of competent individuals who have experience and think deeply about how they could improve things; but a major reason why so much of the world is still so dysfunctional is because so many people don't think deeply or carefully about what they are doing. So when a good idea comes along, they commit the old mistake of jumping on the bandwagon without deeply imbibing the real reasoning behind it, but that corrupts the idea over time to be a prescriptive cure. So we have fads every few years when the majority of people find out that the old silver bullet didn't work for them, and start looking for a new silver bullet-- and there is always another small group who want to improve things and write a new book with a slightly different take on how to do so.
> We were told that this was standard FAANG practice
I'm getting really tired of companies trotting out the "because [Facebook|Apple|Google] does it" excuse. Those are massive companies. Are we so delusional to believe that what works for a $70B/year company will automatically work for our $20MM/year company?
The craziest part of this was that it was banking software. Every so often someone would inadvisedly suggest that banking customers weren't waiting on the edge of their seats for new features and really really really disliked bugs. Perhaps - the hapless engineer would suggest - companies like facebook weren't the greatest model for how our company should operate.
The idea that all dev teams within a single FAANG operate in the same manner is also absurd (much less that all dev teams across all FAANGs operate in some identical, optimal fashion).
Finally, the idea that you should blindly emulate FAANG because they’ve clearly thought through what is the best is also absurd. They make poor, short-sighted choices too.
I agree with what you say in principle, but just to play devil's advocate.
One difference between those highly paid software companies and others, is the expectation of performance. Netflix famously considers their team a sports team rather than a typical corporation. It's totally common for a great engineer to bomb out of those companies, just like how great athletes get kicked off top tier sports teams when they failed to perform due to reasons out of their control.
While most other companies, lacking the ability or willingness to pay top dollars, are probably better off creating a safe environment for engineers who can be on-par or even better than FAANG engineers, but lack the political maturity to survive those high pressure environment.
This is my experience with Agile projects. All the good parts for the developers have been stripped out and all it remains are the parts which benefits the management. How it’s followed in most orgs, it’s a low key leash system mostly however harsh it is to say.
People in middle management are often quite smart.
They saw a process that did an end run around them in favour of more self-management, and it worked well and got a lot of hype, that's terrible for their careers obviously.
So they fixed it and kept the same name for marketing.
I think that Jira killed Agile. It's such an overhead on the Agile process. Engineers spend more time documenting stuff in Jira than actually solving problems.
Jira is only a tool. You can use it for reasonable lightweight communication. Or you can use it as a basis for defensive posturing, preparing for financial change discussions and control freakish micromanagement. If you have a distributed team and can keep management out of it and stick to basic features Jira can help still today.
Agile is about culture and the culture of the pioneers and early adopters was different.
I‘m seriously thinking I should try to go more the Kanban direction these days to aboid the story point hitting / fitting in ever shrinking sprint trend.
Jira can be highly customized. I find it easy to use for day-to-day. I also have to deal with Jira with a subsidiary company, and their Jira is completely different, but it works well for their use case.
The reporting is a whole other issue. I don't use this, but my PM does because upper management keeps changing their reports and my PM has to keep linking and organizing. But as a developer, doing spring planning and burndown charts work quite nicely.
> it's a way to evaluate engineers, not create a good product.
Gonna play devils advocate here...would those two be mutually exclusive?
I feel there's a fundamental flaw in the garden of agile eden you initially described and that's trust...if you don't have it or lose it then gl trying to convince someone to essentially write a blank cheque for something they don't understand
If trust can erode a whole methodology then it's something to consider imo
You forgot the part where the product owner negotiates the number of story points down for every story, and negotiates up the number of sp in every sprint, and complains that the team gets a velocity of exactly 50% every single sprint.
That's the point of this article, but honestly it seems to be neither here nor there. Being disconnected from business goals happens with or without agile. Agile can only solve delivery problems, not defects in business strategy.
It's not that customers don't "get to". It's more that customers don't "have to" because they can see working software coming out of the team, and they are confident that things are progressing.
There are no "rules" in agile that says who can do what, just teams of people negotiating what works best for them. "Individuals and interactions" over process.
If you do not change the power dynamics in companies, then the exposure of agile will rapidly descend into micro=management, metrics gaming, pass the hot potato and self promotion.
I disagree with one bit. We always have our boards as public as possible. I think one of the main selling points of following a product backlog is the visibility it grants to stakeholders. You can point to stories in the queue and what acceptance criteria was agreed to. And they can see and adjust the priority order of tasks to be done. And see when stories are in a demo-ready state.
Estimates are an interesting one. The theory of story point estimation is that you are estimating the size of the work being and not even implying, let along guaranteeing any notion of timing. That being said, it's still sometimes a valid question to ask why something is taking so long.
Projects that involve value creation contain "open" and "closes" modes. Any process that squashes the "open" mode and only has "closed" modes will stagnate, fail or acquire technical/creative/product debt.
A great talk that I make everyone watch is John Cleese on Creativity In Management, it is a must watch for value extractors dealing with value creation that ultimately is creative work [1][2].
The open mode is allowing space, time and confidence. Closed mode is finishing/ship it mode.
"CLOSED" MODE
> By the "closed mode" I mean the mode that we are in most of the time when {we are} at work.
> We have inside us a feeling that there's lots to be done and we have to get on with it if we're going to get through it all.
> It's an active (probably slightly anxious) mode, although the anxiety can be exciting and pleasurable.
> It's a mode which we're probably a little impatient, if only with ourselves.
> It has a little tension in it, not much humor.
> It's a mode in which we're very purposeful, and it's a mode in which we can get very stressed and even a bit manic, but not creative.
"OPEN" MODE
> The open mode, is relaxed… expansive… less purposeful mode… in which we're probably more contemplative, more inclined to humor (which always accompanies a wider perspective) and, consequently, more playful.
> It's a mood in which curiosity for its own sake can operate because we're not under pressure to get a specific thing done quickly. We can play, and that is what allows our natural creativity to surface.
...
> Humor is a natural concomitant in the open mode, but it's a luxury in the closed {mode}.
COMBINING OPEN and CLOSED MODE
> Once we've taken a decision we should narrow our focus while we're implementing it, and then after it's been carried out we should once again switch back to the open mode to review the feedback rising from our action, in order to decide whether the course that we have taken is successful, or whether we should continue with the next stage of our plan. Whether we should create an alternative plan to correct any error we perceive.
> And then back into the closed mode to implement that next stage, and so on.
EXAMPLE
> ...one of Alfred Hitchcock's regular co-writers has described working with him on screenplays.
> He says, "When we came up against a block and our discussions became very heated and intense, Hitchcock would suddenly stop and tell a story that had nothing to do with the work at hand. At first, I was almost outraged, and then I discovered that he did this intentionally. He mistrusted working under pressure. He would say "We're pressing, we're pressing, we're working too hard. Relax, it will come." And, says the writer, of course it finally always did. We need both modes.
The world is value creators (product/engineer/creative/imagination) and value extractors (business/management/finance). Once the latter group get control, they end up squashing the "open" mode that is so key to making good products. The value extractors increase pressure but sometimes lowering pressure will let the product iterations flow to a better product end result.
Value must be created first before value can be extracted, but you can't force value creation with only the "closed" mode.
Value creation processes that make sure there is an "open" mode along with the "closed" mode are always more successful, and sometimes the "open" mode doesn't look like work so the value extractors cut it first unknowingly killing the product slowly.
The wrong type of Agile removes the "open" mode and cuts prototyping, iterations and refinement of creative value creation. A more open type of iterative development is always better.
This has a lot to do with putting processes over people and it's been a lengthy process of us as so called engineers getting our hands forced while maintaining an appearance of being cool and entitled
It's well known that the systems an organization produces are bound to reflect the communications structures within that organization this is known as Conway's principle
In order to maintain flexibility in the design it's necessary to maintain flexibility in communication but engineers have no incentive to push for free communication and stick together to see the job done right, each of them is attached to a management minder who reports to a rigid top-down governance structure with very different ideas on how software should be done, effectively stifling any potential dissent at the source and acting like an authoritarian regime with the desire to divorce the workers from ownership of their work and turn them into compliant and productive cogs in the machine
The reason for this is not because corporacy sucks but because humans suck at corporacy and when placed in group environments of over a handful of people we tend to resort to mob rule and groupthink at the expense of culture and individual rights
It's rather complex but incentives are the clearest indicator of outcomes people simply have no incentives to help each other but every incentive to seek permission and recognition from management
In such an environment it's been postulated that four types of personalities emerge as people attempt to exert control and these are known as Control Dramas:
- The Intimidator
- The Interrogator
- The Aloof and
- The Poor Me
You can look these up there are several good articles online about identifying and mitigating these but it's not always just one but a combination that people exhibit
Framed in this context you can see corporations as implemented naively operate on only four cylinders even if it's only figuratively or intuitively true it's far from the humane ideal of what agile intended and this also has to do with metrics becoming targets and incentives trumping ethics
In the end we trumpet DRY and try to 'focus on our work' while we repeat the same inane insane dramas day after day expecting a different outcome that's the worst form of repeating yourself but we collectively walk into it in every case
I'm personally carrying a lot of resentment at the engineer class because we've been trained to know better but we simply can't get over ourselves and wake up to the fact that we're not just part of the problem, we are the problem but as such we also possess the solution if we really sit down and think about it
The solution lies in the following concepts
A) it's possible to have alignment and autonomy it's not necessary to choose between chaos and blind compliance
B) It's possible to have investment and productivity but it's necessary to trust people and that ultimately is where we fail
Agile/software engineering practices broadly suffer a lot from the fact that not only is selling software a business model, selling Agile is also a business model, and when you buy Agile consulting it's impossible to disentangle whether it's being sold to you because it works or because it makes that person money. They don't even know because it's their job and they convinced themselves of its usefulness.
It can still be evaluated on the merits but IMO this greatly pollutes the speed at which software devs as a broadly conceived community can come to consensus understanding of this.
Also I think the comparison to lean manufacturing has always been very shallow. I get the metaphor, I just don't think that human resources in engineering can be optimized like manufacturing processes. This quote is the best part of the article:
> "You’d never hear anyone say, 'We help mechanical engineers be agile. That would be silly. And I mean that in the worst possible sense of the word".
As for the rest of it, I'm not dying to hear what the person who invented Agile thinks we should do next lol.
Absolutely. And, having done some agile consulting long ago, I'd say it's more pernicious than that.
The people who truly want to make deep change in pursuit of deep improvement are a small segment of the market. Worse, they don't need a lot of help. In the aughts, I had a few clients who really got it after 3 months of focused work, and then they were off and running.
But a large company that only wants to talk about change and maybe make some 5% improvements if they aren't too hard? That can be milked forever. Well, I can't, because I care about results. But consultants who either don't care or don't notice? They're golden.
I've seen several director types get promotions promising to get faster and more reliable work out of existing engineers by implementing this new religion... Agile.
The results were always predictable. Layering more meetings and stress on people who already have too much work to do, doesn't help things. But, you're still vice president.
> I'm not dying to hear what the person who invented Agile thinks we should do next
Agile has plenty of good ideas.
The problem is the almost religious following and, as you mention, the whole industry that has sprung up around it.
Even the initiators said that it was supposed to be a rough framework, to be adapted to your individual circumstances and teams. It was also a (much needed) counterpoint to the then prevalent waterfall model.
Now we have consultants, people strictly following something they read in a book or learned in a course, adhering to strict structure of meetings/processes, and even a big association with a single software product, Jira. ("You are doing it wrong!")
When you step back, a lot of the ideas make sense, and many teams will even implement similar workflows without having ever heard about "Agile".
> ... it was supposed to be a rough framework, to be adapted to your individual circumstances and teams.
> Now we have consultants, people strictly following something they read in a book or learned in a course, adhering to strict structure of meetings/processes, and even a big association with a single software product, Jira. ("You are doing it wrong!")
Yeah. Part of agile is that your process is an adjustible parameter. If you're doing it with a rigid process - any rigid process - then you are not actually doing agile.
When you have a large program team with mixed experience levels who don't fully understand fundamental principles, sometimes the only way to keep your sanity is to force everyone to strictly follow a defined agile methodology (LeSS or SAFe or whatever). That isn't optimal, but if you have to deliver working software right now you can't wait around to figure out an optimal process for your unique circumstances. Pick something good enough and move forward, then improve as you go
Agile doesn't ask you to figure out the "optimal process", it asks you to learn. One of the key things I've seen missed in almost every attempt at Agile/DevOps/whatever is the retrospective or the learning component.
The team/organization has to become a learning organization. That means a number of things, but the critical one here is learning from past failures and successes and incorporating that feedback into their model (ideally continuously, but in Scrums it'd be the end-of-sprint retrospective). You start down a path, and you find it's difficult. You don't press on just because it's the one you selected, that's the way of idiots. You examine the hardships you're facing, and you address them.
Absolutely. To my mind, the one vital agile practice is the weekly retrospective where the team looks at how things went, thinks a bit, and decides to try something in following weeks. Everything else is just tools people can try applying to solve the problem of the week.
I remember someone giving a lecture on software engineering methodologies who gave a pretty good summary by saying that "The methods are there to help your brain, not to replace your brain."
Haha, this was hilarious to read, mainly because, on some occasions, I've been a cowboy, at least in the context of this post. I like to think it worked pretty well, since, for what we were trying to do, the processes were fighting against us, so I just... did what I considered right technically, regardless of tickets and sprints and who's team should do what.
Whether it was right, I'm not sure, but people have been happy with my work, so that allowed me a bit of leeway.
There really is no methodology called "Agile". There are things like Scrum, SAFE, AUP, XP, etc. Some of those may or may not mandate things like "sprints", but the essence of agile (the Agile Manifesto) doesn't even mention the term "sprint".
The closest it gets to that is where it say:
We follow these principles:
<snip>
Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
> > "You’d never hear anyone say, 'We help mechanical engineers be agile. That would be silly. And I mean that in the worst possible sense of the word".
This quote is silly.
To me, agile is just good engineering practice, applied to software. Of course mechanical engineers apply its principles, and have for decades before the term Agile was coined.
And as such, this practice is far older than software.
The Apollo space programme is my favourite example: the ultimate goal remained fixed (man/moon/before end of decade), but all steps of the way were discovered and redefined over the programme's course.
Mission objectives were changed depending on what was learned, often even in flight.
This was a very nice and agile (and sensible) approach, regardless of what it was called.
You're just offering your own special definition of "agile", that of course doesn't fit anyone else's definition, and especially any agile consultant's.
Of course, even more ironically, it doesn't fit the original agile manifesto:
Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
> You're just offering your own special definition of "agile",
I'm not so sure.
What's the official definition? Don't give me the manifesto, that's just an implementation of common sense in development, as applied to software.
As a trained mechanical engineer (maybe that's why the quote about mechanical engineers irked me especially), the agile manifesto just reads like good engineering practice to me.
And indeed the signatories of the manifesto expected to start a huge discussion on what agility meant for any particular team or product, and how to best live up to its principles.
> of course [it doesn't fit]
That was uncalled for.
> and especially any agile consultant's.
I'm (something akin to) an agile consultant though :-)
Also, just to point out: maybe my definition of Agile diverges from canon. That's OK. I don't care to follow the canon, I care to do right by those who I've been asked to support.
> Of course, even more ironically, it doesn't fit the original agile manifesto:
> > Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
I'm not sure how you came to that conclusion.
How is "welcome changing requirements" a bad fit for "changed the mission objectives (as new information emerged)". Clearly the [competitive advantage/likelihood of success] was increased? In fact the entire programme was shaped such that change was explicit part of the plan.
I've stared at this quote for a while now, and I still can't see the contradiction.
Which bothers me much, much less than selling things like CMMI/PSP certifications or EUP/RUP which are done purely for paper pushing and selling the paper value.
Agile is an improvement on waterfall and you don't need to be certified to do it.
> Also I think the comparison to lean manufacturing has always been very shallow. I get the metaphor, I just don't think that human resources in engineering can be optimized like manufacturing processes.
Agile and Lean are empirical process controls, they are based on the same concepts. Ken Schwaber explains all this on the first chapter of his book "Agile Software Development with SCRUM":
Defined process control: same inputs always result in same output (manufacturing widgets on a production line).
Empirical process control: same inputs not always result in same output.
Schwaber conceived SCRUM (and was among the founders of Agile) after realizing software development required an empirical process control: give 2 dev teams same specs, 2 different apps will come out (they might do the same thing, but in different ways)
It can usually be done. The problem is that people assume that now that you have that list of subtasks, you can iterate through them one at a time until you've built the feature. That's the major disconnect.
What I do with my guys is I make them decompose the feature, but with the understanding that they'll probably be jumping from one subtask to the other, back and forth, as they understand what it is they'll be building. AND they'll probably come across new subtasks as they work through the feature.
It makes Jira look crappy, but it Reflects Reality (tm) which to me is far more important than keeping Jira clean.
That's how it works. Touch something here, touch something there, learn from it and slowly build up the whole thing. I think Scrum and Kanban may work if you have a somewhat mature system where you add incremental features but if you do something relatively new and big the backlog can not reflect reality. Or it forces a workflow that doesn't make sense. I have seen it multiple times where people refused to make changes to something because their story was done already. Never mind that the design turned out to be unsuitable.
I saw this happen before Agile was even a thing. The possibility of a bug in the spec was never a consideration. You had to hope your assumptions going in were correct, or your users were screwed.
A story I love to tell is the time where I was in the medical device industry. A requirement was formally reviewed with the owner and he signed off on it. The design was completed and reviewed and found to match the requirement, I implemented it, tested it and found it worked as expected and handed off to QA. QA tested it and verified that it correctly implemented the Requirement. The feature was turned over to its owner for so he could use it and his response was "that's not what I asked for!"
I work in medical too and I have seen the same thing. But to be honest, the same happened when I was consultant. You painstakingly go through every detail, everybody is happy, but when the product gets delivered, it just doesn’t feel right. That’s where rapid development with quick customer feedback is useful. Unfortunately often the customer doesn’t have the time to look at things.
> "I simply cannot "decompose" a single feature into 500 different sub-task Jiras."
Nobody can; that's the primary failure mode of waterfall. Anybody who is telling you to decompose a feature into that many subtasks might claim to be doing agile but they really are trying to do waterfall.
That's the primary failure mode of a straw man software development methodology called waterfall that Scrum practitioners like to use as a bogeyman to appeal to for rhetorical purposes during the inevitable arguments about niggly little details of how to implement Scrum during sprint retrospectives.
I've never actually done real waterfall, but I did study it way back when I was in college, and I have worked in government contracts, which tend to handle the work in a way that is similar to the waterfall I read about in school. One thing I distinctly remember is that it was designed to be a flexible and iterative methodology that would have been difficult to cram into a ticketing system in the first place, let alone cram into Jira while simultaneously carving the work into tiny pieces, up front, all at once.
FWIW, the only place I've ever been asked to do something like that is in ostensible Scrum shops. In fact, the only time I've ever seen anything that looks like the Waterfall of scrum lore is in shops that are trying to do Scrum. I am beginning to suspect that the Waterfall of Scrum lore isn't actually a thing that happens outside of Scrum at all. It's actually what naturally tends to emerge when you try to apply Scrum methodology in a situation where something along the lines of the real, textbook waterfall model would have been more appropriate.
As a concrete example, I currently work at a team that ostensibly uses Scrum, but where QA is a separate department with its own practices that the dev team does not control. They do still want some ability to anticipate work that's coming their way, though, so they're monitoring the scrum board for that purpose. This is the moment where it gets messy, because we're then asked to document things ahead of time, and it's a minor crisis if we keep it flexible during the sprint because any changes to the set of tickets becomes an inevitable hassle as they complain that we've screwed up work product that they generate based on those tickets. It's absolutely something straight out of waterfall horror stories from Scrum lore. But it's only happening because we're doggedly insisting on something that's at least cosmetically similar to scrum. If we weren't doing that, we'd be freer to choose modes of interaction and business artifacts that are better suited to the reality we occupy.
Waterfall was the dominant model of software engineering up until the late 1990s. It is how managers want software (and projects generally) to work. I promise, it was real! Back then, a quarterly release cycle was fast; 12-18 months was more common. With the rise of the Internet, everybody knew that couldn't work, but didn't know what to do, so there was a lot of experimentation in the late 1990s: Scrum, FDD, Crystal, Extreme Programming, and more I've forgotten or that were never named.
Out of this chaos, eventually came order. It turns out what mattered most in practice, just like before, was pleasing managers and executives. Effectiveness was generally secondary. So what we ended up dominating is Scrum, the most waterfall of Agile processes. Most shops "doing Agile" these days are still following a top-down, control-oriented, ineffective and unrealistic process, just like before. But now they use Agile labels for their mostly-unchanged process, albeit with a faster release cadence.
I don't believe that to be the case. The surveys I can find suggest that releasing quarterly or less often is very much in the minority. If you have data otherwise, I'd be interested to see it.
A reason you often see Waterfall-in-Scrum is because people who were using Waterfall wanted to get away from it, and they made it as far as Scrum (the name). They usually keep the same practices of massive design/spec documents that are developed in advance. They try to plan out the next 20 sprints (hah, I saw a team that tried to plan out 60 sprints 4-week sprints, it was kind of hilarious if I wasn't dying inside from the thought of it).
The biggest difference for Waterfall-in-Scrum versus Waterfall is that they've sufficiently (hopefully) decomposed tasks to have short target dates for delivering something to a test team or facility. They don't use it to get feedback from customers (the actual users, not the ones writing the checks). They don't use it to replan when things go wrong. They just use the whip and OT and get back on track.
Yeah, I think trying to perfectly describe the work in advance is Waterfall thinking. Most of what gets sold as "Agile" these days is Waterfall dressed up in Agile terms.
You'll note that we never did detailed planning more than a week in advance. We could have, but it would have been a waste, because it would have been speculation on speculation. Instead we'd agree on something small to build, get it working, and then see what we thought.
Creating a huge list of tasks is actually what I would call an Agile anti-pattern. It's something that I unfortunately see all the time. User stories are meant to be written from a business or end-user perspective. It's a high level description of what is to be done, for who, and why, not how. I personally don't even like having tasks on the board, just give me a well written story and I'm happy to complete it based on what's written in the acceptance criteria.
How would you implement a database, or operating system, without a big list of tasks?
Some things need to be designed, and don't work terribly well if they're evolved incrementally from user-visible features. Incremental additions can be, but there's also a risk of gradually degrading the architecture of a system through risk-minimized local changes by interchangable resources, I mean developers - which is what I generally see occur under Scrum.
I don't know if something is wrong with me, but I simply cannot "decompose" a single feature into 500 different sub-task Jiras.
No, nothing is wrong with you. But let me note that the Agile Manifesto doesn't say anything about Jira, or anything prescriptive about how small to make your stories.
If your methodology asks you to do that, I'd argue that your methodology is broken. But it's broken because it's shit, not because it's "agile."
Well "individuals and interactions over process and tools" is in the Manifesto, so I would say JIRA is implicitly covered. I am being asked to do "proper structured agile" by writing up many JIRA tasks in advance of learning what best to write, and I find it funny. It's not the disease though, just a symptom of having too many nonprogrammers around. Will resolve itself.
I am being asked to do "proper structured agile" by writing up many JIRA tasks in advance of learning what best to write, and I find it funny
Yeah, it's hilarious how people are being told to do something in the name of "Agile" that is almost completely opposite of the spirit of the Agile Manifesto. sigh
> just a symptom of having too many nonprogrammers around. Will resolve itself.
Parkinson's Law doesn't get enough of the blame for bad dev environments. It's so easy to feel like you're doing 40 hours of difficult, important work a week, while actually accomplishing fuck all at best (or generating more work overall at worst).
I bet a big chunk of the problems raised in this thread don't exist if everyone experiencing them cuts their team size in half.
Decomposing a new feature into digestible pieces is hard work and a skill that is learned over time. It's also a skill to know when something is small-enough, or has enough unknowns that further decomposition is wasteful.
Good product owners and managers know this and are good at it themselves. And the decomposition is typically at a story level - "can we take story X, break it into 2 smaller stories, and still deliver something of value?" The tasks are usually pretty self-evident once you break down the stories a few times.
For a lot of my work, if the story is "As a user, I need to do X" the tasks are simply broken into distinctly testable pieces.* Is there a database change? That's a task. Is there an API change? That's another task. Front-end change? Third task. And if you get half-way through and need to start over, that's life and it happens reasonably often. Yeah, there might be some re-testing. Or, a new story for next sprint.
It's up to me, as the manager, to make sure the stakeholders are informed and on-board. At the end of the day, as long as the team is making progress, I'm happy. And if the team isn't making progress, it's probably my fault (and almost never the fault of an individual contributor).
* In my world, tasks don't exist in isolation. They're all subordinate to a user story. Every task (piece of work) we do is done in the furtherance of a well-defined need of the user. And developers are never defining tasks on their own - it's done as a team.
To some extend, you could if you worked on the task and, as you worked, said, "what am I doing now and what do I need to do next?" and then plugged that into something.
It wouldn't be a complete decomposition, of course, a person watching would see your thinking unfold. I think speculative decomposition would be very interesting, especially in retrospective if we could see the rabbit holes we went down.
Decomposing is easy since we naturally have to do that as we work. Heck, those 500 tasks are probably in your shell, browser and commit histories, mixed in with a bunch of other junk.
The problem is tools like Jira make this heavy-weight, doing it up front makes it nigh impossible, and having others review all this stuff and it becoming promises blows up the LOE significantly. And, I don't think I'd want to be under that much of a microscope as I work.
But if it were very lightweight, where I'm just posting my thoughts and can see them as a quick dependency diagram, and maybe attach notes, commits and URLs to them, and other people can see them, that'd be pretty helpful.
> But if it were very lightweight, where I'm just posting my thoughts and can see them as a quick dependency diagram, and maybe attach notes, commits and URLs to them, and other people can see them, that'd be pretty helpful.
That's precisely the objective of "user stories" and other things. You write a high level version, put it in a backlog with priorities. When you get to it, you realize it's bigger than anticipated ("Oh, I can't just do X, I have to do A, B, and C."). So you turn X into three things, one of which you work on now, and the others in the backlog. Repeat until done.
I don't think Jira is necessarily too heavy-weight, it's the way everyone seems to use it. They want to assign the tasks now, not treat them as backlog items or things that can be modified in the future. Which pushes them back towards big-design-up-front and entirely defeats the objective, you're back to low throughput, high latency development.
It sounds like you're trying to decompose software into developer tasks, which is not what (my interpretation of) agile is about.
Forget the developer for a moment and take the user perspective. What's the first thing the user wants to do? Log in? Ok, that's a story. What's the next thing the user wants to do? See a list of widget prices? Ok, that's a story. What's the next thing the user wants to do? Change a price? Story.
If you can't sit down and think of a dozen narratives like this, then the fundamental problem that you don't really understand how people are supposed to use your software or what your software is supposed to do.
That depends on business requirements. In simple cases, auth can be as simple as dropping a little javascript on the page.
But sure, you can have follow-on stories like "user is denied access protected resource" or "admin sees resources accessed by user". Enough individually-useless stories and you end up with a useful app. That's kind of the point of agile.
> but I have to iterate on features holistically and sometimes speculatively.
YES. THANK YOU! I've been trying to tell people this for ages. Maybe other people are somehow capable of perfectly predicting every conceivable edge-case and consequence without even starting to work on something, but I can't. I have to start building something in order to see it clearly. And this ENRAGES certain kinds of managers, I have found.
Managers just want you to deliver on a predictable schedule.
Here's how you can solve your problem: Make as many tickets as you can think of, it doesn't really matter if they contain the essence of the problem or not, it just matters that there are many tickets associated with the task. Once you have your tickets, estimate them with as much padding as possible. If the manager complains that you're padding a ticket too much, make two tickets and split the estimate.
Once you have a big pile of tickets and estimates, you've bought yourself enough time to do the work. Go do the work, then mark all the tickets as complete. You'll figure out the edge cases as you go, as long as you've made enough tickets and time to do the job at a reasonable pace.
If you have extra time left over, get started on the next thing, improve your tooling, or try to help someone else with their tasks. If you don't have extra time left over, make more tickets next time.
Managers want a fiction to present to their superiors - the most happy my managers are is when what you describe happens. I like your approach :) I might have to be more explicit in creating a fiction. The only issue is if/when you actually run into things that significantly delay things right towards the end.
Where exactly is the problem with my strategy? I'm also a manager of a small team. My main goals are to make sure everyone is not idle, not burned out, and not missing deadlines.
My boss's goal is to try and get everyone to work every waking hour so we can deliver faster. My job is primarily to keep the peace between the executives and the workers. When I fail the workers, it looks like unpaid overtime. When I fail the executives, it looks like undelivered features.
I think the actual purpose of agile, from a developer's perspective, is to create more time to deliver quality engineering work product. From an executive's perspective, agile exists to squeeze developers into completing tickets faster. As a manager, it's my job to keep both parties as satisfied as possible. If engineers have enough time to build and executives get enough deliverables, then the company succeeds.
I read your comment as "create as many tickets as necessary to throw off management's understanding of the effort and complexity of the problem." Creating more tasks than necessary sounds like a waste of everybody's time.
As I noted in a parallel comment, on my team, developers are never creating tasks on their own or in a vacuum. It's done as a team effort during planning meetings.
Perhaps I should add that my boss (senior director) has never asked me about my board, velocity, or anything like that. Discussion is higher level - "is project X on schedule?" or "are you going to miss anything on your roadmap?" not "why is task X or story Y not done yet?" If your director is asking that, he has too much time on his hands.
Perhaps project managers who aren't good at their jobs.
I've reported to two different directors since moving into management. Both were very clear that they'd rather hear about problems early. And both have been nothing but reasonable when I've reported problems. Of course, the entire team needs to be reasonable for this to work, from the product managers to project managers to individual contributors.
And as a manager, nothing annoys me more than an employee who tells me everything is fine then misses a deliverable. Tell me you're having problems so we can find a solution. Please. That's why I'm paid what I'm paid.
Eh, those of us who work with morons need to figure something out, and a form of this strategy has worked pretty well for me. They're not even really morons, they're just more focused on having something to cover their ass than giving a shit about building the product. I can get away with making stuff up because they don't actually care about how I get the work done, they just need a long list of things they can check off to show progress to whoever is hassling them.
What I find helpful as a product manager, I discuss each feature with engineers - and we collaboratively break it down into a bare-bones "MVP" version, but consider nice to haves as future stuff or TBD based on what we learn. That helps push scope down and manage holistic iteration. Every feature should have an MVP version of it. At least asking the question can help break down that first user story.
The reality is that your ability to break things down depends on experience. I’ve built so many landing pages, for example, that I can tell you an exact breakdown of tasks. Been a part of so many SaaSes, I can tell you exactly what non-core features you’ll need, when, and how much work they are. I can also predict where you’ll hiccup.
But ask me to build something new that’s never been done before (at least by me) and the most I can do is shrug and guess. Maybe give you a rough sketch of an outline of subtasks.
Don't get me started when they try to push all clients into one jira, each one of them with their own complexities, release cycles etc.
Or when they try to measure team effectiveness using Jira un some way or another, every team is capable of doing more Jiras in the same time by just splitting them more!
You're right that there is a limit to the usefulness of breaking down sub-tasks. It's up to a team how granular they get.
Here is why it is important:
a) Risk management - if you break a feature down into sub-tasks at any granularity, you are creating an agreement (or at least a conversation) among your peers that this is how something will be implemented, and digging in beforehand to uncover areas which might impede shipping the feature sooner.
b) You're going to have to break down the feature at some point. Being able to think through this ahead of time can be challenging, but often times is the meat of the work you do. You have to get into the hang of it -- think top-down or bottom-up ways of approaching it.
But what if you don't have enough information or understanding yet to do that? Agile is not great for these tasks where you need to take some time learning or experimenting.
I would offer you a couple extra tools here:
- A "spike" ticket -- Agile is all about deliverables and commitments, but sometimes that doesn't work. So create a spike ticket, and define what it is you want to investigate. If you deliver something, great! If not, no worries. The important part is that in the future you've done work that enabled you to learn how to estimate or break down that task in the future.
- A time-boxed ticket -- similar to the spike, but you just make sure you don't spend more than an allotted time on a task.
Spiking is great as just a general development process even if you don't have tickets/time-boxed items just for them. For example in Basecamp's "Shape Up" process spiking may be an initial uphill technique used to suss out the rest of the cycle's work and uncover all the hidden issues.
Basically, you blaze a trail to the most disgusting, kluge-y, and otherwise slapdash implementation that validates your assumptions and satisfies your constraints while making note of everything that needs further work. That lets you bail early if some unknown issue will block success given the current criteria and constraints, and sets you up with the a list of the 80/20 work required to deliver the completed project.
That's not agile, that's waterfall. With my team, I usually have just 2 or 3 "stories" that are taken up during a sprint. The rest is up to the development team. Works quite well. No one's asking to create dozens of tasks. A rough outline of what we're trying achieve combined with a high-level overview of what we think would need to be done is usually enough to get started in a sprint. If we fail, we fail, no one gets mad. That's agile if you ask me.
The likes of SAFe argue otherwise, having you plan out and commit to _three month's_ worth of stories in advance. It's supposedly still "agile" because the plans you've "committed to" are expected to change as you go. Oh, and it's set up such that other teams are expecting to be able to depend on your team delivering stories by the sprints you said they'd be done, of course. No problem, as those dependencies probably existed anyway and now they're made explicit and public. As long as you've delivered the increment of work you'd promised when the three months are up, nobody gets fired. Totally agile.
Company and developers are busy and successful, so they hire more, which continues until they are no longer successful.
They remain busy, however, progress on the product is roughly constant. All the additional work capacity is spent on meetings and otherwise organizing the increased worker count.
I believe the above describes every situation in which I have been asked to break down Jira tasks into unnaturally small tasks.
This is not a question of agile or not. This is software estimation and design.
To be able to decompose a feature, you need to learn how to build the software in your head before you go to paper. Consider a large billing page, for example.
Step 1 is to look at the front end. What components do I need to build? (React might use components, or a set of partials and templates in rails, for example.) So, then, I know I need X subtasks, where I will build the pieces I need to expose that behavior to the client to start.
I then look down into the backend. That might be a simple task on the backend, or given 20 minutes of looking, I might see problems that I'll need to tackle. The problems are their own subtasks. I may be able to group some of the front end to a single back end ticket, or I might need a separate subtask for each.
Now, I'm likely to miss something. However, that's why this is an estimate rather than a concrete task list. It's to get started so that we know, at minimum, what it's going to take.
It's not necessarily simple, but it is a skill that can be developed.
> To be able to decompose a feature, you need to learn how to build the software in your head before you go to paper.
Even easier than building the software in your head is actually building the software. I often don't know what the shape of the problem is until I've built something. The users often don't know what they want until they've seen something.
The failure of Agile as implemented is that it's still all about extensive meetings and planning. Software is not like building a bridge where you write out the blueprints and the expensive part is then building the bridge. Software is the blueprint.
To be truly agile is to be able to get software features and changes running and out to users as quickly as possible. You can never get all the information -- if users could provide the details absolutely necessary to build the software on day one then they'd be the programmers. Being experienced helps you naturally scope problems but you'll still be wrong from time time. Being able to iterate on users feedback and dealing with your own failed assumptions is the key.
Yes and no. Testing is a very important part of agile, yet if you don't have a somewhat final internal design, you will find yourself changing your unit tests every time you refactor your code. As a rule of thumb, changing your unit tests is a no-no.
First off, it means your code is brittle. Second is that you can't trust tests that must change every time your code changes. Might as well not even have them.
Unit tests are supposed to tell you if your refactoring is still working. For the most part, you should only refactor implementation details, not the "API".
There is also a design to uncertainty trade off. The less you know about something, the less time you should spend designing because you can't design something you don't understand. But the more your understand something, the more time you should probably spend designing.
Knowing how much design is too much is subjective and personal. I forget where I read it, XP(Extreme Programming) or Code Complete, but someone worth listening said, to paraphrase, "I've never regretted spending more time on design before I started coding". And I'm pretty sure it was part of XP that said the main purpose of XP(Agile) is to deal with the unknown. The more you know, the less Agile and the more waterfall you should be, saying that for some projects, a 6 month sprint is perfectly valid.
I am in an interesting situation where I am both the programmer and the domain expert. Generally customers come to our team describing a problem that other companies can't figure out. We're pretty much allowed to design everything how we feel like because we're the best at it. We can do virtually any project in a single go of it without feedback from the customer, but we still do agile because it helps with scheduling, planning, prioritization, etc.
We're a "value add" team, which makes things really interesting. None of our work is sold, but the work is important to land large contracts for the companies core services.
> I often don't know what the shape of the problem is until I've built something.
This is the majority of estimation failures as far as I've seen. You can only "estimate" so far and then leave significant padding for all the other minutia that will likely creep in.
This is why I like to estimate on a more macro level. Define features loosely, with a few lines of text about what they are and how they relate directly to a business goal (how will it make money, make the product better etc), then as a dev, you should be aligning the work to that (which is a piece of cake because they're still flexible).
You should still have more granular planning, but it should serve the purpose of aiding the dev in completing the feature. You decide to do more granular planning when, as a dev, you look at a feature and go "The implementation is still ambiguous or I still have questions about how it relates to business goals".
Basically, invert the communication channels and shift responsibility to the devs. They have some loose business goals to hit, and the other staff provide support when they need it.
This solves so many problems I run into in enterprise dev. It kills Parkinson's Law (since the team members that are in the bottleneck are now responsible for the bulk of work generation within the team), it also gets rid of a whole class of poor decisions that are made without the proper context (since now you have a closer relationship between business goals and development).
Maybe it was just my particular job, but so much of my work was figuring out how to do xyz, so it was hard to give estimates for something whilst I was still figuring out the scope and complexity of along with how it even works and I was rarely, if ever doing the same/similar thing multiple times. Whenever project managers did push for me to break things down further they’d then immediately complain about too much technical detail.
Agile is the worst form of Software Development Methodoloy, except for all the others.
Which is to say: To all the people jeering for Agile's demise, please provide a superior alternative. I came from a world dominated by Waterfall, and I never want to go back to that. A lot of companies get Agile wrong, and it isn't a panacea, but it is much closer to what developers are naturally inclined towards (e.g. rapid incremental improvements) than Waterfall ever was.
So I challenge anyone who wants to replace Agile, please lean into how developers work rather than trying to mold their work onto your rigid front loaded methodology. Trying to bring in ideas of other industries, like engineering or architecture, that build physical goods and only have one shot at is a folly.
Agile is the worst form of software development methodology, second only to waterfall. It's still pretty shitty, though.
One of the reasons Agile (with a big A) is so successful is that its peddlers have convinced everyone that there are only two options: Agile and waterfall. When you're up against a strawman, it's easy to win. But it's absolutely a false dichotomy.
There's a quote in the article that I like:
> Find me an actual tech company that talks much about Agile, and I will be astounded.
In my experience, people at tech companies (at least the FAANGs) rarely talk about Agile, although they do talk about things like continuous integration/testing/deployment. They do not obsess over methodologies for how to move post-it notes around a whiteboard (Scrum vs Kanban) or agonize over how to word a user story narrative, or other parts of Agile Theatre.
People at some non-tech companies, especially those supposedly going through a "digital transformation", seem to have fully bought in to the crap that Certified Agile consultants are selling though.
So a superior alternative to both Agile and waterfall is what's in use at a lot of the big tech companies. For example, the engineering culture at Google, which relies on design docs and a very good set of developer tools and infrastructure. It's not perfect, but it's far, far superior to Agile.
And before anyone makes the argument that those non-tech companies are not doing "real Agile", but Google is, let's be linguistic descriptivists and accept that Googlers don't call their methodology "Agile", whereas the Scrum consultants at big corporates do.
This is ultimately the point I think Mary is trying to make. Agile became and end to itself rather than a way to learn how to build software within minimal waste and delay given imperfect information. Obsessing over it is a cargo cult.
That said , plenty of tech companies have inconsistent practices that don’t necessarily lead to great success. To say Google’s methods are “far far superior” to Agile assumes they’re uniform, portable or relevant externally, or that they lead to above average success. That’s debatable given Google’s reputation for abandoned half-built products and an almost comical lack of customer focus.
Yeah people have short memories of the pre-agile role demarcation and wasted handover time between them.
It was utterly frustrating to be powerless to improve specification quality and find out you built exactly what was asked but you were asked for the wrong thing.
The silos were horrible. Devs were often as bad as BAs, dev’s just were just crapping on the testers instead. Spare a thought for the production ops person at the very end of the chain. Here comes 3 months of developer work in one weekend and no it doesnt work but we’re still going live because the entire tech org is invested in this release. Now you have smaller squads, you can postpone a release without it looking bad on the top person and thus affecting your career prospects.
In agile models you have the power to fix crap processes that don’t work. You can call out any BS on the retrospective and make it super visible when things are being swept under the rug.
I worked on the customer delivery side of a $750M software project that was a steaming pile of shit, with critical defects that were known for a year with zero effort to address. The integrators were paid to deliver a spec, and it took about a year to get change orders created to diverge from the spec.
The old school waterfall outsourcing models are truly awful, but you don’t really understand how bad unless you’ve lived it. Stupid agile religious practices are dumb for any startup type org, but are probably better than the alternatives in many big enterprise scenarios, where the goal is chunk up the work so marginally qualified people can do something.
> To all the people jeering for Agile's demise, please provide a superior alternative.
The goal of Agile is to let smart people work incrementally towards a somewhat nebulous goal. The ceremony that's arisen around that tends to be put in place by people who feel the need to manage, but don't know how to help their developers achieve that goal.
The alternative, as far as I've seen, is to hire smart, curious people, let them work closely with the end user, and pay them a lot of money. In this situation, the engineers will typically self-organize effectively.
My org was like that when it was 20 people on one floor doing pretty much their own thing in groups of 2-4.
Now it’s 100 people across two countries, expected to collaborate closely with sibling orgs. Management philosophy has shifted to “we will ask a few handpicked experts to write down the best way to do a thing, and then everyone else is a machine for executing that procedure.”
If software engineering worked like that, we would have automated it.
But, see, Engineers do not self-organize effectively, without some kind of frame of constraints to guide them - customers/users, design, time, quality, tech, architecture, etc.
Assembling a talented team that ultimately delivers nothing of value is practically a cliche in this industry.
> To all the people jeering for Agile's demise, please provide a superior alternative.
Give individuals ownership over different parts and then let them self organize, that is all you need if you hire competent people. I'll never work at a place which doesn't work like that again.
To be fair, there are a lot of engineers on the market with a small-but-positive value under a structured process who would be totally useless in an environment like this. I can see why it might be rational to managers.
The problem is that software engineers are paided poorly compared to bankers, executives, and a myriad of other occupations relative to how it used to be 30 years ago. Even doctors aren't paid like they used to be. So way too many smart people go into finance and real estate, which are jobs that really anybody could do, except that our corrupt system makes it worthwhile to pay the smartest people to come up with new ways to scam the public and the government. See: Fed policy, CDOs, sub-prime loans, QE...
The public absolutlely paid the price in the form of bailouts. If those banks had been allowed to fail I would agree with you, but they knew they'd probably be bailed out from the beginning and used CDOs to ensure it.
QE is a direct transfer of wealth from dollar holders to investors and banks. No way around that.
Yeah, this is always what I hear from selfish people. What is "competent"? Even if I know what that is, hiring them is hard and ad-hoc. Agile is a way to orgnize _everyone_ to deliver. Even "non competent ones". Those teams will deliver slower, but will deliver, instead of failing.
Please do not aim to replace Agile, you'll just be creating new problems. Go back to the basics of the Agile Manifesto, understand where your organization fits in the problems that it aims to fix, then overview the different solutions proposed by various methodologies, pick and choose the ones that address the biggest problems that you're facing and adapt them for your own purpose. Start small, as each solution may introduce some processes and distract from the actual mission. Augment only when necessary. You're Agile.
You don't need to buy entirely into a single methodology. When people say Agile in software today, they really mean the Jira-flavored Scrum. Some now claim that they've abandoned Scrum and you hear more about Kanban. Sometimes they really are switching, other time they're really just doing Scrum with a Kanban board. But again, they're often falling into the same traps of forcing solutions, rituals, and processes they might not really need into their flow.
You want to be Agile? Start small. A simple checklist is a good way to start.
I currently work at a FAANG and we have a chaotic, low-touch approach that honestly seems to work pretty well. There are only two issues I see with it: it requires a high degree of trust in the engineers from management, and it could be possible to skate by doing the bare minimum without it being noticed (it is noticed usually, it's just not publicly shamed in regular standups). This has the major benefit of allowing developers to manage priorities as things change/pop up/assumptions change, and gives them the latitude to take on complex tasks that aren't easily decomposed or estimated a priori.
I think part of the issue is that Agile is meant to be a Process imposed from top down to improve productivity by X%, a way for management and a small army of backlog/task managers to say they are doing Something and having impact (or literally the only thing they actively do). Not only can it easily get in the way of that, it almost always fosters an environment of shaming and lack of trust, because it is too tempting for estimates to be taken too seriously or productivity/performance measured "objectively" by invoking the task-tracking system (in which case you incentivize only taking on very easy, very well understood tasks). It doesn't always devolve to that, but I think at many places if anybody Important up in the management chain starts thinking that way, it will inevitably trickle down. Thus any sufficiently large organization will corrupt Agile.
Perhaps some companies need that level of accountability and visibility, even knowing and disliking the drawbacks, but not all of them. I am honestly not convinced that a rigid process is necessary at all. Yes it makes sense to have a system where you keep track of things that need to be done, but if there's a culture of trust, I don't think the system needs to be gamified or fetishized as much as it usually is.
I think you're debating a strawman there. The argument is not that we need to return to other pre-agile SDLC methodologies but rather take what we've learned and go further. From the article:
> Now, continuous delivery is what’s expected, and the industry is ready for the next thing. But that next thing shouldn’t be another methodology, according to Mary.
> There is no methodology in my field of software engineering that can conceivably last more than five to eight years,” she said. “Everything that is 10 years old is obsolete. Everything that is 20 years old is archaic.”
> Furthermore, she said, methodology requires codification. Beginning with the Capability Maturity Model (CMM) in the ‘90s, software development methodology meant developers had to show they had standards and that they followed them, rather than demonstrating that their standards were constantly in flux depending on consumer needs. That’s the definition of quality standards lean manufacturing practitioners in Japan originally espoused, Mary said, and they’re not compatible with methodology. Instead, they’re all about learning.
> To that end, Mary is excited about all the ways artificial intelligence will allow software engineers to learn better and faster. Automated testing, continuous deployment and cross-functional collaboration are now table stakes, Mary and Tom agreed. Cutting edge companies will discover the next great approach through an engineering mindset and a willingness to learn.
___
Consider that Mary and Tom Poppendieck were responsible for many of the Lean inclusions of the agile movement, which (largely) came from watching plant manufacturing at Toyota. Similarly, much of the DevOps movement was tied to this as well. If you want to talk about what is next, it is likely taking a first principles look at what we're doing today, questioning best practices again, and saying, "if we were going to make a manifesto in 2020, what would it look like?"
I honestly don't understand anything that was in this article. Continuous delivery is directly applicable to agile. They are complimentary, but not even really related. From my point of view, the essence of agile development is just continuous improvement. The notion of user stories is a proxy to delivering a small unit of user value from idea to tested and deployed as quickly as possible without having to worry about future requirements.
You claim I'm "debating a strawman" but then quote the article that literally says they have no alternative in mind (my chief critique) and point towards artificial intelligence to solve the issue somehow.
The only "strawman" here seems to be taking my point about pre-Agile methodologies out of context, and using it to dismiss the entire idea that this article is unconstructive/has no actionable solutions.
The advice they are giving is to stop trusting methods, take the best practices that make sense, and trust your engineers to build a bespoke process from those building blocks.
> “I don't care if it’s Lean or Agile, there’s no silver bullet where if you just follow this formula that somebody else followed, you’re going to be great,” she said. “So today, my favorite word is ‘engineering.’ Just let engineers be engineers.”
Maybe we need to call it the Lego process. SCRUM is Duplo. Waterfall is worse Duplo. Start there if you need, but get to Lego instead. Maybe Duplo is enough for you.
Nobody you replied to said they shouldn't be allowed to criticize Agile.
The criticism in this comment thread was that their advice wasn't actionable, not that actionability was a prerequisite in order to criticize Agile at all. There was no false dilemma here because there was no choices provided (false or otherwise), merely a weakness in an argument raised.
> "Everything that is 10 years old is obsolete. Everything that is 20 years old is archaic.”
Which is not entirely true since some of the best parts of Agile are XP practices that almost everybody does by default now...
Someone once said that the only successful Scrum projects are also doing half of XP (as in, things Scrum doesn't prescribe but are essential anyway). I am still looking for a counterexample.
There are plenty of examples. The Linux kernel development process comes to mind.
I suspect that most knowledgeable developers rolled their eyes when Agile was "invented". It's a mish mash of a lot of things that were already obvious at the time and some weird kool-aid like pair programming. And just one more in a long line of consultant enrichment schemes.
Yeah. I maintain that most complaints about Agile are actually just complaints about crummy managers. It's really not that bad (in my experience) when the people you're reporting to have reasonable expectations and treat estimates as estimates.
The problem with Agile is that vanilla Agile almost certainly doesn't fulfill your company's requirements. However, if you put some serious thinking into tuning it for what you need, it will be serviceable.
Agile would work much better if every implementation stated upfront, "Does not work right out of the box".
Agile's pretty much only defined by being "not waterfall" (which is defined as "not agile, and worse") and "if it doesn't work, you did it wrong", so that's sort of a tautological statement.
The terms "agile" and "Agile" have two separate meanings.
Big 'A' - "Agile" is waterfall re-branded - an excuse for corporate empire building and business as usual. It involves lot's of meetings and not trusting those who build software to do the right thing.
Small 'a' - "agile" is the implementation of the manifesto, which basically comes down to smart people figuring out how to work together towards a goal, often by taking small steps.
Until the terminology is sorted out the discussion can't help but be confused.
Since businesses are the ones who employ software developers, 'Agile' is the only Agile that matters because that's the definition the people who pay money use.
We can talk all day about principle philosophical differences and what is/isn't 'agile,' but there has been a consensus from businesses in industry that 'agile' is 'Agile.'
Agile has become an excuse for terrible planning and offloading more and more work with ever increasing responsibilities to developers. At some point, enough professionals will reject following these terrible frameworks through different mechanisms. We're definitely not there yet, unfortunately.
Hiring a consultant to teach 'Agile' is easy: the change of practices from something completely top-down to something that empowers the people at the bottom is the hard part and some orgs aren't capable of changing. Too many orgs are built around micromanagement, they don't know any other way.
In my experience "agile" was a loose rebranding of ideas that had been around for a long while (see all the other non-waterfall approaches that predate it) and "Agile" (i.e. the manifesto) was just one attempt at one of these sort of methodologies.
Once it got popular, "Agile" was co-opted by all the usual players (cf "extreme" before it, to a lesser degree).
The important idea is "agile" vs. waterfall, whether or not that includes anything directly recognizable as "Agile". Or call it something else, doesn't really matter.
Recent history shows you can certainly do things directly recognizable as part of the Agile methodology while demonstrably not being agile, so modulo the no true scotsman fallacy it's a much less fruitful distinction to draw.
>In my experience "agile" was a loose rebranding of ideas that had been around for a long while (see all the other non-waterfall approaches that predate it) and "Agile" (i.e. the manifesto) was just one attempt at one of these sort of methodologies.
You are correct. The Agile term was probably marketed to the management types as a some breakthrough methodology to _finally_ control the budget for software development. Then it took a life of it's own as many things do.
True, but they were already branded albeit not as successfully. And this is very much one of those things that is somewhat evergreen - it just gets a new branding every decade or so.
I guess I'm saying "Agile" was/is one of several, and that's ok (good even). It's worth not getting bogged down on the "Agile" part and focusing on the more essential things.
IMO Agile has become regulatory capture. It's a means by which non-engineers can extract value from a booming market which doesn't directly benefit from their skills.
That being said. I think there is a lot of wisdom in the original agile manifesto. The core principles are solid, but the methodology has clearly been co-opted by consultants and supported by management looking to increase the headcount under themselves.
I've often struggled to understand why my team is made up of only 20% engineers with the other 80% pretending to create value by holding meetings to tell engineers what to build next when I feel like it's your clients that should be doing that.
Ultimately it's engineering that becomes the constrained resource which leads to technical debt in favor of pushing out product's features.
I would venture a guess that most engineers have used (critically) more software in their lives than any non-technical person driving the development of the product. Why then are engineers not the most consulted people on the efficacy and value of new features? I think there is a big myth out there that engineers are incapable of directly handling client feedback.
Forgive my omission I didn't have designers in mind when I wrote that.
Here is what I think: I would place designers closer to the engineering (necessary) side of the spectrum. Designers do in some cases build tangible things, are very technical, and they approach refinement from angles of impact that some engineers may be unaware of.
I do think there are quite a few interpretations of what a "designer" does across many industries. In the field of software did you have in mind architects, UX, product, something else, all of the above?
The definition of engineer includes design in both it's noun and verb form:
"a person who designs, builds, or maintains engines, machines, or public works."
"design and build (a machine or structure)"
But the definition of designer makes no mention of engineer.
As such, I would enforce that my designers are actually engineers and stay away from "pure" designers that do not have the technical foundation necessary to validate their designs. Design in a lot of ways is an emergent property of the engineering task at hand - unless we're talking about purely artistic pursuits.
Good designers can't design without a deep understanding of the engineering. Non-technical people shouldn't be driving or designing engineering projects.
I've been through three full-fledged "agile transformations" in my career. I hate agile so much. I hate it because it encourages dogmatic behavior instead of rational behavior.
I think it has survived so long because it provides its practitioners with two ace excuses: when things fail, they say, "what we did wasn't really agile," and when somebody proposes and improvement they don't like, it's always, "that sounds like waterfall." A team can't recover from their agile transformation until both of those phrases disappear from the team lexicon.
> “Way too much of Agile has been not about technology, but about people and about managing things and about getting stuff done — not necessarily getting the right stuff done, but getting stuff done — rather than what engineering is about,”
I'm not sure agile was ever designed to fix this. The whole process is really handy-wavy about the actual engineering: "we'll just make this a spike." The process also demonizes documentation and design work, which is antithetical to most engineering.
That being said, I love iterative development, and I like the concept of stories as descriptions of functionality. But I do think agile, as taught by most consultants, is really designed for consultants who build CRUD web-based applications. Sprints are timeboxed so consultants can charge by the spring, and stories lack implementation details because companies hiring consultants don't want or need to know how their sausage is made. The further away your product is from that area, the less effective agile is; some companies really need to design their sausage well, up front, because they are going to be eating it for years.
A process that's built up over years has become the way it is typically for good reason. And in my experience, teams forced to transition to agile will end up shoehorning their existing process into "agile" and calling it done, so most executives don't really see how their "transformation" failed.
> I've been through three full-fledged "agile transformations" in my career. I hate agile so much. I hate it because it encourages dogmatic behavior instead of rational behavior.
I'm going through that right now, in fact for the past two years our team has been transforming into agile. Although when I say team, it's more the developers that are forced to work in an agile way. The business is still very much waterfall, but for them it's okay. If they want to throw a new story into the sprint, they'll just call it being "flexible", and adjusting to business requirements. It's not because they can't plan two weeks in advance.
There's also way to much time spend on story points, I always assumed these were estimates, to get a sense of how much can be achieved, if a story runs over, so be it. However here, these are seen as deadlines, a 3-point story shouldn't take longer than a day or two. Our "scrum master" is constantly asking wether we can achieve all our stories this sprint, what's the point of even estimating if you're going to do that. And recently, we now have to plan our two week sprint, day by day, committing to 2 week plan before the sprint even starts. There's nothing agile about that to me.
It's gotten to the point where it seems that the projects that do more of the Agile "stuff" move much slower because they're spending so much of the working time doing that stuff than slinging code. Where I'm at, we're running something around 4 dozen projects at once and the teams that really focus on doing all the ceremonies are simply left in the dust by the teams that don't.
Here's another anecdote, a couple big teams that went the full SAFe route spent 3 years building something that ended up being thrown away and replaced in 4 weeks by 3 staff working part-time who were just given some instructions, some deadlines, and told to go code.
It's become repeatable, big teams toiling for years getting outpaced by smaller, more "agile", teams.
The balance has gotten out of whack again and it's really time to start over again. When I go back and read the original manifesto, what I see today in modern practice looks nothing like what was intended. The point in too many shops has been to accomplish the Agile things, not to deliver.
On the flip-side, your team of renegades managed to deliver in 4 weeks, while being great, I would question how sustainable that is. Also I get the impression they had skin in the game.
> what I see today in modern practice looks nothing like what was intended
You're 100% right. I don't think it means agile should die, I think it means people have forgot what it set out to do.
Scrum existed before agile and is a framework to help people work in an agile way. However people have got too wrapped up in the orthodoxy and have forgot what agile is actually about.
My mantra is simple: Release early, release often, listen to the customer
When I first got into software development it was because of open source software. On the SourceForge website, under the “Promoting your project” section, you’ll see it say “Release early, release often. Frequent releases state loudly that your project is alive”.
Years later, I learned that this philosophy was popularised by Eric S. Raymond in his 1997 essay The Cathedral and the Bazaar. Only, his version also says “listen to the customer”, an important part that’s all too easy to forget.
> My mantra is simple: Release early, release often, listen to the customer
I just wanted to amplify this simple, elegant, statement. I don't have anymore to add, but this is a better statement than the entire Agile industry has managed to produce.
> At the time, software development was suffering from a mistaken belief: that building things fast and building things well were fundamentally opposed.
I thing “good, fast, cheap; pick 2” is still generally valid.
Note to self: Remember whenever you think "Good,fast,cheap; pick 2", it frames your choices as either "produce something not-good" or "produce something and take your time or hire lots of people". You are again regressing to your ivory-tower-inventor tendency, you spend too long perfecting and the perfecting gets worse and worse. Instead it's "fast+cheap, fast+cheap, fast+cheap" to minimize the time between customer-hypothesis and customer-trial. You do that until you achieve "good enough". This is the surest and most economical way to achieve "good". This is agile.
A colleague once had a paper taped to the outside wall of their cubicle which read “Why do we never have time to build it right, but we always have time to build it over again?”
Management was not a huge fan of this piece of paper.
Developers are your biggest cost, so I never understood why fast and cheap would be opposed to each other. And if you buy off the shelve, most of the time it's both faster and cheaper than building it yourself.
So I always felt that fast and cheap go hand in hand.
I think the triangle is:
- features
- quality
- cost (=both price & time)
Edit: I forgot to mention that you cannot just throw more engineers at a problem to make it go faster. There is such a thing as an optimal team size.
Another edit (sorry it's Friday evening here;)): The faster you can get it done, the cheaper it will be.
This is unlikely to be true. Bad decisions are your biggest cost.
An employee has a "return multiplier" - for every dollar you spend on them, what is the return to the business? Sometimes it is high. If so, the developer is very cheap. Sometimes is it low, or negative. If so, the developer is expensive.
Why would it be high or low? Part of that is developer skill, but mostly it is how well your organization runs itself and makes decisions.
I 100% agree with you. I have this in my head like this: a developer with a low rate might be very expensive, and a developer with a high rate might be very cheap.
Organization is definitely a big factor.
But when I said developers are your biggest cost, this is from an accounting point of view.
We have to peg quality with rigorous testing or else cost (time spent) will be variable upwards to infinity (due to accumulation of untenable technical debt).
Therefore, if cost must be pegged due to limited time/funds and quality must be pegged due to existential risk then quantity/richness of features must float and be flexible.
All good product owners will learn this truth eventually.
Every time I see an "agile sucks" post, I take the time to read it and every time (so far) I have found they blame the process for some key part of agile they missed. Quote from the article:
“Way too much of Agile has been not about technology, but about people and about managing things and about getting stuff done — not necessarily getting the right stuff done.”
This is the whole point of agile: progress on iterations, inspect and adapt at the end of each iteration.
Your team might build the "wrong stuff" for an iteration, realize it (inspect), then make a course correction (adapt). If you end up delivering the "wrong stuff" is because you didn't follow this very core principle of agile.
I find it hard to believe these so called "Agile Early Evangelists" can make such a statement. Their background in lean development should have made the familiar with empirical process controls, from where lean and agile come from.
My guess the author quoted them selectively to fit the "agile sucks" narrative of the article.
I have been privileged to work in a company that really thought about and worked to prioritize the four values on the left. I would follow those agile coaches to any place they wanted. I have been a staunch defender in real life and online, because I've seen it work very well. I also have been on teams with other processes and seen how much worse it can be.
I will take the values of agile and push for those, and I'll take the lessons learned such as quick feedback loops, continuous integration, relative estimation, automated tests (which came from people like Kent Beck and Robert Martin pushing them so hard alongside agile), and the good stuff.
However, after seeing how badly it can be weaponized against developers, I'm certainly ready to throw out the bathwater, and I think this is what they're talking about. I've seen far too much cargo cult agile and far too much command and control with a light layer of SCRUM.
We have agile "coaches" who have never learned to code! They take a set of color-by-number technical practices but don't understand how or why they matter! I had to correct someone's slide that got the four values wrong, and their consulting group apparently had been copying and pasting them incorrectly from presentation to presentation!
The values and principles of agile are great. The current implementation has some serious debt.
(And while we're at it, we could update it. Too many people misunderstood the documentation part. Continuous attention to technical excellence needs to be upgraded to a value. Delivering frequently today means days instead of weeks.)
> However, after seeing how badly it can be weaponized against developers, I'm certainly ready to throw out the bathwater, and I think this is what they're talking about.
Poor management is a separate issue from agile. Even so, I would rather stay on a poorly managed agile shop than go back to a waterfall shop.
As far as the "values on the left", I like to explain them as a 55/45 split (and adjustable depending on your reality): we still deal with processes and tools, we just take a second to think whether a process is actually needed when we can just talk to someone instead.
Example: on a small team, you might just ask "can someone please approve my changes?" instead of having a whole jira workflow with code reviews and approvals.
The alternative is always Doing What Works. Alot of Agile is superfluous Waste. With time it'll only grow more added layers of inefficiencies. The true costs and risks always get hidden away.
> If so many people have trouble implementing agile maybe it just doesn't work?
The problem with agile and other empirical processes of project control is that it goes against the OCD tendencies of scientifically minded people. They assume that, since programming is all math and logic, software development projects should be as well.
They add micromanaging processes in a futile effort to control what they perceive as chaos and end up trying to fit a square peg in a round hole.
I.e. the old "you are doing it wrong" argument. My experience is that there is no right way that you can blindly apply on any project. There is no set of magical agile dogmas that works everywhere. And there is no substitute for decent engineers doing what needs doing.
Agile was a neat idea 20 years ago and it changed the engineering practices. However, unlike the methodology, engineering practices continued to change and modern software development practices automate away a lot of what agile processes tried to orchestrate.
If you are doing continuous delivery and lean development, you should be conceiving of and shipping software features in time units smaller than a sprint (i.e. continuously). That was very rare 2 decades ago and has become the norm for a lot of tech companies. It requires asynchronous processes and practices. It's enabled by having automated builds, automated tests, and automated deployments. These tools barely existed 2 decades ago and have had a far larger impact on software development then any form of agile.
Lots of large OSS projects and software companies have made the shift from doing feature based software delivery to time based software delivery. E.g. MS famously kept missing its own deadlines with windows vista, windows 7, etc. and shifted to having a more predictable release schedule. Ubuntu's LTS releases appear regular as clockwork in April of every second year. Linux ships a kernel every 2-3 months. Mozilla ships Firefox every month.
Time based releases are basically about releasing an unknown quantity of software at specific intervals and with a high level of quality. It involves having multiple asynchronous tracks of development and instead of planning which of them need to be ready they simply use quality gates to determine which of them are actually ready to ship. It's a shift from what to when and it emphasizes quality (i.e. good engineering) over schedule.
Most agile methodologies are still stuck trying to do feature based planning. It's the project mentality from the nineties where things get commissioned and have to be delivered on a particular schedule. Worse, these things are often under specified and then blow right by their planned deadlines. Just like in the nineties. I've seen a lot of agile projects shipping low quality software doing the wrong things right on time.
With these things the reality of agile is within corporate constraints. The Big managers will want to steer the company and dictate deadlines or goals. While the pure form of agile might work the reality of agile causes a lot of friction.
Keep in mind though problems also show up with waterfall or young small startups. Its just which flavor of friction/pain project issue you are willing to deal with
There are many fingers to point here, but I point mine at bigger consulting firms like Accenture. I have first hand experience with their miserable "agile" process at Microsoft.
If you want a stapler, you have to schedule a meeting 3 weeks in advance with 2 team leads and 3 contractors who decide what sprint "getting a stapler" will be assigned to. Then "getting a stapler" gets pushed back two sprints because some priority came along (a vice president somewhere just learned that his binder was on hold for four months). An Accenture contractor from India informs you that a hole punch is on the way. Apparently you checked the wrong box on the stapler requisition form, so you have to start the process over again.
Then the Accenture quarterly deck shows they met 97% of all stapler demands for the quarter! Isn't life so much more easier and more measurable now? But they will need to hire more contractors to keep up with capacity.
For the past several years now, each time I join a new team or project, my first objective is to detach and destroy the "Agile" process workflow.
When you finally liberate a team from Agile, it's just breathtaking how much you can focus on delivering working software that gets deployed with quick iterations that's closely aligned with the business and customer's needs. When free from the tyranny of Agile, teams can be effectively self-organize, remove micro-managers, and quickly adapt to changing needs and requirements. My experience is that staff are usually much happier, more productive, and less stressed once agile is gone.
I mean contemporary Agile as pushed by corporations and those awful "coaches" (who never seem to be actual developers) --- if you were you design a system whose end goal was making great developers unhappy, unproductive and locked into a dysfunctional system, Agile would be it.
> it's just breathtaking how much you can focus on delivering working software that gets deployed with quick iterations that's closely aligned with the business and customer's needs
That's literally the agile manifesto.
"Scrum" is one implementation of what agile was trying to achieve. Maybe that's what you're thinking of?
There's Big-A Agile and agile. The manifesto is really the latter, the former is a set (different depending on where you are) of very specific practices that neglect the principles in the manifesto (though, typically, they were derived from them originally).
Read SAFe Distilled or SAFe 4.5 Reference Guide for what happens in large enterprises (god SAFe is a fuck up). It consists of some good ideas, but also some very explicit practices that don't help in every effort (and sometimes hurt). It is literally the opposite of Agile, which is supposed to be about flexibility.
If you want to hear about its "success", just remember it was used for F-35's software...
Big-A Agile is based on the belief that adoption of practices is sufficient, and that deep understanding is unnecessary. This is the realm of cargo cults.
> If you want to hear about it's "success", just remember it was used for F-35's software...
This is the example I use all the time!!
Maybe agile is great when you're making an online shopping cart for a e-commerce website, but the idea of using Agile for complex, engineered systems is laugh-out-loud hysterically absurd. And this does not just mean spaceflight software, it basically means anything more sophisticated than a CRUD app.
Totally agree. I believe Agile works well in environments with shallow tech stacks, but it has worked terribly in my experience in product companies that build hardware, FPGA dev, embedded software, and other disciplines that can't deliver on two week increments or increments that align well with other disciplines.
Agile can work well in embedded, I've seen and done it.
The thing people have to forget is the notion of "deliver on two week increments". It's not about delivering a product that can be fielded each increment, in the case of an embedded system, but about delivering something that has some improvement or new testable component. I can't make an embedded radio handle, in two weeks, a completely new message type (well, depends). But I can do things in each two week interval that is verifiable. I can show that I've actually received the new message, that I can send it back out, that I can pass it through the various internal processors (if multiple processors are used) or processes (if a single one). Then I can start transforming it, storing it, changing other things about the radio state based on the message contents. Each of those is independently verifiable and completable within a short period of time. But taken as a whole, it's a 6-month project. The agile way has you make those small things, verify them, and then move on to the next thing. I can deliver (to the test team, to others using the system) the partially-completed system, it just can't be fielded (and that's fine).
And that's not unique to embedded. If you only focus on things that can be fielded in each increment, you'll never develop the more complex tasks, or address the tech debt.
I know, that's the irony. Agile as pushed today ends up with the compete anithesis of that. It's the difference between "Agile" (Capital A), and "agile"
I never really understood the amount of criticism aimed at agile by developers until I switched to a large enterprise. I feel like I’ve gone from a company focused on delivering working software which was supported by the common agile practices to a company which is Agile, really wants you to know just how Agile it is in every other company email, and one where our team will only be judged based on how Agile we truly are.
For example, there are days towards the end of the sprint when I’m not allowed to pick up new work and the infinite wisdom of the agile coach is that a ‘clean’ board by the end of the sprint is the what we’re really being paid to deliver (and starting something else would compromise that). This runs alongside serious customer deadlines which are hidden by the dates the Agile program runs by.
Can we just replace agile, and every modern management practice with some mix of common sense, talking to the customer, talking to the team, and being able to voice concerns to upper management where people actually listen instead of running their own agenda? =]
But this is the root of all these issues... Because everyone has a different perspective that underlies their "common sense," so this system of unspoken agreement just falls apart.
When you throw in the incentives of compensation and career advancement, politics and human nature are bound to corrupt the process further.
This is why codified process will always be better in the long run for most companies, because it's the only tool possible for combatting this
People that corrupt a process are often the ones it’s designed to stop. It’s not even done with ill intent more often than not.
How do you create a paradigm or process that can be amended adapt to a persistent threat without that amendment process itself being used as a tool to corrupt it?
I completely agree that you don’t need to assume ill intent. But by that same token, the fact that a paradigm or process isn’t invulnerable does not mean that it shouldn’t be used.
Bureaucracy, heavyweight process, and all rest are ways that systems protect themselves. Wasteful though, which is why new paradigms such as Agile come along.
Now the Agile ecosystem has become corrupted by a process not comparable to all the above. Not solvable by those means either. It’s a toughie.
“being able to voice concerns to upper management where people actually listen“
I think that’s what’s missing in most companies. We have 360 reviews, retrospectives and all kinds of stuff but there is no feedback channel up the chain. At my company whenever there are obvious problems management secludes itself and then a solution will be revealed to the underlings who never got heard. Especially in tech it’s pretty safe to assume that engineers at the bottom of the pyramid are as intelligent and educated as people further up the chain so I think their input is valuable.
It is human nature that when talking to your boss you put things in the most optimistic way that fits your understanding, and your boss hears it even more optimistically. After a few steps up the chain this results in a complete disconnect from reality.
Now, you say, reality eventually intrudes. Yes, but it is normal for upper management to not realize that deadlines will slip until about 2 weeks before they do. And will continue to think it is about 2 weeks off indefinitely.
> It is human nature that when talking to your boss you put things in the most optimistic way that fits your understanding, and your boss hears it even more optimistically. After a few steps up the chain this results in a complete disconnect from reality.
I learned this the hard way, maybe 3 months into my first real job. I was testing safety critical systems, but it was still being developed so the tests procedures were also being developed and executed. I was asked for my status, I said: I've tested about 60% of the system (this one was small enough that that sort of statement was actually valid), everything has passed so far. My boss heard: Everything passed. He released the build to the customer, who found a failure almost immediately (about the same time I did, but I had no idea it had been released). I was taken into a conference room and chewed out for making us look like amateurs (we were, when it came to software). I learned several things: 1) I needed a new job; 2) Never use the words "done", "everything", "all" until everything is actually all done, managers only hear those words and nothing else.
> Now, you say, reality eventually intrudes. Yes, but it is normal for upper management to not realize that deadlines will slip until about 2 weeks before they do. And will continue to think it is about 2 weeks off indefinitely.
A manager, fortunately not mine I was his peer though he got promoted for his "successes", would always say that his products never shipped late. "How can you say that? I know your last release was 3 months late." "We updated the schedule and we hit the new schedule." "But you didn't update it until the last month. It was 2 months late by then already." "But we hit the final scheduled release date." He just got lucky that the customers weren't loud enough for his boss to realize the spectacular, repeated failure until after he got promoted. The new manager got hit with it instead.
I too have seen that hears-half-of-what-you-said-and-only-the-good-parts, then gets mad at you because they are shitty listeners, in action. Hell, I've seen it with a guy who appeared to constantly be taking diligent notes, they were just very often incorrect! It's infuriating and there's no arguing with them because they just think you're lying or misremembering (even if you also took notes, or even prepared them in advance then read from them, and, unlike theirs, yours don't suck). The only way to deal with it is to communicate in writing.
The main problem for me is the misalignment of goals between upper management, middle management and the rest, the higher you climb the less interested they are in they user/client, they only care about some bullshit metric that will end up paying their bonuses.
This is specially visible in public companies where they only chase the metrics that the market looks in that decade, ignoring the rest or the actual user satisfaction (they do try to put a metric on that, with bullshit forms and all :))
XP, and several other processes, identify the problem as a mismatch between the goals of the developer and the actual customer (not necessarily the end user). Management doesn’t figure prominently in the solution which is probably one reason why a different form of Agile is usually chosen. I also don’t know why businesses are so reluctant to have their customers involved in software development. But you’re definitely right, when all the incentives align on the axis of management and their needs, you get garbage.
This is not to say that management isn’t useful or necessary, but they are a facilitator of work, not the patron.
Because the goals and needs of the upper management and of the customers do not align.
There's a lot of companies where delivering what the consumers want/need is not the end goal of the company, at best it's needed to help fulfill the end goal.
Most process pathologies are the result of common sense. Waterfall is a description of the usual reaction to undesirable results on the first project—add more planning steps and make people sign off on phases before moving to the next, more expensive phase.
None of that is ever going to happen until management accepts that developers can't give an accurate timeline on the spot, immediately, after a 10-minute overview of the project. Which means never.
I experienced a similar situation. The team leader looked back at the past few sprints and worked out how many story points we had completed, and calculated how much our salaries had cost the company in that time, to work out a "cost per story point".
He then went off on his own to talk to upper management and committed, without our input, to large new pieces of work, and was told what the budgets for those deliverables were.
At the next sprint planning, he was basically telling developers their estimates were wrong because the number of story points we were deciding equated to more money than the budget for those features.
Rather than play along, I simply said "Well why don't you come up with the estimates for us, then?".
To his credit, he did then stop trying to influence the votes after that, but it wasn't long before the product was put into maintenance mode and he was assigned to a different team.
A key success of agile was to provide a buzzword that let engineers say no when they were asked for a fixed estimate for a fixed-until-it-changes scope to fit in a Gantt chart.
Take agile away and they'll be straight back to demanding to know how long it's going to take to build something when no one's really sure what the something is.
> Women dominated computing professions from their inception in the 1940s all the way through the 1960s. As the scope of computers’ usefulness became clearer, however, those jobs started going to men.
Bullshit. Back then, the term "programmer" didn't mean what it means today. A "programmer" was someone who entered a program into a computer, or even earlier, plugged in wires according to a schematic. The actual development of the program was almost exclusively done by men, even more so than today (this is not supposed to be a value judgement, nor do I want to justify the situation back then or today).
It's really disappointing to see this tired myth of a supposed "Golden Age of women in computer science" repeated in the article.
Related: the article is misguided on the women thing.
I teach CS in college. I see it every day. Women on average are more interested to work with people than men. This hasn't changed despite trying to boost girls' interest in typical STEM fields for 25 years. HR departments have been pouring money into this like mad. Hasn't moved the needle. Research has shown that girls don't fare worse in math tests if they are told beforehand that girls are worse at math. In countries where the sexes are treated more equally men more often choose thing-jobs and women more often choose people jobs.
Who thinks that if society would treat everybody completely equal, all occupations would end up exactly even distributed across the sexes? There are real differences between the sexes.
The push towards exact equal distribution in everything is futile, hasn't worked and will not work.
I think it's more important that people can choose to do what they want to do.
This is simply inaccurate, at least in the US. The percentage of women in STEM has gone up. The percentage of workers in the computer field is lower than the rest and declining.
Your premise also confuses me as I would argue software engineering is more people focused than, say, lab work.
Do note that stem is not one field. It contains medicine and biology but also IT and physics.
Likewise IT is not one field. UI/UX design is very different from infrastructure or backend work.
Many stats and research lump things together.
Even if the percentage of women in STEM has gone up do you disagree with the assertion that: "Women on average are more interested to work with people than men"?
I believe that while societal factors have contributed to women pursuing specific career paths, if one was to factor that out or course-correct in some way you'd still see less women in engineering due to their preferences.
Is it wrong to feel like on average men and women are different in their preferences? This is not to say that there are not men who exhibit traditionally female preferences and vice versa. If we could undo the last 2000 years of societal programming (and run a new experiment) I think we'd see different preferences in men and women then we see today, but I seriously doubt you'd see 50/50 engagement across the board because men and women are distinct - although they certainly share a common set of attributes.
I was exposed when it was still eXtreme Programming (back when "extreme" was the most nineties adjective you could have) and didn't much care for it then.
I keep hearing it touted as this kind of universal cure-all but I just do not think it is applicable everywhere. On a personal level, the more any given thing is touted to me as the solution for any and all problems, the more suspicious I grow. The more fervor, the more I draw away. The more cultish it seems (convert, adhere, rituals, special names, and then finally the narcissism of small differences in practice as exemplified by that old Emo Williams routine), the less I want to participate.
The more I have seen it shoehorned into places where it seemed ill-suited, the more this was revealed to me, yet the evangelism continues. Nothing like watching the tape backup guy, suffering from a flare of gout, hobble over to a room to perform his "stand-up" routine to hammer that home. Of course, we "probably weren't doing it right," but the more I have seen the slavish adherence to the strictures of Agile the more it seemed like this was an exercise in polishing a boss' resume so that he could say he had done The Things when he went elsewhere.
Reader, he did.
Perhaps the Agile that can be critiqued is not the eternal Agile.
The weird thing is that all the criticisms of misplaced focus in agile made in the article were criticisms commonly made by early Agile evangelists (including Poppendieck!) of pre-Agile approaches, and the things pointed to that are needed which make Agile irrelevant are the things that Agile methods were specifically advocated as superior for by those evangelists.
The real problem doesn't seem to be that Agile is irrelevant, it's that Agile (and this is actually fairly quickly explicit in the Manifesto and accompanying Principles) cannot be limited to a siloed tech organization but must fully incorporate the business sponsor of the project, whether that's the firms business management for a software/services firm, whether it's an external customer for a firm doing bespoke software development, or whether it's an internal customer for an IT organization doing enterprise-internal development. And despite that being clear in the Manifesto and Principles, it very often is the case that “Agile” is seen as something the tech team is (or worse, does) that stops at their boundaries, and that fundamentally doesn't work.
There are other equally serious problems, like ritualistic adoption of fixed processes being described as “Agile”, which it clearly is exactly what Agile is most opposed to; the use of the phrase “Agile (or Scrum) ceremonies” is a clear sign that an organization has been infected with this toxic mindset.
Having been through "agile conversion therapy" at two different companies and then having seen what the companies actually did several months later, I think most of the value of 'agile' has been realized. To get much more out of it, you need some combination of a more capable culture and better disciplined people.
And I'm not talking about just engineering - I'm mainly talking about customers and management.
Most of the gains come from tighter feedback loops between engineers and other stakeholders than tend to happen without an intentional effort. This works because it is simple - tell teams to talk amongst themselves every day, get feedback from customers more incrementally than you otherwise would, etc.
Most of the rest of the promised gains need better disciplined customers and managers - ill-defined specs, dropping projects to pick something else up, only to switch back a couple months later, managers who don't pay enough attention to what's being done until it is too late, etc.
Perhaps the problem is that it is a management fad aimed at engineers. It needs a v2 aimed at nontechnical people, "become competent at asking for what you need".
- development becomes a 1st-class "business" activity a la accounting, sales---not that you necessarily do it as aanger, but you're looked down on if you can't
- a culture of "ask about the internals" becomes prevalent, where anyone who bought software without knowing how it worked was looked on as an idiot
Call me jaded, but that's probably because the cow stopped giving milk, and they need to come up with a new cult/religion/ideology to continue selling books and conference tickets (and consulting gigs of course).
I think Zed Shaw had the best (or at lest most entertaining) take on being jaded about "agile." Though, fair warning, it is even more vulgar than the URL indicates. http://programming-motherfucker.com/
Nearly everywhere I've worked the quarterly earnings report is the problem. Due dates mean that time has to be managed so any attempt to use a methodology seems to regress to some not fun way of developing software.
In places I've worked without the pressure of the quarterly earnings report I've seen that developers tended to use whatever methodology worked best. It could be Agile, pair programming, or just walking over to each other's desks and talking on IM.
As far as I'm concerned, "agile" refers to the principles on this page[1], and ONLY the principles on this page. Not Scrum, not Lean, not Kanban, not Xtreme.
The problem is, it's hard to sell a set of principles. To understand people and interactions takes months of working with people: it's much easier to sell them a process or a tool and leave. Customer collaboration requires building a relationship: it's much easier to negotiate a contract for your client and leave. Responding to change requires you to stick around and see what changes happen: it's much easier to sell them a plan and leave. And to arrive at working software you have to get a lot of things right: it's much easier to sell a bunch of documentation for software that doesn't exist, and then leave. Money ruins everything: the reason agile had to explicitly deprioritize the things on the right side of the list in the first place is that all the incentives in a software company push you toward the wrong priorities. The things on the right side of the list are all quick, easy wins that look good on a quarterly report.
There are companies who I've worked with who do agile (the principles) well. There's nothing wrong with looking at Scrum/Kanban/whatever as inspiration, as long as you realize that they're just processes: individuals and interactions matter more. There's nothing wrong with using Pivotal/Jira/Trello/whatever, as long as you realize they're just tools: individuals and interactions matter more.
Speed. Sometimes I wonder if people mean speed as in velocity, or if they mean the drug, seeing as they seem to obsess so much about it.
> Engineering is about seeing a problem, understanding it and using the technology you’re good at to solve it as quickly as possible.
Everywhere you turn to there is someone thinking that speed is the most important thing ever. Everything must be done quickly. The best way to do something is quickly. If something takes longer, it's clearly worse.
Even in an article about "the problems with Agile", people still fall into the trap of speed.
Engineering is clearly not about solving problems "as quickly as possible". It's about solving them in the best way possible, where you first define "good" as a balance between all the advantages and all the disadvantages of each possible solution. Speed is but one of the factors you evaluate.
I'm not here to defend Agile, but one of the things people get perpetually wrong is thinking about Agile as methods and tools. Agile is actually a set of values and principles. You were supposed to fill in your own methods and tools to support Agile values and principles, but everyone basically just said 'too hard; do Scrum'
> and we have mandatory processes and tools to control how those
individuals (we prefer the term ‘resources’) interact
This was/is literally true at a place I worked. Their official enterprise Agile process includes a long list of mandatory documents, one of which is a list of all sprints and sprint goals for the duration of the project, that must be checked into a document control system.
I still remember when a PM distributed this diagram as recipe for ultimate happiness. I only could think "are you kidding?". when you look at details nothing makes sense or it's just a bunch of words that sound and look good.
Tech guys like to do the same. One director once showed the "architecture" of the next big thing in our department. It was a bunch off boxes with "authentication", "JSON", "distributed", "NOSQL", "JSON", "Roles", "reliability" and twenty other buzzwords. He asked for estimates how long it would take. after asking what this means and what it's supposed to do I was out of the planning. Two years later there are still two guys developing it but nobody knows what it does.
Message aside, that is a terribly organized diagram. It looks like someone dumped all the things they wanted in it on the screen, moved them around just enough that they weren't overlapping, then simply... stopped, having done no actual organization.
Agile is one of those words that's come to mean nothing at all. It can be anything from "iterate fast and do weekly stand-ups" to "spend all of your time allocating point values to planned sprint tasks so that management feels like they're in total control". It's been co-opted by the very bureaucracy it was designed to reign in.
I was saying in a team meeting the other day that using jira stories as any kind of performance metric is wrong-headed and counterproductive and metrics should focus on the business value provided by the team and people looked at me like I grew a second head.
I had a situation where the CEO was bringing up complains from the PM to me about how there were so many Jira issues in the back log that I should have been hiring more people.
I said that it would take me 5 minutes to go into Jira and close out all the existing issues if that is what they are worried about?
I've written something similar on here recently, but to repeat: I am, at this point, pretty sure that trying to combine manager-facing and team-facing planning/tracking/task/reporting tools into one thing is fundamentally a bad idea.
The problem is that jira gives you a unified interface into all the stories that all your teams are doing, while not doing anything to track the business value they’re providing.
The main issue my teams have been facing with Agile methodologies is the number of the workflow interruptions built in. The only team members happy with those interruptions were Scrum Masters and PO's but that's because those were parts of their flows, so they had to have them in order to have their job done.
The only long term solution for us was to have days dedicated to Agile ceremonies and days where no team member can be interrupted based on an agile ceremony need (there were few exceptions, like critical bug discovery, etc.). In weekly sprints, we had at least 3.5 days of uninterrupted time and in two-week sprints we had 7-7.5.
That changed a lot the pace of those sprints as people had a lot of time to do their job and everyone was happy.
Everything but the daily standups... We had each day to begin with it, and it was great as it provided a more broad visibility into what is being done, if there are any issues, etc. But every other agile related meeting was a ceremony we have tried to manage as best as possible while not blocking its benefits.
When something develops to an extreme, it becomes its opposite. This is true for "agile". Agile has become synonymous with "Jira", which is a direct contradiction of its original premise. The original "Agile Manifesto" states: Individuals and interactions over processes and tools, Working software over comprehensive documentation, Customer collaboration over contract negotiation, Responding to change over following a plan. Ask somebody these days what agile means and they'll tell you "Jira" or some other tool combined with heavy process. Another example of people confusing the means for the end itself.
And also ask people if they really want all of "Individuals and interactions over processes and tools, Working software over comprehensive documentation, Customer collaboration over contract negotiation, Responding to change over following a plan." That might not really make sense in some industries...
And if they really want to consider all of that in a dichotomous way. Who really does not want "working software", and why would I even have to "prefer" that? this is just too much fundamental that we could as well say: we don't want to work on garbage projects, and it is stupid to have an extremely good documentation of a pile of crap. But why jettison documentation if "working software" is not even considered optional to begin with? I fucking want stellar documentation. Because why not? I'm tired of reading source code all day to try to understand what things were even supposed to do...
In some industries "agile" in its original definition can make sense. In others, not at all. Yet, tons of people will pretend they do "Agile" regardless of what it is, what they think it is, and of what they do. This is sometimes some kind of management virtue signaling; except it is not signaling positive things anymore to those who work.
It really has no meaning anymore. To be honest I'm not even sure it ever had, as implemented by most, out of the industry it came from (with associated practices that were also highly contextual)
People should just avoid focusing on fashionable shallow words, and skip right to the ideas: if all of Agile and even all of Scrum is what will make your project shine, just do it, but writing essays about it is not really doing it, nor is pretending it is a kind of universal panacea, nor constructing consulting services around cult practices. If you must do the complete opposite; do the complete opposite. And tell everybody you are "agile" without an once of shame, if that can help raising money or stupid shit like that -- I mean what is even more agile than doing otherwise than "Agile" if it is a better idea in your context; so you are not even lying :p
Spot on. The problem with much of Agile today is that Jira, the product is sold to management as effectively employee tracking tools that enable them to know who is good and who is bad and what was accomplished. It tends to turn engineers into ticket crunchers (chopping their heads off of thinking about products and isolating them from the customer) and causes planning to be incredibly near sighted or excessively structured.
The core of Agile, Scrum, DevOps, XP, TDD, etc, is just to get a developer to truly understand what it is they're doing and make a meaningful connection to the real results of it. But before they can ever begin to do that (which is a huge challenge in and of itself), the organization needs to get the hell out of their way, but at the same time, invest tons of money and effort to help them do what they should be doing.
If you just "step back" from trying to control the average bunch of engineers, they will miserably fail, because they have never gone to a school that taught them how to rapidly drive business value through software. If you hire the right people, they already learned all of that, and so they'll be successful.
That's how the Netflixes of the world survive. Their organization and process would seem totally insane to any "average" tech engineering organization. But it works for them because they learned how to work together the correct way, the business got the hell out of the way, and it also invested a ton in helping them do what they need to do.
Agile does not give you any of that. Agile is just a promise of what should be happening, but it doesn't tell you how to get there at all. It's a pipe dream.
Agile is not the problem, though. It's businesses thinking the engineers are simple tools to be used to produce widgets, and if they just shove enough extra business roles and processes around the engineers, that will end up creating value. But the solution is actually to remove all that extra crap, and get the engineers to do everything in a way that the PMs and DMs and QEs etc are no longer necessary.
Interesting perspective. Could you please explain what do you mean by 'Netflixes'. What precisely they do and don't (in contrast with less successful companies)?
Speaking of Lean, I remember my mother telling me about their hospital adopting lean and that meant they could keep only so many supplies on hand in the lab. I remember thinking at the time "wow, isn't it a bad idea to try to limit the amount of supplies on hand at a hospital"
I guess we'll have to see if we ever have a major health care crises. Wait...
And we wonder why the hospitals didn't have enough PPE on hand. Did the MBA virus spread to hospitals and did they misapply methodologies like Lean where it had no place, except as short sighted cost cutting?
One of the major problems in industry I've seen again and again is management, etc pretending they know more about the job and it's requirements than the people doing it.
As Lean originated in manufacturing with the WORKERS making the improvements and the WORKERS being empowered (anyone could stop the line if there was a problem) it's bit ironic that a corrupted version was used later to beat workers into submission and achieve petty cost cutting versus process improvement as in the health care anecdote above.
Calling it a to-do list instead of user stories? Not aligning teams on where we are in the to-do list regularly and removing and adding things?
Agile proponents often say "waterfall", but I have no idea how you would go about working waterfall day to day.
Would you just make all your user stories/to-do's on day one and never update them and now you have waterfall?
Having entered the industry long after agile became the new normal, it seems like the whole discussion is either "stand-up sucks" or people discussing variations of what is essentially "Regularly report where you are on the to-do list, often update the teams to-do list", but never "Why not this different paradigm instead".
Maybe I am lacking imagination, but I am not really sure what a serious alternative is here.
> At the time, software development was suffering from a mistaken belief: that building things fast and building things well were fundamentally opposed. Mary knew this to be untrue from her work in product development and manufacturing, where the ‘lean’ practices that sprung up in Japanese car factories and subsequently spread across the globe often ruled the day.
If that's part of the original reasoning, then it was very random. R&D has not much to do with manufacturing. So I would greatly prefer an actual example from "product development" rather than car factories...
I mean what build our software is e.g. gcc. I don't know if gcc is feeling lean, and actually I don't care much :)
I recently listened to a lecture about the future of programming, and there was a sentence that really stuck out to me. The speaker said something along the lines of "If you go to an agile conference, there aren't that many devs there and it's mostly management.*
As an ops type usually only on the peripheral of sprints etc I feel I don't fully grasp the nuances of the different methods enough to really comment, but that just really got my attention for some reason.
Found the video, linking at the timestamp that includes the manifesto for agile (which I think has some obvious flaws)
* Individuals and interactions over processes and tools
* Working software over comprehensive documentation
* Customer collaboration over contract negotiation
* Responding to change over following a plan
What goes horribly wrong is managers, and their incapability. They do not work with teams, instead they use agile as a means to simply get updates at the end of week and set orders down the ranks every Monday morning.
I can not even try to answer that since they are not even remotely equal. How often do you change the way you walk through your house, or how the water flows or the walls look?
Do you launch a new bed in your house to charge people to see every month?
They are not even comparable, like at all. If all you have is hate for something sure you can not understand it.
I have seen and tried to maintain the years of spaghetti code and quick hacks that Agile projects generate. It is a nightmare. I think i understand it just fine. It is a flawed premise. Projects should have concrete specifications and expectations at the get go. I shouldn't be forced to code quickly with a sprint gun to my head at all times, generating heaps of tech debt by having no time to retool unstable or inefficient portions of a project, as i am always busy scotch taping on new features that the codebase was never designed to handle.
If the customer wants a horse to run 60mph backwards, and the project manager has no idea that a horse cannot possibly do that, i have to hear why my "horse" should have been designed with Agile philosophy in mind. Agile is nothing but a bunch of techno-babble that "sounds good" but offers no practical advice on how to achieve those ends. It is the scourge of the earth and would love to see it purged from collective consciousness.
When I was a manager I'd get the team together every quarter and we'd agree on "this is what we're going to do" - and then we'd do it, usually. At the end of the quarter we'd have to explain why certain pressures pushed things out, but usually the business cared more that we kept churn down.
For over a year I pushed back on story pointing and things that felt micro manage-y to me.
It was very hard on me, but it was worth seeing the productivity.
Eventually I was forced to give in to Agile with the big A and left soon after.
I can't get another management job because everyone wants to do Agile in a way I hate to manage - so now I'm a developer again... :)
In my experience the main reason that agile mostly sux in large enterprises is because it is agile in name only. Not a single one of the people who are responsible from managing the process have even heard of the “agile manifesto” let alone read it, nor have any of them ever worked as a software engineer. So in most cases it could easily be better than what it is.
But I object to the authors complaint “and it’s pushing women engineers into non-technical roles.” and elevating the primacy of engineering above all else.
People come in all levels of competencies and have all manner of skills. I don’t care if you are a man or a woman. I care about how good you are at doing the tasks that need to be done to get the job done. And in large companies there are big jobs that require a lot of people and a lot of coordination.
I work with a woman who is not a very good software engineer, but she is good at administering and coordinating the work among other software engineers and she quite enjoys doing those tasks.
While she can improve on some of her skills as a software engineer and I try to help her with those, the author’s recommendation seems to be that because she’s a woman, I should push her away from work that she likes doing, that she’s good at doing, and which is important work to do.
This is objectively terrible advice, but some might accuse me now of male chauvinism. If so, fine. But I will forward this article to my colleague to ask her what she thinks and I’ll let her opinion be the ruling decision.
A lot of the bastardization and commercialization of the Agile core tenets could have been mitigated by the early pioneers broadcasting the dirty secret:
To deliver any real business value following these philosophies requires an extremely mature, experienced team. Not just great engineers, but also great communicators that actually care at least a little bit about the mission/product/goal.
This simply does not scale and is a complete antithesis of 99% of organizations culture and hierarchical structure.
I was a coder in the 80s and did XP in 1999 and became an early Scrum Master as a developer. Agile has been stolen from developers. The rise of Scrum came at the same time as the rise of the product manager, and the Scrum PO became a PM. From then on in many companies it was not about doing the right thing but getting the most features out of developers, to implement the PO vision, with little say. We became assembly line workers, put to comfort with high salaries.
Ultimately, people need agreed upon terms for communicating planning and expectations.
That's it. The more people are involved, the more complicated the process gets and all of these approaches evolve out of trying to find an agreeable and effective way of doing it so that everyone doesn't have to figure out a new solution every time.
As much of a buzzword hell as it is, I really believe that Scaled Agile Framework (SAFe) is the closest thing to the right balance of trade offs.
When I'm hiring scrum masters, seeing "Agile Coach" and "Agile Transformation" on a resume is actually a bit of a red flag for me. I don't need someone who can teach my organization how to theoretically run Scrum, I need someone who can engage with our dev teams, understand the expectations they're being held accountable for, the challenges in meeting those expectations, and tailor a methodology (probably Scrum-based) which puts the dev teams in the best position to succeed and be happy while doing it.
This may be a bit different depending on the make-up and maturity of the team. Sometimes, we need daily engagement with team members and "structured" collaboration, other times we just need to make sure everyone understands the sprint goals and then get out of their way. The challenge has always been when upper management wants to see a single dashboard which boils all teams down into a set of pre-defined metrics - and then positively reinforces teams (or their managers) for hitting metrics instead of delivering solutions. Training your VP's can be exhausting.
I fully agree. In general, any flavor of agile for software development that doesn't include the engineering focus that Extreme Programming's technical practices bring in (fast feedback, refactoring, good testing & design, CI/CD deployment, team ownership of the solution - weather you pair program or not) is doomed to become intractable legacy after 12-18 months at the most optimistic.
I still think agile has a place as a focus for discussion when you're taking a large organization from a waterfall model (or any model that tries to commit to delivering a set of uncertain features by a specific deadline) to a more reasonable and effective process for software development.
In this situation, you'd get shot down for following rigid Agile, because the process gets in the way of delivering value. What you end up doing is using the concept of "agility" to sell some agile-lean-hybrid-involve-the-stakeholders-think-small-and-demonstrate-the-value-of-delivering-value. It's not about the Method, it's about the outcome.
No one needs to go black-and-white rigid Agile, that's where it went wrong. But agility is a good way to describe the concept of efficiently changing (and handling change).
I just feel that every article about capital "a" Agile immediately sinks to level of pedantry that is a complete waste of time, so... I didn't read the OP.
The problem isn’t “Agile”. The problem is organizations which are not good at software development. Teams which fail with Agile will also fail with Waterfall or any other development methodology. Teams which generally succeed with one methodology may find a different methodology a bit more efficient, but they’re gonna be successful either way.
And just like writing software, when specifications of the agile process are not clear, almost founded on a “chose your own implementation” scheme, the result is a big-ridden over-designed and terribly unclear (and endlessly debated) process. implemented differently at each and every company. Just grand.
Just like the very process of software design this was meant to aid, they failed to understand the importance of clarity, brevity, and providing exacting specifications or instructions.
Fuck you, agile. This is not how engineering should be done in any profession. Thousands of hours of my career has been wasted clarifying this unclear process to swarms of people who have no single resource to learn from. And each new company brings a new “we do agile, but....” exception to adapt to, and damned be if anyone ever writes a single fucking rule of this process down, so we get to endlessly debate what is this “agile” thing at each and every opportunity.
Agile, as commonly encountered nowadays, is mostly just cargo cult. People chasing dogma and buzzwords with zero understanding of why and when it has great application and benefits. Just like so many other trends in the past.
Way too easy to "seem" productive while actually being net negative for the project.
That said, I've had excellent agile projects that have delivered huge value to the customer at cost and time well below initial estimates.
These days I ask people who shout for agile to actually explain the fundamentals to me, as though I have no clue. Very rarely do I find anyone who can hit even one of the four original core ideas and values of "agile":
And when I bring up the core ideas, and why they can work really well, I often see that the people who shout agile actually don't agree with the fundamentals.
Agile is what happens when stakeholders want a car but really need a wheelbarrow & end up with a skateboard that only has 3 wheels. Product re-brands it as a scooter and takes a victory lap & now your company culture is an extremely toxic work environment of implicit & unaccountable power structures.
I like the development methodology laid out my David Cancel in his book Hypergrowth. I like it because he has founded several large successful companies and actually used this methodology successfully. Unlike most of these "agile gurus" who have never sold a product to a customer in their lives.
In my experience "Agile" whatever that means is still the best of all the bad options. Is there really a better methodology? I feel like it works pretty well as long as management doesn't pick and choose the easy parts of it and then add their own layer of BS on top, which is very common.
Well, every company I worked with, "Agile" was just a means for management to keep feeling they're in control, when they're not, there's no such thing as in control, or to promote themselves with the higher ups.
My best team is me alone, but other than that, the best team I ever had was one in which there was no meetings, no dailies etc. It was just me and a few others, receiving the outlines of what the final product had to do, what inputs and outputs it should process, and then filling this outline with code and hard work until it was whole. It was far from perfect of course, but we weren't bothered by unnecessary processes. There was no agile back then yet....
That said, the methodologies are not the problem. The problem is peoples attitude and mentality and how they use them.
I've come to best appreciate agile by calling "agile" whatever practices work best for my team.
Sometimes we move things in and out of a sprint mid-sprint because new information came up and it's high priority? It's not ideal (and we'll discuss it in retro) but that's agile.
We've sat a fat 5-point ticket in our backlog for 3 sprints straight because it needs a decent sum of meeting time and dedicated attention from multiple engineers who keep facing higher priority work and not quite having time for it? That's fine, we're being agile.
Our backlog grooming meeting ended after 8 minutes because we had nothing to discuss and we're all focused on delivering? Very agile.
Three sprints? LMAO. I've had tickets that sat "In Development" for the better part of 6 months because higher priority stuff kept coming up, but no one wanted to acknowledge that we had more pressing work to do :-)
Each of the things you mention sound perfectly fine if it works for your team and you are able to deliver your customer’s highest priority items while keeping your team happy.
One thing that's for sure is that Agile completely shifted the culture of software engineering, and generally in a good way. I am very thankful for that, and I think that this is where Agile has done its job.
Then, the problem with frameworks like Agile is that smart people will use them wisely, and less smart people will try to apply the concepts without really grasping the ideas and not really gain anything out of it.
But you can't really prevent people from reading the book, and do stand-up scrum meetings and sprints and shit...
Unless someone comes up with something else (which most likely will be equally twisted) Agile is here to stay. I just wouldn't mind watching conversations about Agile die.
I think we need Outcome Driven Development- we define a metric measured in say graphite, we link a ticket to that asserting the ticket will make the metric change this way or that, and we commit code to make the metric change
so we start a process of defining what we want, implementing how to measure it (there could be a null metric and the ticket is to make it not null) and then measuring our success of changing the metric
this will have organisational impacts as well - no one should take a ticket without authority span to impact that metric
this will start in the direction of software as literacy or the developer anarchy
Tangentially related, has anyone tried to implement the ideas described in Juval Lowy's new book, "Righting Software" (https://www.amazon.com/Righting-Software-Juval-L%C3%B6wy-ebo...)? His methodology of project management seems much more systematic than week-by-week sprint planning.
I’ve worked for 2 big oil and gas firms. I don’t care much about checking agile boxes. I went from being damn near employee of the month to short list for being let go when those companies started to live and die by “agile”. I’m about 50% to blame as it’s a great demotivational tool. The other half is managers forgetting why they are running those agile projects. I left both places within 6 months of agile being gospel. Not sad at all.
I agree with the title but find the reasoning hard to follow. It seems like the author keeps changing playing fields and tries to stitch a single narrative.
Csp should replace it. Dog food and turtles all the way down. If you can’t model your workflow in terms of processes and typed channels with buffers what business do you have implementing anything more complex (conways law etc.)
THAT said agile was a breath of fresh air at the time and it got us to question a lot of assumptions related to how we specify and develop software.
I never understood story points. Is it just psychological to use a different unit of time, so that managers' expectations aren't so hard and fast?
Story points remind me of those weird units of work the cloud providers bill you for, or the company scrip that a coal mine would have issued 100 years ago. I call story points AgileBucks.
I think it’s a purposeful abstraction for relative estimation of a task. Since nobody is good at estimating the exact number of days a particular task will take, story points are a way to give a general estimate of task complexity (usually people end up equating this to a rough timeframe) without having to commit to a specific number of days.
In our 2 week sprints we have four possible story point values - 3, 5, 8, 13. If the story should take a couple of days, it’s 3 points. If the story will probably take the full sprint, it’s 13 points. If the story is somewhere in between, pick 5 or 8.
Agile's early evangelists wouldn't mind watching Agile die
It's easy to say that, but the obvious follow-on question is "and replace it with what, exactly?" Maybe the answer is in TFA, but I didn't read it yet. I hope they have something to propose, otherwise this discussion is pretty vacuous.
I think it's probably a good reinterpretation of the original manifesto that is a bit more fundamental and a bit more direct. I like the concepts a lot.
The Agile paradigm has been corporatized and all of its capabilities turned into heavy process and oversight bullshit. But worst of all, management rarely sees the need to get involved, especially from the financial management perspective. It's very often a zombie project management apocalypse in the making.
There is a surplus of "organizer" roles in IT, call it PM's, call it Agile Coaches, call it PO's ... for every software engineering methodology. This is indeed because these roles are far more accesible than the 'hard' engineering skills in IT.
How many people here refused advice suggesting to go with one's strengths and instead took a different path in life, developed new capabilities, and acquired new strengths? Progress was slow and difficult. Yet, you persevered. You weren't agile, were you?
Did anyone actually read as far as the sub-header? "Agile" is used to scapegoat a lot of issues but gender equality is a new on me. Pigeonholing women into non-technical roles is a problem but I don't see how dumping agile would solve it.
Agile as it is practiced has created a new set of roles, like "scrum master". However, if not agile, that role would probably be called "project manager", another role that female engineers are often pushed toward.
I thought it was dead already. The people that pushed agile where I worked already moved on the next hot thing twice. Now programmers may have a chance to go back to the roots of agile and do it right, without micromanagement from evangelists.
the essence of the article is that agile is mainly a project management methodology. It is for decomposing tasks into chunks that allow you to deliver something valuable in the given time frame. One of the best parts is that if you run out of time or money, you have something that is usable with what should be the most important features.
What it doesnt give any guidance to is how to organize information about how to build the right thing. If a system is very large, without some methods to understand and communicate what you are building, it just becomes ad hoc. Agile is not a product management/requirements identification methodology.
Agile is not a methodology or a process, it is literally[1] a set of values and principles which can be summarized by "stop being stupid and trying to reproduce what they do in construction engineering, and start discussing about the why and collaborate, doing things that matter, and being flexible, since after all, we're doing _soft_ware.
The set of methodologies and processes that ensued, as well as the entire industry of coaches, consultants, evangelists and "practitioners" was probably coming from a good place - trying to propose an implementation for how to put in place those abstract values and principles, or to help with that. The commercialization, envy and corruption that followed is what the problem is. "Agile" has become a synonym for "cargo-cult brainless implementation of sprints and stand-ups to copy something called scrum but effectively doing things in a very much waterfall and old fashion that isn't even remotely close to the original intent".
The problem is of semantics order. What does need to "die" is the "agile" industry, with cargo-cultish coaches whose only value is to repeat Scrum says X, XP says Y, Agile says Z, my other customers do Ω, without trying to convey the reason behind those implements ; "agile" methodos like "safe" which have very little agility backed in and whose "Enterprise Architects" proponents usually don't get any of the intent.
But take a look at the manifesto[1] and tell me that you want it to die, I feel like the arguments will be very complex. Re: the that we should become "engineers" (semantics and cargo-cult again), there's a very good reason why agile applies well to software, but not to mechanical engineers. The economic equations between those two practices are completely different[2][3], the "engineering" phase of mechanical engineering is cheap compared to the production costs and so iterations have effectively an extremely high overhead cost, whereas the "engineering" phase of software engineering represents most of the cost, and so iteration and adaptability have a very low overhead.
But saying "agile needs to die" because of how the "agile industry" corrupted it is similar to saying "email needs to die" because what you see most is spam.
I’ve been doing XP for 22 years, and was on Ward’s wiki as the C2 project was being executed, watching the ideas grow in real time. I worked for Pivotal for the last 5 years. Here are my thoughts.
Agile alone is insufficient to successful products, which the original proponents would tell you. It’s a body of practices. There are more practices than just those. People seem to want “12 steps to an easy rich life” and want to scream when someone offers only 6 of them.
Most of the Agile practices the industry has adopted and evolved without calling them agile. So in that sense, it’s a “success”.
But agile coaches often are so focused on the original 20 year old practices and they miss the bigger picture of business and products and supporting technology, and the evolution that’s taken place in each during that time.
Any software method that is delivering software for users to consume has to be complemented by outcome-focused approaches like user-centered design, product development, customer development, and budgetary funding / management practices that don’t weaponize the use of openness, sharing, and metrics for political purposes that hurts people’s self worth. If you’re missing those, agile isn’t going to help you much.
Ultimately just letting engineers be engineers is partly how we got into this mess in the first place. People don’t know how to organize themselves without some kind of constraints: design constraints, time, physics, customer constraints, quality, etc. Talented teams turned loose that ultimately deliver little of value is a cliche at this point. Agile tries to use time as a constraint to limit active work in progress to force the delivery of customer visible / valuable results that can be tweaked. It’s not the only way to constrain the problem space, but “cost of delay” does have a fairly universal explanatory value in showing what really matters to a business, as lean product development and manufacturing has shown. But that might not be the outcome you’re looking for.
whatever process or practices you do, Agile or not, it has to be organized end-to-end to be tied to some kind of tangible mission or outcome or else it’s just a form of self-deception. For example, if we think products need to be usable and solve actual problems, and that design can evolve, then Product owners need to speak for the Customers and have the power to make decisions. Engineers need to be empowered to make the technical decisions. These seem obvious but they’re rare: committees and political strings attached are the norm. If you get both an empowered balanced team of product, design, and engineering you’ve got potential for an engine of collaboration and learning, which is the whole point. Don’t build projects, build human/techno systems that grow and improve and evolve.
Agile is also not universally applicable and much of the resentment stems from a religious conversion therapy or Developer Rehab approach to marketing (even though some really could use a stint in rehab). Agile is applicable to some kinds of software (user-Centered software in particular), which happens to be a big chunk of industry. It isn’t applicable to everything, such as deeply technical components, pure or applied scientific R&D, or certain kinds of exploratory work. Nor is it applicable to jobs with set and unchangeable requirements.
People are best to understand there are a spectrum of practices and processes suited to different environments and stages of organizational evolution. Or they could reject such complexity and nuance and just adopt SAFe, I guess.
The article mentions Agile as an attempt to bring lean manufacturing methodology to software development. I make software which is used as part of lean manufacturing initiatives (among other initiatives), and see a lot of different manufacturing environments. I want to point out that lean manufacturing is often the wrong tool for producing significantly more of something complex or ramping up production speed of a complex product. In its defense, you could say that lean should be this tool, but is usually so misinterpreted or done so incorrectly that it fails to be this tool. (funny that agile reportedly has the same problem)
Generally speaking, lean is a tool for reducing various kinds of 'waste' and 'doing more with less'. That's the part people seem to focus on anyway. The problem is that people become myopic. Lean becomes the justification for premature optimization and focusing on details that don't matter.
Sometimes, waste is good. Or, stated differently, not all waste is equal. If you have 5 machines that each produce $1000 of value per hour run, and you're attempting to go lean by rearranging them so you can lay off a $20/hour employee, then you are focusing entirely on the wrong thing.
Lean is often pushed with the idea that employees shouldn't be standing around doing nothing, or that you shouldn't produce excess material which will sit in a pile. The problem with this is it often fails to account for needed excess capacity, and when something goes wrong, everything falls apart.
The correct move (depending on margins) is usually to hire more inexpensive humans to stand around and make sure the expensive machines never stop generating value because you overburdened one of the humans. When you want to make things faster, you don't stop producing when the next machine in the process can't keep up (producing a pile of unused parts). You buy another machine that performs the next process or figure out what it needs to run faster.
Lean is the methodology most people use when they can't make big changes that will have a major impact on production. It's a tool for making the existing (possibly broken) system function better. It's culturally good to focus on reducing waste, but often it's the waste you're not measuring or thinking about that's killing you.
Lean isn't bad any more than optimization is bad, it's just not the tool you typically want to be starting with. I work directly with customers, have no deadlines that aren't self imposed, and couldn't tell a story point from a scrum master, so I can't say if the failures of lean manufacturing implementation extend to agile, but I'd be curious to hear if they do.
I implemented Agile scrum on my team at the behest of my organization. I did it enthusiastically at first, because I thought it might make a difference. My opinion changed within the first 6 months. I think it's a waste of time.
Our stand-ups are pointless because they're just status updates. Not much of consequence can happen in 10 minutes anyway. I ignore our metrics at the end of each sprint. They're meaningless. Our retrospectives are largely useless other than giving shoutouts to team members. I feel the sprint structure leads to Parkinson's law.
This situation, however, is perfectly normal because Agile advocates "people over processes." My team doesn't give a shit about the Agile process, so it's mostly like forced physical training but without the fitness benefits.
Scrum should at best be viewed as training wheels for agile teams. Not the end state. Good teams abandon scrum for Kanban / Lean concepts once they start building good collaboration structures, better communication with business, earn trust by delivering and recognize (as you point out nicely) that the sprint timebox is artificial B.S. in practice. I think the Parkinson's law can be a common trap for teams to fall into with the Sprint timebox malarkey.
Managers trying to control engineers. I don't know how we are OK when people in charge don't understand what they are managing. Agile was an attempt to take control back to engineers but it was co-opted.
Feminists are always promoting numerous and spurious explanations for why women seek out non-technical roles The qualities of women themselves being a sexist and therefor a priori false explanation.
Because we’re still dealing with it everyday. I can’t even count the number of basic trainings I’ve gone through and then seen everything they preach go directly out the window
As many pointed out, unfortunately most businesses employing 'agile' don't seem to be 'agile' at all from management side, so we still have all sorts of broken practices used industry wide which are absolutely idiotic.
I'm working with a team that the PM follows Agile like its a silver bullet solution but is obviously terribly flawed.
> During planning, everyone understood that the estimates were _estimates_. Tasks could take longer or shorter, that was OK and even expected. The goal was to improve velocity, not to accomplish every story, every time.
> Engineers felt comfortable taking stories in areas they knew nothing about. A stated goal was that every engineer understand every piece of the project.
> Standups were team only. Engineers felt comfortable saying they got stuck or needed help or got lost in a rathole and didn't make the progress they hoped.
> Demos were important so that the team and the clients could understand what had changed and what new features were available.
But it quickly got lost - managers and PMs and Directors got involved and Jira boards became published for all to see. (In the beginning it was whiteboards and sticky note). Standups and Demos were all about self-promotion. No one ever wanted to take on a task they weren't 100% certain they could do. If a task was 3 point it needed to be done in 3 days or there would be questions.
When I left the last company it had gotten outrageous. Every task should be completed in three days and in production in five days - and if not that team was Doing Something Wrong.
( We were told that this was standard FAANG practice, I have no idea how true that was )
What happened was what you'd expect - shortcuts, tech debt, unit tests cynically design to pass and meet code coverage expectations instead of actually usefully testing.
The reality is that any process is going to fail one senior leadership decides it's a way to evaluate engineers, not create a good product.