top | item 20417768

Why I No Longer Want to Write Software for Companies That I Don't Own

76 points| externalreality | 6 years ago | reply

I'll start by saying "Agile Project Management Is Farce and does more harm than good". I've been researching tech turnover for a bit now, with a focus on programmer turnover, and with no reservations I can say that so-called Agile project management is a leading cause.

The goal of Agile project management is to make software development a more customer-centric and more iterative. This is a noble goal. Agile however, whether intentionally or unintentionally, has had a secondary effect of robbing developers of job satisfaction.

Here let me give you an example. About 10 years ago I worked with somewhat of an influential in the Ruby community. We both worked at an "Agile" software consultancy. After finishing a task on our project work board I remember watching as that developer went back to claim the task the followed logically from what he just finished. He was shocked when he saw that the task's card has been claimed by another. He then said, right there in the office, quite loudly and openly "I am not getting the satisfaction of completing a thing when working like this."

So Agile robs developers of sense of satisfaction of ownership and completion. Well if the developer is being robbed of this satisfaction then to whom is this satisfaction being transferred? Well, project managers. Who get rewarded for the "velocity" of the team, which is more of a product of the hard work and less of a product of task management.

So developers have three things making them want out:

1) No ownership satisfaction 2) No completion satisfaction 3) Someone else taking credit for their work

Ok, this are not the only reasons for developer turn over but this is a big one. There are others like toxic environments, Title VII discrimination, and so on.

It can be denied that 1.5 - 2.0 year developer turnover at tech companies is pretty woeful. We are dropping the ball somewhere and its hurting business bottom lines and developer careers.

47 comments

order
[+] SamWhited|6 years ago|reply
I completely agree; it also has the effect of making software worse, as far as I can tell. At the last few mid-to-large sized tech companies I've worked for I've watched project and engineering managers push hard for more velocity trying to get their bonus. Eventually they start telling people to take shortcuts, or rewarding the developer who gets things done faster but, as an example, doesn't write any tests. They then get mad at the other devs who won't approve their patches during code review or end up spending their time fixing the bugs in prod created by the developer being rewarded for "moving fast". The pressure on the managers trickles down and the software ends up being broken.
[+] im_down_w_otp|6 years ago|reply
The problem I witness when the general goal laid out is improving "velocity" tends to be a fundamental misunderstanding of what velocity is.

Namely, velocity is speed plus a direction, and most of the activities that would normally help codify a sane and deliberate direction (i.e. rigorous requirements, rigorous design, rigorous validation, etc.) are all primed to be sacrificed at the Agile altar. What you end up with is just "speed" as a priority.

When organizations have KPIs & OKRs which set "velocity" as a prime directive what that usually means is just "speed". As long as your development cycles are shorter and shorter, then you're rewarded. In these kinds of organizations the incentives align with flailing around spastically, so long as you're doing it 1x a month, 10x a month, then 100x a month. Taking the time to be exactly right 1x a quarter, and then building on that, isn't seen as desirable.

As one would expect, there aren't an enormous number of people who are actually satisfied by doing random crap for a random cause as fast as possible. In fact, that's what machines are for, not people.

[+] ngngngng|6 years ago|reply
I will not work at Agile/Scrum shops for similar reasons. Although my primary reason is different. Estimations break the whole process. Most of engineering is discovery work and discovery work can't be estimated, leading devs to estimate 10 times what tasks actually take so that they don't get in trouble for not finishing tasks on time.

I work for a smaller dev team currently and I take a project and finish it A to Z. It is extremely satisfying to have complete individual ownership over a task and we've achieved greater development velocity than I ever thought possible.

[+] cyphar|6 years ago|reply
And the follow-up problem is that most Agile proponents say that "estimations aren't to be taken as timelines". But that doesn't address the fundamental issue that management always uses the engineering estimations as a method of managing their timelines.

Not to mention that "velocity" and burn down charts actually reinforce the idea that estimations are ways of tracking how much work will get done in Agile. Otherwise, tracking those metrics would be completely pointless.

[+] randompi|6 years ago|reply
Yes, some how people think the more they estimate, the better they'll be at it. But most tasks are different and the experience isn't as simple as a copy paste from the previous.
[+] cassianoleal|6 years ago|reply
I have been working in some form of agile methodology or another for years and wouldn't have it any other way.

