Hacker News new | ask | show | jobs
by beckler 4029 days ago
So I don't really agree with your opinion, but I don't think you're entirely wrong.

I've been doing scrum for about a year, and while I think agile is excellent because of the feedback look, I also think scrum is the worst agile method. Mainly because non-technical management will turn it from managing software implementation, into managing employees. But it's worse because you have to tell everyone your progress, and god forbid you actually have a problem and fuck up that sprints velocity. I was almost fired once because my velocity was half of what it normally was one sprint, due to basically dropping development work and doing devops for a week.

I've been on a project where we had marketers join our sprints, and we're even assigned stories. Timeboxing genuinely difficult problems into two weeks is extremely stressful, and most product owners don't care about complexity, only results. I've had to make some super nasty hacks just to help get a "win" to make a client happy. True scrum is just too rigid for applications with complex problems, which is why you'll have a hard time finding two places that do scrum the same way, or keep processes consistent sprint after sprint. In my opinion, I find kanban to be a much more effective way in managing development, as it allows your engineers to actually solve problems. So I agree that agile is effective, but I don't think scrum is always the answer.

Sorry about the word vomit.

2 comments

These are really good observations. If there's a common thread, I would say it's the intolerance for failure exhibited by managers who don't understand software development. I'm not sure that intolerance would be lessened by another system, whether it be waterfall or kanban, or ad hoc. Prior to agile, when failure happened, it tended to happen in a big way near the end of the project. But if a project were two or three years long, as is common in software, everyone could move on to other jobs after having spent two or three years without having to report progress every day or demo features every two weeks. A couple years in one job is pretty typical nowadays. So in some ways it was a more comfortable environment for engineers.

Agile was introduced so that failure could be amortized and tracked. It makes the development process more transparent so that mid-course management corrections can be made and the corporate ship can be steered around the icebergs instead of running blindly dead into them. But in order for it to work, management must be tolerant of small failures. If it's not, then scrum will become theater with failure swept under the rug, and you'll be right back where we were, with failure becoming apparent only near product launch, when the iceberg suddenly appears out of the fog too late to avoid it.

Now, it may be a valid criticism that agile expects too much from management, that most software company managers aren't competent enough to use it. But that pretty much says we're all doomed anyway, regardless of what system (if any) is employed.

I'd be interested in your thoughts on why you feel kanban is better, since my impression is that it is essentially the same process but without sprint intervals.

So kanban and scrum are fairly similar, but the difference is that with kanban, you don't have to estimate a point value to it, as time isn't the priority.

I view this as an advantage for two reasons:

- 1. Most non-technical clients view point estimates as absolute expectations. They can't comprehend an estimation in any other way. So if I can do 5 points a day, and I give a story 13 points, it's expected to be accomplished in ~2.5 days. If I exceed that amount of time, I've missed their expectations, and now I have a client who considers that work behind schedule.

- 2. Large complex problems can be solved without the pressure of accomplishing it within a finite deadline. I think this leads to more robust implementations, and helps prevent large amounts of technical debt. To compare, I have never seen a scrum project that didn't have a runaway amount of technical debt that lead to some insane scope creep in stories later on.

It has a downside of potentially hiding some problems, but I think it helps with individual responsibility when it comes to tasks. Every time I've used kanban, it's usually been for pretty short periods, but those periods were extremely productive and way less stressful.

I mean, this is just all my opinion, so take it with a grain of salt, but this is what my agile experience has been so far.

Thanks, interesting perspective. The advantage of sprints is that you're demoing progress on a regular basis. I can see the possibility of people focusing more on the demo than the ultimate purpose of the code, in which case as you say you'd accumulate technical debt in the form of hacks. But if you don't demo regularly, you run the risk of hidden problems where everyone assumes something works when in fact it doesn't. Either way, competent management is needed to avoid the pitfall.
The 'hack a demo' problem highlights one of the rationales behind having a Definition of Done in Scrum. Unfortunately Scrum doesn't put hard and fast rules behind what should be in it, but most good Scrum teams take principles from XP such as all code should be tested. This helps reduce the 'hack' factor at the expense of getting it out the door faster.
I think there are a few red flags here with the way you are doing scrum:

I have never heard of individual velocity measurements, they are wrong and should not be measured. I also think that burndown charts and velocity are for the team, not the stakeholders. This is because story point estimation is volatile and turning it into a feedback loop would turn this estimation into a meaningless thing.

Thus, there is room for transparency with the stakeholders in the sprint review and the setup, all else should be in the team's responsibility.

Scrum guides are usually very specific about the fact that the daily scrum is not for reporting.

Devops work should be priced in as a story in the sprint. If the Product Owner does not want to give such a story the proper priority, you should transparently explain how lack of such work will decrease sprint velocity in future sprints.

Yes, I absolutely agree entirely.

The reason we had individual velocity measured, is because our management wanted to use it as a metric to determine our performance (Which I think is an awful method for measuring performance). I work in a digital agency, and our management tries to be very hands off, but then they do something like look at individual velocity and our amount of git commits to make sure we're working.

more red flags.

Taking commit counts as a measure (and line counts for the same reasons) is like evaluating a writer by the number of words they write without looking at the content. A writer could copy a phone book to get good reviews.

Individual velocities are bad for several reasons. (1) they discourage team work (2) they are inexact (story point estimates only work because we look at the sum of them for sprint planning, they work on average, not for individual stories). (3) there are better metrics available.

If your management wants you to do agile develoment, they should be there in the sprint review and look at last sprint's work.