Here's a video on YouTube making the case for why agile was an innovative methodology when it was first introduced 20 years ago.
However, he argues these days, daily scrums are a waste of time, and many organisations would be better off automating their reporting processes, giving teams more autonomy, and letting people get on with their work:
First, it's worth noting that many organisations that claim to be "agile" aren't, and many that claim to use agile processes don't.
Just as a refresher, here's the key values and principles from the agile manifesto: http://agilemanifesto.org/
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
* Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
* Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
* Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
* Business people and developers must work together daily throughout the project.
* Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
* The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
* Working software is the primary measure of progress.
* Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
* Continuous attention to technical excellence and good design enhances agility.
* Simplicity--the art of maximizing the amount of work not done--is essential.
* The best architectures, requirements, and designs emerge from self-organizing teams.
* At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Your workplace isn't agile if your team is micromanaged from above; if you have a kanban board filled with planning, documentation, and reporting tasks; if your organisation is driven by processes and procedures; if you don't have autonomous cross-functional teams.
Yet in many "agile" organisations, I've noticed that the basic principles of agile are ignored, and what you have is micromanagement through scrums and kanban boards.
And especially outside software development teams, agile tends to just be a hollow buzzword. (I once met a manager at a conference who talked up how agile his business was, and didn't believe me when I said agile was originally a software development methodology — one he revealed he wasn't following the principles of.)
Let's say you have a team of 12 engineers, and each engineer makes $160,000 a year.
That's $76.92 an hour.
Taking 12 people offline for a 1 hour meeting means that meeting is costing you $923.08. * 5 days a week = 4,615.38. * 52 weeks a year = $240,000.
You're burning a quarter of a million every year just having meetings. Also likely, these aren't the only meetings they're in.
How much money are you spending preventing work from being done?
We used to have a daily stand up first thing in the morning before anyone had even had coffee for gods sake. "So what's everyone working on?" Fuck if I know, I haven't even read my email yet.
5 min starting the meeting - people joining, some company/team announcement, etc
5 min reporting plans for the day (really just "working on X, no assistance needed")
5 min discussing any issues from step 2
That's it, and we're often done a couple min early.
We do two teams back to back, and since I'm a lead, I usually join both so I'm aware of what's going on. So 30 min total for two teams, and I'll sometimes sneak in some other syncs in the extra time between stand-ups to avoid yet another meeting (e.g. discuss a prod bug with QA or discuss a process change with the scrum master). We're planning on adding a third team to our office soon, and I think we can do it in 10 min per team.
If your process looks significantly different from that, fix it.
You better believe it exists and it ain’t rare either, especially when half of the fucking team is in India and needs their hand held and the only time that can happen is 6am pst in the goddamn morning
I'm afraid that you lose far more than that just going to and from the bathroom, the coffee machine, or down the hall to your office from whichever door you had to walk into. This is not to say that your calculations are wrong, it's more a question of whether that is a useful metric.
@ajsadauskas@technology Is also worth noting that the daily scrum should not be about reporting. It should be the team coming together to plan their day.
@BarneyDellar@technology You're right, it should, in truly autonomous cross-functional teams that have a high degree of delegated decision-making.
But that's not what tends to happen in many larger, hierarchical organisations.
In those organisations, what can tend to happen is the daily scrum becomes where managers get to micromanage details and staff are expected to report back their progress.
(I'm thinking about one past job in particular, where it was explained to me that: "The scrum is important because it allows our manager to keep track of our progress and set priorities.")
@ajsadauskas@technology Oh yeah, seen that too! But if you’re daily status update isn’t working for you, maybe you should try having a daily scrum instead :)
And that's why we don't let our managers in to the standup. Here's who we have involved from a leadership perspective:
architect - usually doesn't attend
team lead - there to answer technical questions
project manager - only if a release is pending
That's it. We don't let the director, product team, or VP join, they instead need to communicate through the scrum master and team lead instead. Most of the time, the above people aren't expected to contribute to the meeting.
It sounds like you need to teach your manager to use your issue tracking solution. That's where tracking progress happens, stand-up is for identifying issues, pivoting when requirements/priorities change (happens through scrum master), and arranging collaboration between individuals. It's not for progress tracking.
The idea of agile is great, and easy to sell at a company in my experience. The problem is that the ideas in the manifesto can only be attained if the business stakeholders feet are in the fire as much as IT. That HAS to have top down support from leaders that understand software. But, in every agile company I've ever seen (I was a consultant for 15 years, so I saw a bunch), eventually a project goes south, and the business stakeholders throw tech under the bus by saying: "We're not in IT. We didn't know we should be thinking about what we want (and not just waiting until the end to demand more and more and more)!", and they fucking get away with it. Boomers in senior leadership, who don't know how to work their car stereo, say "Yea, that makes sense. IT, why do you suck!?". And then "agile" is dead. Tech learns to cover their ass, and demand clear requirements up front and get signoff.
I'm fortunate that my boomer VP has taken the time to learn and internalize agile. If we ever lose our VP, I'll probably leave the org because company culture (outside of my dept) is such that our next VP is likely to suck.
@ajsadauskas@technology we’ve customised our agile practice to fit the team. And it has evolved over the years. We usually start new projects using a very traditional approach and evolve it depending on the team, skills, and culture. I think the original principles still hold.
As always, it depends on what problem you need to solve. I still think these methodologies are sound as long as you ADHERE TO THE CORE PRINCIPLES.
It's not about reporting or speed, but rather communication and quality delivered at a sustainable pace. It's also about collaboration with the user/customer. Management often don't understand this (or chooses not to).
A stable, mature team should be able to do every-other-daily, but scheduled check-ins are valuable.
@airwhale@technology The issue is that often the core principles of agile fly in the face of how many big companies and organisations work.
Big orgs are often built around hierarchical command-and-control. They're built on monofunctional teams, processes, and procedures. They're built on KPIs and reports. They're built around getting stakeholder approvals ahead of waterfall projects.
So the bits of agile that tend to get picked up and implemented are the kanban boards and daily "scrum" meetings.
And the bits that tend to get left on the cutting room floor are the bits about products being the most important output, the autonomy, the cross-functional teams, the ongoing customer input, etc.
Yes, you are absolutely correct AJ. "Enterprise Agile" is its own beast, and where we usually need to start at higher management levels. Education is important for them to understand their new roles.
Without buy-in and active collaboration towards "real agile" from managers, we will not succeed in moving away from micromanaged waterfall.
I'm looking at this from the lens of my own org, which I think strikes a decent balance. As a brief intro, I work in an industry where a day of downtime can cost our customers millions, and a bug can also cost millions due to regulatory fines.
Estimates are bottom up, priorities are top down, and daily reports are largely opportunities for short form discussion about changes to requirements, delays, etc. We spend about 15 min/day, M-Th, on stand-up per team. We have six teams spread across Asia, NA, and Europe, so face to face communication is difficult.
With that out of the way, I have some comments, which I hope will lead to good conversation.
Build projects around motivated individuals
I disagree with this, but perhaps I'm misunderstanding. Projects should be built around customer needs, and individuals should be hired/assigned as needed to fill those needs. Individuals should be given leeway to work on projects they're interested in, but only within the priorities set based on customer needs.
The focus should remain on trusting your employees, but there needs to be frequent communication so problems can be caught and addressed early.
The most efficient and effective method... is face-to-face conversation
Again, I disagree, the most efficient is text, and the most effective depends on the information being conveyed. Stand-up works well face-to-face, but technical review can usually be handled through text, with face-to-face being an outlier.
My rule of thumb is if there's more than 3 back and forth messages, we probably need a face-to-face discussion. I can handle several text-based conversations simultaneously, while I can only handle one face-to-face convo at once, so most things should be text first with face-to-face being a fallback.
if your organization is driven by processes and procedures
This is a squishy concept since too much or too little process leads to problems. I think the amount of process should be directly linked to the risks associated to violating that process.
For example, here are some processes we have in place:
deployments to production require approval from key stakeholders - product team, project manager, support team, OPs, and the relevant team lead
larger projects require approval from architect, product team, and relevant team lead before work begins
larger code changes (e.g. introduce new core tech, large scale refactor, etc) require informal consensus from other team leads, which includes a period for those teams to review the proposed changes
Each of those is based on risks directly tied to customer needs. A bad deployment can break customer use cases, cause support overhead, etc. Projects starting without approvals can miss requirements, overrun estimates, and delay other important projects. Large code changes without proper communication can delay other projects who have to manage conflicts with the new change.
So the focus should be on keeping processes that provide value and retiring those that don't. For example, building confidence in automated testing can help ease deployment anxiety and thus loosen deployment processes.
agile tends to just be a hollow buzzword
Agreed.
Also, agile itself isn't ideal for all projects. We find value, but we've made some changes to fit our customers expectations. We release about once/month, and more frequent releases are generally not wanted by our customers.
So we have each team release to prod every 2-3 months, usually combined with another team. Agile prefers more frequent releases (daily if possible), but we're not really interested in doing more than two in a month.
Anyway, great post! Hopefully people recognize the BS in their organization and push for change.
@ajsadauskas@technology as with so many things it depends on the people involved. we have a daily 15-min standup that's good for raising issues and blockers, asking questions, keeping the team across releases and significant production issues, ensuring that everyone has work for the day, etc. it helps that it's run very effectively. all of that can be and is done in other channels but it's a good way to get everyone on the same page together. does it cost money? all meetings cost money. but i would argue that good efficient meetings pay for themselves.
And 15 min is the same as someone messing around on Reddit/Lemmy or whatever at the start of the day instead of getting right to work. It's a non-issue.
An hour-long meeting though? That is definitely something to scrutinize. 15 min? That's a coffee break.
I honestly believe that the people who complain about these aren't using them properly or work for people who don't know how to use them properly. People have been using some version of the huddle, standup, or SCRUM meeting for a very long time. Whether it's useful or wasteful is probably more a question about the people who are using them.
That sounds like taking the guidance to an absurd conclusion. In my org, we have either the product team or support team do acceptance testing, and support team validates the change in production at each release. The documentation isn't comprehensive, but it is sufficient for all relevant parties to understand how the feature works.
Our documentation consists of:
original story the developer takes up - must include requirements and designs (if relevant) before work begins, and ideally some additional examples from developers and QA for edge cases
code-level documentation - comments, commit messages, etc as needed
user-level documentation - best effort, usually maintained by the product team to help on-board customers
notes from support - usually common problems and solutions
There's no comprehensive documentation, but there is sufficient documentation that product team, developers, and support are on the same page. Each team creates whatever documentation they need internally. That means developers don't waste a ton of time generating screen shots, technical documentation around new functionality, etc, they just create enough to move it along to the next person.
@ajsadauskas@technology I use them mostly to gauge whether folks understand what they are doing and if not to start a side bar after the fact to course correct, early in analysis if possible.
My direct teams do work that is partly exploratory into domains they don’t understand so a 15 min check in to see who needs guidance each day saves pain and money.
I would say other teams adjacent to ours have turned theirs into order giving status updates. I’m no longer welcome at those.
My company goes the opposite way and holds team standup and then a scrum of scrums after with everyone because my manager is fucking brain dead. Fortune 500 btw
Wow... You'd think they'd understand separation of concerns.
I'm a lead dev and I've never attended a scrum of scrums. I occasionally attend high level feature planning (POs + project managers), but never scrum of scrums. That nonsense is left to our scrum masters and project managers (I assume, I've never been).
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
1, 2 and 4 all together sounds like a recipe for incessant alignment meetings. Especially in organisations where teams are not stable, where people come and go or have multiple projects to take care of. It is just a loss of knowledge and everyone has something different in their minds.
This sounds like a management issue, not a methodology issue.
If your teams aren't stable, that's probably because they aren't feeling satisfied at work. If they're expected to work on multiple projects, the constant context switching can be really draining and demotivating. I'm guessing you have tons of meetings because that constant churn means people need to be constantly brought up to speed.
Agile can help with that. With Agile, you only care about what happens in the next week or two, and at the end you'll have completed work on typically one project. Whether you work on project A or B depends on capacity, not whether you've worked on it in the past, though preference is certainly given to projects that you are familiar with.
Communication doesn't need to happen with meetings, it can happen with kanban boards, recorded knowledge transfer sessions, and code-level documentation. You should always approach software dev as if you'll be pulled from the project at any time and be brought back on after 6 months or more, so make sure to leave notes that you'd like to have when returning to the project. I don't consider software to be complete if it's hard to follow and poorly documented.
And change only needs to be communicated to impacted parties. There's no reason for team B to be notified of a change in team A's requirements, that communication will wait until the project is delivered (preferably in text form). There's also no reason for all members of a team to be involved in the change discussion, only those it directly impacts (e.g. I am a BE lead, and I'm often left out of FE discussions between my FE devs and design/product). Syncs between teams only need to happen when something is delivered, and even then can be handled mostly asynchronously through text.
Spot.on. my business has adopted an agile mindset across the entire org, but it's still waterfall, because IT have so much governance in place and outsourcing contracts that prevent teams from actually working on things in a fluid and agile way. Every member of a squad is on multiple projects, plus our systems are so broad we cannot have a resource from each source system dedicated to a squad.
Secondly, no documentation? We moved from an on-prem Oracle DB to GCP so that we would have one central place for data and across all business units.. there was no documentation and we had to spend the next 4 years reverse engineering the data marts because all the IP left the business.. it took 4 years because of the previous point.
And because it's big corporate business, you have to make it work otherwise you lose your big bonus etc etc
The principle is “Working software over comprehensive documentation… That is, while there is value in the items on the right, we value the items on the left more.”
Agile absolutely needs documentation but it shouldn’t hold up delivering working solutions and shouldn’t be more complicated than necessary.
We don’t want the old-school projects where software was ready but not delivered until a bible of doco was typeset, printed and bound.
I think thread OP's point about documentation is that you shouldn't have dedicated items/tasks just for documentation. You've got to document as you go. I always come back at the end to clean up documentation but once a piece of code is complete and proven to work, I document it. Usually even adding in-line comments as I go.
We don’t want the old-school projects where software was ready but not delivered until a bible of doco was typeset, printed and bound.
I miss those days. That bible of documentation was usually the means to have the others, i.e. the customer or other teams using your software, be able to do their work in that software. And I feel that by delivering software without extensive documentation you are extending your agile way of working to the customer. When does agile stop and actually deliver every component meant to be delivered?
@ajsadauskas@technology
Funny video. He's apparently doing real CD and his stakeholders know every day what's going live. I don't know how he works in detail, but very likely it's pretty agile. It's just not by the (scrum) book.
The authors of the agile manifesto were very experienced software craftsfolk and "just" pudlished their common sense. As the guy in the vid does. If devs communicate anyway, e.g. if you have rotating pair programming, you probably don't need a daily ...
Each org is different. There are organizations doing agile in a shit way, there are organization that are shit because they don't do agile and there are some that do OK because they take out of agile just what they need. In my first job they would write all the requirements up front, agree the price, sign a contract and then discover crucial functionality was missing. So they could either deliver useless product and piss off the client or do some extra work for free. It was shit. In my next company everything was nicely divided into sprints but the process was so overgrown working there was super boring and most project didn't even finish, they just got cancelled somewhere in the middle. My current company mostly lets teams organize themselves and is using agile to monitor progress and react if something gets delayed. It's mostly fine. Agile is not the problem and it's not a universal fix. You simply have to be smart about which or it to use and how.
This comments speaks to me. From day one you could see the problems with agile and my gods, if you dared to push back you were 'not cooperating with the team' and other BS like that.
I have yet to see an agile/scrum way of working that does not devolve in waterfall within 5 nano seconds. Funniest was the IT team that needed to support about 10 other teams (developers). Good luck in getting agile with that while diving into a tunnel where 10 teams start pulling your resources on the fly. The IT team was on the end (they tried like 5 times to enforce agile on us) absolved from using agile as the complete project would come to a stand still in a day if we followed the agile principle.