It sounds like you've been working: - with toxic people; or - in toxic organisations; or - in immature agile organisations

If your ways of working are taking away your job satisfaction, you definitely need to raise that up with the team you work in (like in a standup, retro or just during the day). If it doesn't get addressed because the team disagrees, you're in the wrong team. If it doesn't happen because management disagrees, you're in the wrong team.

When I say you're in the wrong team, I don't necessary mean you're wrong or the team is wrong - only that you two are not a good fit for each other.

[+] HeyZuess|6 years ago|reply
> He was shocked when he saw that the task's card has been claimed by another.

If this is project management, then where is the planning ? This really has nothing to do with Agile, it has to do with planning which is not absent from Agile.

> "I am not getting the satisfaction of completing a thing when working like this."

This is a people issue, it's very attitude based. Oh someone took my ticket, my work life is horrible. How about 1) talk to the person who took it, 2) talk to someone and explain the reason this should be done a different way (communication something agile highly promotes), 3) go with the flow and move onto something else. Don't be a snowflake.

> 1) No ownership satisfaction 2) No completion satisfaction

I work in a small agile house, and I have much more ownership and involvement in project completion that I have had anywhere else. In fact that is a premise of such methodologies as scrum which time box, and reduce the scope and objectives to things like sprints.

> 3) Someone else taking credit for their work

I am not sure about this one, but this is consistent of many work environments. Heck I've worked in offices where some egos would take credit for anything.

[+] haydn3|6 years ago|reply
The fact people can take tickets and you have to fight and have an argument about it really shows that there's a discourse inevitable in systems like Agile.

Who gets the 'tickets', why are 'tickets' always ruling people, when will 'tickets' be more like working for your own company?

The fact is the tickets themselves are acting like a virtual currency of which only one person gets, exclusively.

If more than one person could work on a ticket this would solve the problem, but the fact that people are locked out and it's exclusive makes them an argumentative point and causes greed/habits to form.

Fix the tickets, not the people. All the credit and satisfaction comes from this one point.

[+] bassman9000|6 years ago|reply
Don't be a snowflake

Agreed. Be a cog in the machine. Everyone's interchangeable, and you don't get to choose your tasks, peasant.

[+] jay_kyburz|6 years ago|reply
If you have some ticket system where programmers can just take work, your team is breaking the first rule of Agile.

    Individuals and interactions over processes and tools.
A ticket system is a process. Individuals and interactions come first. Programmers talking to one another and being happy is more important than your task database in agile.
[+] dsirola|6 years ago|reply
Why does it break the first rule of agile software development?

"That is, while there is value in the items on the right, we value the items on the left more."

[+] KrumpetPirate|6 years ago|reply
I joined a new project recently after working in a mostly relaxed agile environment for most of my career. I would describe my current project as "Agile at all costs". No testing, no requirements, just go. Just do. I have to say it's created an environment where almost every developer is super unhappy and ultimately producing a sub-par product.

I want to go back to just doing good work. Obviously focusing on what the customer needs and wants, but where the engineers have a choice to do something the right way instead of just the fast way.

[+] jay_kyburz|6 years ago|reply
Whoever said agile means no testing and no requirements is doing it wrong.
[+] zenethian|6 years ago|reply
Agile, by all means I've used it, _requires_ testing to be first and foremost.
[+] TheChaplain|6 years ago|reply
I disagree. To me, Agile is a successful way to work, and I prefer it.

Completing a task is where I get my satisfaction, even if it is a part of a larger piece. Also when I see the client try out the new functionality and giving me feedback (positive or negative) on a completed task.

Another good point with agile is that I can pick any task I see fit and have the capabilities to complete. I'm not stuck with a certain part forever, that is awesome and I love it because I get to learn new things.

In your anecdote, it seems to me that the person complaining is not really interested in the agile concept and prefers to work the old-fashioned way. That is fine, but unless the workplace have projects that adhere to the waterfall-model that he could work on, maybe he's just in the wrong place?

[+] mr-ron|6 years ago|reply
If the engineer is only getting satisfaction from claiming a closed ticket, and then not getting tickets claimed when they owned the work, then the team is putting values and metrics in the wrong places.

