Is “doing Kanban” just having tasks on a board without any sort of sprint structure? I feel like it’s a bit of a false equivalence. While I won’t ever defend all the cruft that comes with Scrum, the article seems like a bit of a straw man.
"kanban" is all about maximizing flow of completed tasks, and minimizing/limiting work in progress.
Someone is either working on a task, or idle. A task is either being worked on (making progress), or it's not being worked on. -- A task will get completed quicker if you can minimize the amount of time it's "in progress" but not being worked on.
If you have 5 workers and 15 tasks in progress, 10 of those tasks won't be making progress.
Often, a task may be blocked by requiring some action from someone else. (e.g. PR review, or more resources, or blocked on some other task).
The 'kanban board' is about visualizing work in progress. -- By visualising the work in progress, it's easier to identify bottlenecks & inefficiencies.
So if I follow well, the interest is in having all different types of 'blocking stages' in the pipeline so that you can identify the points that slow down your process. With the right tool, and provided the tasks are accurately tracked, you get good statistics pointing to where you should optimize the workflow.
However, it's not so simple to read. In some cases tasks were blocked because of a superficial or nonexistent analysis, which required to get more information. Which is a clear break of the flow, since it has to be paused for the time before the meeting can happen. But sometimes, the analysis can be fairly bad and very time-consuming on the other department, making the broken flow more efficient than the flowy one if you account for the whole team and not only developer time.
Which seems to me that it's a good idea to optimize for flow only after you have enough consistency in the process, but still a powerful tool.
I also don't fully understand what "doing Kanban" means - like you, I see Kanban as a type of board rather than a method of going through said board (maybe because of a lack of understanding of process & an over-indulgence in Trello's marketing).
That being said, I would say that having a Kanban board without any sprint structure (or any attached micromeetings) would skyrocket my productivity. The two-week sprint thing is meaningless to me - in my org tickets overflow from one sprint to the next all the time, tickets get added mid-sprint, it's an utterly meaningless distinction.
This is exactly how I feel. Then we talk about 'complexity points', explicitly not time, but then say only X of them fit into a two week fixed time window. So then overflow them (or pull new work in) as required as you say anyway, it's pointless?
Whatever the management benefit supposedly is, seems like it could be achieved with declaring current (not 'sprint'^) goals, and a filter for tickets done/progressed in a given date range?
(^Even the language is depressing: sprint, ticket, points, standup, sit down, keep moving, ...)
> in my org tickets overflow from one sprint to the next all the time, tickets get added mid-sprint
That's not Scrum then. You don't add stuff mid-sprint, that's the whole point. Unless the world is literally on fire, you don't touch the sprint content.
What's your scrum master doing when you get stuff added? It's their job to prevent it.
And if work overflows, you need to spend time grooming the tasks to manageable chunks and adjust the team velocity. You can always pick up more tasks if you run out of stuff to do.
Why do you need a "scrum master" to prevent that? Linux kernel seems to be doing just fine without them.
The real solution is of course not to have any "sprints" at all. A manageable chunk of work is a 3 to 6 month project.
Non-tech enterprise treat software engineers as children and create bad software. FAANG and adjacent companies treat software engineers more as professionals and create better software.
Linux kernel is more like Kanban than an Agile project, you can't really compare it to a project with an actual client who pays money to receive features in a timeframe. Stuff gets done when it's done and the BFDLs decide when the feature gets into the actual kernel.
Waterfall-style projects had 3 to 6 month timeframes of delivery and we all know how that goes. The result is always either out of date due to changing requirements or not what the customer wanted because there is no way to change course after the project specification was locked.
...or you spend so much time doing an exact specification that the Agile team has already delivered 3 incremental versions.
I don't see what use a "scrum master" is. That sounds like a small task for the software engineer or their real manager. There is nothing showing that heavy agile actually leads to features being developed earlier. In my experience it's the opposite as you build up heavy tech debt by micro-managing and optimizing for a 2 week return instead of the long term.
Waterfall were 1 to 2 year projects with heavy up-front administration. 3 to 6 months is well-balanced and that's what the "elite" companies and research groups tend to use. Two weeks is the current fad at non-tech enterprise.
In my experience on a scrum team, the scrummaster was basically a coach. They helped deal with external issues as the other responder said, so the manager (team leader) didn't waste his time with that and could use his time dealing with team members and doing engineering work too. In my case, the scrummaster had this role for a bunch of parallel teams, not just one, so it was a full-time job for him. The org structure seemed to work very well for the type of work we were doing.
If the "scrum master" stopped booking meetings that should have been an e-mail, the engineers would deal with those issues with time to spare. What issues really? I don't even see how a technically weak "scrum master" could deal with any real issue in a software product.
Yea, pretty often scrum masters are hired coaches that are let go when the team knows how to self-manage - or like you said - they coach multiple teams at the same time.
What qualifications does a "scrum master" have that a software engineer does not have when it comes to creating a self-managing team? The "scrum" pamphlet can be read on a lunch break and I don't think the certs even have exams.
In my experience, there's a couple: 1. The scrum master actually has a personality that facilitates talking to people both inside and outside the team, getting people to participate in meetings, etc. The software engineers do not. 2. The scrum master has time to spend on dealing with external stakeholders, coordinating between teams, etc. The team members have better things to do with their time, like write software.
Engineers communicate just fine at FAANG. I don't see why they need an agile helper in non-tech enterprise. Lawyers don't need agile, and doctors don't. There is no reason why engineers would.
The team members are too busy with agile meetings to write software. That's a more common problem.
Maybe giving the tech lead a technical secretary is a better idea if you have a lot of administration to be done.
Obviously you have some kind of axe to grind and haven't worked in a place that uses the scrum process decently. We never spent much time in agile meetings.
No, that is not obvious, more than you making money from corporate agile, which few software engineers seem to actually like. Too many meetings is one of the most common criticisms.
The task of the Scrum Master is to make themselves redundant. They just make sure the team follows the structure they agreed on + runs interference for external issues.
After the team is mature enough, one of them can take the SM duties in addition to other tasks because the actual process runs without extra management.
That's not a rule in Scrum that I'm aware of. It's an aspiration for sure since an injection implies some sort of emergency or unanticipated work. Ideally you avoid those sort of things. But if they happen it's not an issue to inject something. Constantly doing so usually means something has broken down in planning and/or quality is so bad the team is going from fire to fire.
See that's the main problem with strict scrum. Why can't you add things to the sprint mid sprint? Sometimes things come up that you didn't think of.
There's really no point being that strict. I think two week meetings/sprints are good for keeping focus and as an opportunity to agree short term priorities. But the point is to get work done, not to precisely obey scrum rules.
If the "you" is the team, go ahead. Add anything you want, as long as you deliver what you promised in the beginning of the sprint.
If the "you" is an external person asking for a "quick job", then the default answer is "talk to the scrum master" whose default answer will be "No.". Then they can start discussing if it is so urgent and important that it can't wait 1-10 business days for the next sprint and/or small enough not to disrupt other work.
The rules are there to protect the team. If the team is willing to take ad-hoc work, nothing in the agile rules says they can't do so. The point is that nobody outside of the team can force them to take on extra work mid-sprint and disrupt their planned work.
So if we finish all of our tickets early (which is often the case because measuring complexity is impossible to do up front), we're just supposed to sit around until the sprint ends?
A scrum master? Man, I thought my team was bloated with process but the fact that role exists elsewhere means I should probably be more grateful.
Kanban is about organizing the work to be done and periodically revisiting the board to understand the work done and what’s next (which involves reprioritizing, pivoting, etc.)
Some people might debate on how active a kanban board should be.
That sounds identical to how companies I've worked for "do agile". A kanban board. Every two weeks you revisit the board, see what got done, prioritise what to do next (usually by dragging it from the "backlog" to "todo" column).
Could be much worse in practice. You could have retrospects every two weeks, daily standups, messages every day from your nontechnical manager asking you for estimate markers on each of the tasks, breaking down tasks further, renaming tasks they don’t understand but other engineers do, etc.
That's the whole trick with "doing Kanban". You don't need special magic methods to do your work- just pick up a ticket and do the work, repeat forever.
I’ve fortunately never had to do Scrum other than an internship where I had no idea what was actually going on. We do almost exactly what you describe. We just take tasks off the board and we don’t have sprints.
I get that, that’s what I do with my team, but I’ve never heard that referred to as “doing Kanban”. Maybe I’m just being pedantic, but writing an article to say “you don’t need Scrum, just pull tasks off the board” completely misses the point of why teams use Scrum.
Scrum is pushing stuff into a sprint. Kanban is pulling the highest priority stuff through - it's done when it's done.
Metrics/Analytics can be calculated when your done based on actual information, as opposed to the beginning when you're guessing, and likely to be held to your estimates.
For us, visibility isn’t an issue. I would say estimations are by far the biggest struggle we have in “doing Kanban”. Luckily, they’re not super important for us and I usually bubble up a very rough estimate in monthly reports to management, but in an org where they matter more, I can absolutely see why Scrum gets adopted the way it does.
Why do you estimate when using a kanban? You might look at an item and break it down for simplicity. You also might go in with a goal of 'one card per member per day' or something similar. But nothing should be fixed to an estimate. If something is delayed, it should show up stuck in a lane. Respond as needed.
Because work is deadline driven by whoever is paying the teams' salaries. If you can't accurately estimate when you can get it done, you break it down until you can you get replaced by someone who can.
Kanban means constrained capacity. You decide on an upper bound on how many things are allowed to be in progress at any one time and if you need to start work on something new you finish things that are in flight to provide headroom to do that. The board is just a device to ensure good communication so everyone in the team has shared state.
I think you where sold on "scrum is all you need"lie.
Kanban isn't there to dictate process, but as a tool to correctly and truthfully inspect your process.
E.g. we recently used length of UAT column to prove that we need more business people doing testing in next few weeks as we close to feature release and more tests take form of exploratory testing.
Scrum isn't blind to benefits of such inspections either! So doing simplified Kanban board is frequent.
If you're doing reactive work, an oversimplified explanation of Kanban is to just put pending jobs on the board sorted by priority and that's about it. Doing proactive work means you can choose what goes on the board and that's where the nuance could happen.
In my previous job we used it and I liked it, but I haven't used Scrum before so I can't comment as to how effective it could be.