The idea behind "agile" is to recognize when something isn't working and improve it.
You obviously have a process that does not serve your customers' needs: work with your team to fix it.
If you have SCRUM ceremonies, a retrospective is where you can raise it, but really, any time works (retrospectives are to purposely look at the past few weeks, but things you notice along the way, look to solve along the way).
I didn't get into software development to spend my entire time focussed on fixing broken processes. I'd bet almost none of us did. I got into it because I like building software and, more than that, I like building high quality software.
At the end of the day it comes down to this: I've worked a bunch of different places over 25 years. I've seen a lot of different processes but, certainly for the past 17 or 18 years, mostly some flavour of agile that most closely aligned with Scrum. It's not been that great anywhere, and there are a handful of places it's been outright terrible.
Reality check: if agile never gets any better than "not that great" then maybe agile is the problem.
Fixing “agile” is not the point. Find a process (and iterate on it) that helps you ship good software. I think there’s a bunch of stuff in the agile toolbox that’s helpful. Pick and mix that works for you.
Maybe the business just doesn’t value shipping good software all that much - plenty don’t.
This is something those wishing to build higher quality software often forget: business mostly care about return on investment.
As software engineers, it's our job to find exactly the right balance of quality and speed, and strategies to increase quality with no detriment to speed, for what is usually asked of software engineers.
Just like bridge and building engineers do not design those structures to stand up to 1000x the forces that they expect those structures will experience, software engineers need to learn to build with just the right level of complexity to quickly provide quality solution to a business need.
And that's where software engineers really struggle, and agile helps keep that in check, but in practice does not really improve quality. Software engineers should come up with ways to achieve quality with limited resources (just like engineers do everywhere else), and the best teams I worked in or with have!
There are certainly issues with "agile", but it never really says much other than keep-it-lean-and-iterate: it really is "let engineers build software the way they think they should".
Yes, the usual tools (JIRA, yuck!) and methodologies (SCRUM, SAFe...) tend to be the problem as they are too prescriptive and too cumbersome and verbose. But they are simply a set of tools to have in one's belt once you hit some common themes, but yes, some take them to heart.
I think true agility is only achievable with a switch to proper outcome-oriented goals which give a lot of liberty to engineering teams. Otherwise, the decision makers on what gets built and how are too far removed from those doing the building.
But that means a mindset shift for engineers (and everybody else!), in that they need to stop thinking about projects, and start thinking about results they achieve.
I do agree that the fact that most get this wrong (I remember a new TL writing down a 30 page document on teams' "agile processes") means that something has been lost in translation, and "Agile" really isn't.
I think it's fair to say that agile method is something to strive for, but never fully realise.
But, what would you propose we call the type of process we strive for, and is there a methodology/strategy you do like?
What are the principles of building software and building high quality software that worked for you in a team?
> There are certainly issues with "agile", but it never really says much other than keep-it-lean-and-iterate: it really is "let engineers build software the way they think they should".
Yes, we all know that, and every time somebody like me comes along and points out that agile basically sucks this line gets trotted out by somebody or other because that's not the way agile works in any company I've ever worked for.
"Let engineers build software the way they think they should," is an alien concept to all the businesses I've experienced. Now, as it happens, I don't necessarily think engineers should have the last word either, because I've seen too many people disappear down too many rabbit holes and not deliver anything valuable, but clearly agile is broken.
I am sorry that was your experience, and not because of "agile" — businesses which leave expertise to experts usually excel IME. The one gotcha is that you want to have good questions asked along the way (by PMs, business people...), and not necessarily have the "last word", when smart engineers will realize sooner when they are on the wrong path. This combination of talent is rarely achieved without specifically recruiting for it.
To back this up (since we are presenting anecdotal evidence), I've been at different software engineering teams at engineering companies which did provide this approach to work, and I was at pretend-agile shops too. As a software engineer of more than 20 years.
I worked in companies that are committed to Agile and companies that have a completely custom planning and development process. I don't understand your argument. What process in Agile dictates shipping subpar UI?
Build, test, file bugs, resolve bug. You can do this within any framework. Or, better, develop a high quality UI component library instead of asking a junior engineer to write CSS for correct checkbox handling.
Particularly with Scrum, people get hung up on the 'rules' of the 'process'.
For example, following the rules of Scrum, if a developer finds a bug, decides to fix it, and wants to commit the fix such that it can be tested and closed out then that bug needs to first be assigned to the current sprint before the developer can touch it. It's extremely constraining and antagonistic towards shipping good software.
In my experience, unnecessary processes can creep in into any org, regardless of the planning framework used. Agile or no Agile, over-planning cripples teams.
I don't buy this. Not serving the customer's needs? Is this the paying customer's #1 feature request/bug fix? It's probably some poor random sap that has to use the software and notices it.
There's different kinds of software. The software I work on now, the advertisers are the real customers, not the users of the app. So the users have basically zero buying power unless they stop using the app and we need to attract them back, but a small bug like this isn't going to do that.
The other kind of app you sell to a company. They want a good app that meets their business needs, but the ones making purchasing decisions still aren't the Frontline staff that have to use it. And there's no way a bug like this is making it up their internal chain and then over to the vendor.
And even if all of that happens, I have trouble believing this would be prioritized in a sprint. The only way anything gets fixed is if by some miracle an eng with the power to fix it either notices himself or if the app is popular enough, someone tweets about it and he happens to read it. It'll never make it through the formal chain.
I know this because as an eng who would rather do some sanding then add more useless features... Well, then the PMs wouldn't have anything to do.
But that's because you care about the output vs what might bring value to the company.
If things never bubble up, does that not mean that this is really a non-issue?
You may be surprised, but most useful software is crappy by too many metrics, except for the main one: it gets the job done.
And to be honest, on the original story, as a software engineer, I would rather consider if this is a better behavior for "gap" that most people would expect? Perhaps an addendum to W3C CSS flexbox spec is a more useful avenue? Fix it once and for everyone.
> If things never bubble up, does that not mean that this is really a non-issue?
It's a small issue, not a non-issue. Or some might even be big issues but for a minority of users. They're worth addressing from time to time because they add up.
And yes, the app is probably getting the job done, which is all the more reason to start polishing the app and stop bloating it into something it was never meant to be. Focus on what does make the app good and useful. And heck, you can stop hiring thousands of engineers to build useless stuff and start enjoying all the money rolling it. (Of course that doesn't happen because every company needs 'growth' to appease the shareholders, but I digress)
> And to be honest, on the original story, as a software engineer, I would rather consider if this is a better behavior for "gap" that most people would expect? Perhaps an addendum to W3C CSS flexbox spec is a more useful avenue? Fix it once and for everyone.
I certainly wouldn't. There's 2 elements, a radio and a label, and there's a gap between them, exactly as specified in the CSS. Why would you make the gap clickable? How would you even define that? What if it was radio-image-label. The radio is clickable by virtue of being an input, the label is specified as being for that radio. Should we make the image clickable because it's in a line? Or just the gaps adjacent to the radio and label? What if the are other clickable elements next to them, which ones get priority over the gap? There's a lot of issues here, and this isn't a scenario we want to just randomly do what we think is best. That's how we ended up with HTML4 and IE.
You obviously have something against contemporary growth-obsession, but I don't see a relation to agile. Do I need to point out that there are cases where you would have enough profit only to cover running the business (if that) and can't afford to stress over smaller issues?
> Why would you make the gap clickable?
I already said why: if everyone expects that behaviour (OP obviously did).
Just like "sanding your UI" removes rough edges for customers, fixing things in computer languages removes papercuts for developers (customers of the language).
Regarding technical challenges, didn't OP switch to padding? How is that different?
I do have an issue with growth obsession, but I concede it's unrelated. If you only have enough resources to do some subset of tasks, you should of course prioritize what's best for your business. I happen to work for a company that's not running on fumes, so I think they can afford to do some more sanding.
How is padding different? It's kind of in the definition of padding. Background colors and click regions are expected to fill the padding but not margins. It's the standard CSS box model.
> How is padding different? It's kind of in the definition of padding.
I was responding to you raising technical questions about how could gap work in some edge cases by saying: "same as padding".
If "gap" is always used like padding, why wouldn't it behave the same?
FTR, I am not sure it's used like that commonly (I've stopped doing CSS UIs before the flexbox came to be): I am not putting that out as a conditional by accident.
> If "gap" is always used like padding, why wouldn't it behave the same?
Ah.. yeah, that's a big loaded "if". I would say it's not. It's usually used as a gap, like the name implies. Gap and padding play nicely together too, so, if you want both, use both.
The idea behind agile is to sell you training and later consulting once your organisation fails to adopt it in any meaningful way because it’s principles are so vague your culture, will, get it wrong.
It’s saying that the people behind the agile alliance and so on aren’t actually working in software engineering. Many haven’t since 20 years before the birth of Python. They’re also famous for handling any form of criticism with “you didn’t understand our principles”. Which to be fair is often completely correct, but maybe it’s because those principles are horrendous?
What it has lead to is an industry full of pseudo-jobbers. As others point out… your software engineers, can, do the work if you let them. Even if you don’t, you have no guarantee that your added personal actually catches errors like the ones in this article. Because human testers usually aren’t part of the team in any meaningful way.
Fun fact: most companies doing "scrum" actually don't have retrospectives.
(I understand that this goes completely against the textbook idea of scrum, but there is always the textbook and "the way we do scrum at our company", and those two often have very little in common.)
As long as you fix things that don't work or make you less effective, it does not matter if it's a retrospective, or stop-the-line approach, or whatever your nameless approach is.
Basically, retrospectives are a common tool, but the goal is to talk about optimizing how you do something, and to keep doing that.
Process gets dictated from above. Laborers like coders do not get the authority to do that stuff.
Agile is a failure because it imagines this pixie dreamland where every replaceable cog in the machine somehow has the ability to dramatically change how the machine operates. We don't. We don't get to design the machine we are a part of because that's not how capitalism works.
You obviously have a process that does not serve your customers' needs: work with your team to fix it.
If you have SCRUM ceremonies, a retrospective is where you can raise it, but really, any time works (retrospectives are to purposely look at the past few weeks, but things you notice along the way, look to solve along the way).