Either have multiple people claim a ticket, or change the definition of success from an individual releasing a ticket, to a team releasing a successful ticket.

Agile done properly should reward success on the team level. Tickets are rarely one-person affairs. If reward is happening on the individual level, one per ticket, then the usage of Agile is incorrect.

[+] nscalf|6 years ago|reply
So while I totally agree with this, I have some questions:

First off, do you think Agile is better than Waterfall? I personally think that it delivers a product faster, but I'm not sure if it actually has a macro improvement on the job process. I think waterfall probably addresses your developer-centric issue of satisfaction better than Agile does. I think we may have thrown away too much with the anti-waterfall hatred our field has adopted.

Second, what alternative do you propose? I think Agile is a problem, and ultimately a pretty bad process for organizing. The overhead is so expensive. The most effective and efficient my team has ever been was when we just quit Agile and wrote what we had going on up on the white board. And you know what? I've seen this work better than Agile in a wide range of settings. "Self organizing" really seems to be the key, but regardless of the self-proclamations that Agile is self organizing, it really seems to shoot itself in the foot with extra mandatory process.

Finally, it seems like all of the good solutions don't scale. Do you think this is a problem of trying to scale problem solving? I don't think I accept the argument that this is just the cost of working at larger scale, but I haven't thought of a good way to keep a team organized and still get work done without an extreme amount of organization and process (Agile) or a really involved team lead/product owner---who will slow everyone down by needing a lot of touch points.

[+] externalreality|6 years ago|reply
The first problem with agile is that false dichotomy - "It's either agile or waterfall". Sorry but that dichotomy doesn't exist. Waterfall vs Agile is just a good-bad binary. Surely you want to iterate quickly and stay in constant contact with customers, if that is all agile is then I am all in. However, I can't subscribe to robbing developers of ownership of a domain. I would even do microservice arch if it meant dividing things up into domains and assigning developers microservices that they own. I want to keep developers and giving them responsibility and ownership is a good way to do it.

Its funny because, in Agile you hear "You don't want one developer leaving with all the knowledge" now instead we have all the developers leaving with all the knowledge.

[+] forgottenpass|6 years ago|reply
>First off, do you think Agile is better than Waterfall?

Agile does not mean "not-waterfall." Using the not-waterfall definition when convenient to the conversation is the reason "Agile" is a plague on our line of work.

[+] sparrish|6 years ago|reply
Turnover, IMHO, is due to market demand, not satisfaction issues.

After 1.5 - 2.0 years, a dev has more skills that are in demand and will gladly jump ship for a better position and/or pay elsewhere.

[+] greenyoda|6 years ago|reply
To be more precise, the problem is that employees' raises are not keeping up with the job market, so the only way to get what you're worth is to change jobs frequently.

If companies would make more of an effort to keep their employees happy (financially, work satisfaction, etc.), they'd spend much less time recruiting and training new employees, and productivity and profitability would probably increase.

Hiring a new employee at the same level of competence is going to cost at least as much as retaining an existing employee, so I wonder why companies get into this cycle of constant turnover. The only way they'd save money is by constantly hiring inexperienced employees to replace the slightly more experienced ones who left, but what they'd gain in cost would be quickly eroded by lower productivity, loss of collective knowledge of the product, etc.

[+] oceanghost|6 years ago|reply
The problem with agile (in my mind) is it codifies some very bad practices.

One, working your developers to death. In every agile environment I've worked in, nobody ever took a day or two to plan, do retrospectives after a sprint. It was always, always, "Get back to work." I had one job that did weekly sprints every week.

Two, it transfers the risk of bad management from management to the team. "Look! Anything can be built by planning in two-week stretches! We can change direction anytime!"

[+] macando|6 years ago|reply
This just came out:

"WEB-BOOK LAUNCH: The deepest dive into our unique way of working. No post-its, no backlogs, no sprints, no stand-ups, no velocity tracking, no agile, no scrum, no roadmaps, none of that. We’ve gone a different way, and now you can too. Read up, Shape Up:"

https://basecamp.com/shapeup

[+] deedubaya|6 years ago|reply
Developers are highly paid because their knowledge is highly leveraged. Someone else is benefiting from your application of knowledge by an order of magnitude of what they're paying you. Why be the cow when you could be the dairyman?
[+] phonebanshee|6 years ago|reply
Because dairy farms go under all the time. These days, the well fed happy cows just stroll over to the next field, where there are massages on tap if the stress of eating grass in the sunshine gets to be too much.

To put that in non-cow terms, the rewards of just getting straightforward compensation these days are really good. So good it's not obvious that starting your own thing is worth it monetarily.

[+] greenyoda|6 years ago|reply
> Why be the cow when you could be the dairyman?

Because the cow doesn't need to worry about selling the milk, collecting money from the customers and fixing the roof on the barn?

[+] PdV|6 years ago|reply
IMHO - agile seems to be easy to learn but hard to master. I think we have tons of advanced beginners engaged in a global cargo cult.

Its such wide-spread phenomenon, such that we have an "even more agile" dark manifesto, pointing out the pitfalls in which the agile has fallen (eg. processes & tools) - http://darkagilemanifesto.org/ ...and the golden http://programming-motherfucker.com/ that urges us to just cut out the cancer.

[+] vicnov|6 years ago|reply
1. Would you work for a company that doesn't use agile? 2. Will you hire other engineers? 3. How will you address those issues in your company? 4. Are there companies that successfully addresses these issues?
[+] sethammons|6 years ago|reply
Satisfaction on our team is by releasing code. The book keeping in ancillary. We operate as a team, and one person (or a pair) might write it, another tests it, and anyone might deploy it.

As for capital A Agile leading to turn over, I'd be interested in seeing the data. Most of what I've read says that employees leave managers.

[+] thecupisblue|6 years ago|reply
Agile, Waterfall, Shmagile Shmoterfall I say.

All these "practices" are just ideas like "hey work in small sprints and deliver on the go" that have been shaped into ideologies and standards we "all need to work within" by the law of averages. If you have a 100 average developers working for your average corp developing software, they need a structure - oh look, here's agile - let's pay money to people to teach us how to agile (??!? i'm still confused by this, like are people seriously that dumb?) then force the strict set of guidelines and rules onto everything because thinking outside of the box or working outside the guidelines confuses the averages and introduces chaos. Keeping team small, agile and keeping agile/waterfall/whatever-silver-bullet bureaucracy out of their way is the solution.

We are dropping the ball because we focus on using "standard processes" for the sake of using "standard processes". The stricter you need to implement the rules and guidelines, the larger the chance something smells in your companies culture.

[+] nerdbaggy|6 years ago|reply
Those are some of the reasons why I don’t think I would like developing at a large company. Where I work it’s just me and 2 other developers. I don’t own the company but it’s sure satisfying
[+] skybrian|6 years ago|reply
You tell a story about how one developer at one company was disappointed, but it doesn't follow that other people will feel the same way.
[+] codesushi42|6 years ago|reply
What is agile development? Is it anything more than a buzzword?

I have worked in several environments that embraced "agile". And they were all different, for the most part.

The only things they had in common was bad management and negligence of tech debt.

[+] jay_kyburz|6 years ago|reply
The Agile Manifesto

    Individuals and interactions over processes and tools
    Working software over comprehensive documentation
    Customer collaboration over contract negotiation
    Responding to change over following a plan
There are many variations built on top of these, but without these it's not Agile.

https://agilemanifesto.org/

None of these things makes management easier, you still need a good manager to make a project work.

Nothing in the manifesto says you should ignore technical debt, that is simply a choice your manager has decided to make. Its not the fault of Agile.

[+] strken|6 years ago|reply
I always understood agile to mean "as a business, have as short an OODA loop as possible, don't waste time making detailed plans until you have detailed information, and update your plans as new information comes in". This is why it gets compared with waterfall development, where massive chunks of work are planned anywhere up to years in advance.

At this point, nearly everyone who writes software is well aware that designs and specs you created 6 months ago might be out of date by the time you need them, so there's not really any need to evangelise for that point of view, and agile becomes a buzzword because everything is already agile.

[+] jim_and_derrick|6 years ago|reply
Totally agree. Usually if you use JIRA or some kind of ticketing system and plan two weeks of work at a time, congrats you are doing agile like a pro.