Samstag, 12. März 2016

Scrum me not

After two rants, and a lot of research, I feel somewhat informed. And I have come to a --preliminary-- conclusion for me:
I am not compatible with pure Scrum.
That's more or less it.

In a more refined way:
  • Proponent: Scrum is hard.
  • Opponent: Scrum is fragile.
  • Proponent:Scrum is fast and efficient
  • Opponent: It can be. It also downplays risks for individual developers, devalues their work, limits professional growth, and tends to fail spectacularly with a big bang.
  • Proponent: If Scrum does not work for you, you are doing it wrong.
  • Opponent: Scrum exposes problems but provides no fixes. It also comes with its own big set of built-in problems that proponents frequently refuse to even perceive.
  • Proponent: The Scrum team spirit is the only way of working.
  • Opponent: If it works. It's also dangerous and mentally over-taxing for many individuals. It is liable to amplify mental health issues without having a clear path to deal with such problems. The all-or-nothing approach advocated by so many proponents only shows that they have complete disregard for individual employee's needs and skills.
  • Proponent: Scrum encourages cooperation and cross-functionality.
  • Opponent: That's actually its main fault.

    It tries to introduce a clock-like piece-work mechanism into software development and even makes the developers the architects of their own demise.

    It wants developer's knowledge to broaden and not to deepen. It opens up a path down the very slippery slope that turns the individual developer into a replaceable cog.
Andreas Boes and Tobias Kämpf gave an important talk at the German developer's conference ("Entwicklertag 2013") in Karlsruhe.

Their findings should be eye-opening:
  • Agile is accepted mostly by younger developers who like the cooperative teamwork.
  • Experienced developers often feel devalued by implementation of agile methods. Their attachment to "their work" is forcibly reduced. Individual achievement is completely replaced by team achievement.
  • Recognition and appreciation for individual knowledge is reduced. Experienced developers feel particularly unacknowledged.
  • Time buffers are lost. The team is constantly working under pressure. The ability to juggle timelines (smearing) is lost.
  • Transparency without trust. Aggressive transparency and publicity becomes a burden for team members. In-team conflicts increase. Team becomes detached from the process and follows it purely ritually ("Potemkin-Scrum").
  • Teams run ever faster without the ability to slow down. Project management "forgets" to introduce explicit slowdown periods.
  • Individuals (and the team) are disempowered: No room for self-organized learning. The process feels like working a production line.
These are real complaints from real developers in real software companies.

Interestingly enough, it is the experienced developers that seem to hate agile. The question has been raised: Does Scrum make sure lazy developers do any work but at the same time hinder experienced developers to follow their well-developed intuition? Or rather bluntly: Does Scrum force the 3s to be 5s and limit the 9s to be 6s?

Should that stop you from doing Scrum? No. Should you allow anyone to shoehorn Scrum onto you? Absolutely not. Because Scrum (and probably agile in general) only works with a tightly knit, highly committed team involving only fully stable, confident but also highly cooperative members whose concept of professional growth is team- and product-holistic.

All team members must also be strongly able to commit themselves to the task list of a sprint and nothing else. If you have such a team, you are very lucky. If you don't, Scrum will fail and it will potentially leave you with (at least some) team members that will never work in software development ever again.

As a note: Whatever criticism I write here, the answer will be: What you describe is not agile. What you describe is not Scrum. What you describe is a bad implementation, pseudo-agile. When you read exactly this same answer for the 15th time, you start to think about what those particular types are not getting (because obviously Scrum has and causes problems).

Some agilists compare doing Scrum to driving a formula 1 car: It's fast, but hard to master. In my opinion, it is also downright reckless. The car you are driving does not protect the team even if it claims to do so. Scrum is a control and management method that in many, many implementations removes trust from the (individual members of a) team while giving them the illusion of control.

My opinion: Scrum is only good if you severely need to limit the team's creativeness, because they would get nothing done, otherwise. Scrum is seemingly designed to weed out so called "cowboy" or "submarine" coders in favour of a very rigid, strict protocol of total transparency and hyper-frequent communication. Also, the individual team member is seen as valuable only in the context of the team, almost no literature on Scrum ever mentions the individual developer. Given this, Scrum is aggressive collaboration to a fault.

My suggestion: Change the car to something that does protect your team and its creativity. Because your team is valuable.

Scrum seems to treat software development as a commodity. It requires developers to deliver creative skillsets on call, that is whenever needed during the process.

What I think Scrumnuts repeatedly get wrong:
  • The One True Method Everything agile, everything according to Scrum rules. To deviate is to fail.

    This is repeated in posts and comments all over. I won't even comment on it.
  • When it does not work, blame is shifted to the people.
    Either did they not follow the god-given process or they were unwilling to embrace and carry the necessary change. It is never the process itself that is broken, it's always something with the people involved. And it is never the process that needs fixing, it's always the people that need to change. It's never Scrum that fails, it is always you (whatever part in the team you have) that failed Scrum. Does that sound wrong to you?

    More moderate agile enthusiast know that this is not true, but even those have their corners of dogma.

    However, the more often I read stuff like the above, the stronger this sounds like esothericism. If your team commits to it, so be it. If, however, even only one of the good people doesn't, you probably should reconsider your strategy.

    In his --now infamous--  post Giles Bowkett also points out another interesting point:
    To be fair to Scrum, it's not intended to work that way, and there's an entire subgenre of "Agile coaching" consultants whose job is to repair broken Scrum implementations at various companies. This is pure opinion, but my guess is that's a very lucrative market, because as far as I can tell, Scrum implementations often break.
    The last sentence probable makes the point: Scrum is hazardous and reckless. It's like a World War II German Tiger tank: You move a large machine (the product) forward with a huge motor (team velocity). As long as the transmission box (the development team) holds, everything's fine. If/When only one of the the transmission gears (an individual developer) cracks, the whole thing falls apart and the ammunition stockpile often blows up (developer burnout). The solution is to replace (dead) crew members (fire developer, hire new developer).

    The whole method is actually designed to make the latter possible with as little cost as possible. If following that argument, the only rational reaction to Scrum from a software developer is to tell it to die in a fire (which some have done).
  • When problems surface, Scrum is claimed to be only the messenger.
    Charlie does not like to talk about what he did every day. He's a very good coder, mind you. He makes clean designs, delivers testable and tested code. But he likes to work alone and we cannot have that. In Scrum, Charlie's a problem. So am I because I like to code first and cleanup later, but I feel too much social pressure to deliver because of the daily standup. Linda is also in trouble. She likes to work from 11 to 19 because that's her time. The daily at 9 is a real problem for her. Martin is quite the engineer. We usually give him the tough nuts to crack, because he comes up with really good solutions. We try to avoid having him do UI work, because he hates UI work (he's not that bad at it, however. He just hates it with passion.). Well, but the product manager does not allow for a story "Martin fixes every potential problem he sees in existing code, while we do the final UI stuff" (because it does not start with "the user wants ...").

    These problems surface with Scrum, but instead of providing solutions, Scrumnuts often wash their hands of it and blame people. It's just the same fad, now with "people are important" stickers tagged on. The sticker doesn't make things true. And hey, some of these problems are because of Scrum. But that's heretics in the minds of Scrumnuts. Agile is perfect.

    However, if you read the blogs of some Scrum evangelists, you read  stuff like this:

    "Oh, I had a sceptic once. I told him to talk to upper management, if he wants to."
    "I had a resistor, who thought himself too good for the daily standup. We gave him a good opportunity outside of our company."

    Threats and coercing people into compliance? These people should be banned from having responsibility for employees ever again in their lives. Does Scrum protect the employees? Maybe even less than some  of the older stuff ...
  • The Team is Everything
    Scrum emphasizes the team probably to a fault. This goes beyond ignoring personal needs (see below for that), but the organization enforces a team-holistic sense of progress and achievement.

    Scrum proponents repeatedly claim that a goal for them is for everyone to be able to keep their individuality, but that only the team effort counts. While this might work for some projects, it will utterly fail for others. And it requires a certain type of people.

    To give some of the aggression back that some Scrumnuts lash out with: Scrum requires you to maintain an (excessive) level of groupthink. It requires you to severely limit personal wants and needs in favor of an abstract product that you still need to identify with. Sounds like applied schizophrenia. In this light, Scrum is also outright dangerous and reckless, as it requires developers to not utilize important resources that provide resilience against work related stress.

    Scrum actively discourages silos. And the silo begins when you have an expert on a team where only the one single expert can to a certain type of work. Scrum drives another nail in the coffin for the sense of personal achievement. The "agile overachiever" is seen as an anti-pattern. In Scrum, if you are smart, you need to play dumb, because otherwise your team will hate you. Scrum deliberately keeps individuals below their professional potential under the assumption that the concerted team effort is the only relevant measurement of productivity. It actually looks like that the short-term view of the sprint planning is also applied to developer's careers: They are supposed to go on forever in the same cycle without long term goals. Individual achievement in Scrum is abstract and the concept is actively discouraged.


    As for planning: Scrum seems to do the worst of the worst: Frequent planning by planning by committee. Planning by committee is inherently problematic, it gave us ASN.1 (first version), C++ and the WS-* standards. Planning actually works best when everyone has their own ideas and they are mashed together later. The frequent re-planning based on the product backlog means that the product owner seems to be the only one maintaining the long term view. This has all the rails laid out to be both an insult to senior developers as well putting architecture back on a single person's shoulders and that person is then probably non-technical Technical debt in Scrum projects is rampant.

    Scrum cannot deal with even the slightest personal deficiencies without pathologizing and putting down blame. And the agile proponents are very happy to put blame onto people that cannot adopt to the process. Here is an interesting little study by Frankfurt's Goethe Universities' Information Science Institute: Have a vulnerable or anxious developer, and things go down the drain. It's in line with proponents "Scrum exposes problems", but it is also in line with "Scrum does nothing to fix or work around this" (formulated "not Scrum's job" by proponents).

    Maybe that is also why agile is so much a young developer's game: Young developers are malleable. If they never experienced another mode of working, they probably can be made to like Scrum (even if it actually might f*ck them over in the long run). Older developers with their own ideas and maybe well-honed processes cannot be molded into a Scrum team. And because of the high transparency required, they might actually feel akward and downgraded. See in above's study under "vulnerable".
    What Scrumnuts seem to commonly forget: It's also Scrum's process that emphasizes certain problem areas and makes their absence a (hard) requirement. One could argue that Scrum is only for certain types of people. Even worse: Scrum proponents actually suggest you "fix people" (or rather they need to fix themselves), when they do not fit the process. To put in bluntly: Scrum can only deal with certain types of cogs and because of its high spin, it heavily reduces the amount of variance in the cogs it can accept.

    The Scrum Master is supposed to be the buffering factor to make sure the machine does not spin out of control because of some grain of sand. Does that work? Obviously not always quite often not.
  • Waldorf dance
    Daily standups. Two week sprints. Deliver working software as early as possible. I think all but the last feel like forced rituals.

    Bob and I are working on the CRUD interface for objects A, B and C. We read Dave's database specification and Bob will do the REST interface while I build the UI basically in lockstep with him finishing another of the views. We talk multiple times a day. When Dave needs to do a change to the DB that affects us, he pings us before and after.

    We feel stupid at the daily scrum because everybody knows what we are doing and we also know which strings to pull when we are stuck.

    Also, we had to split the interface into three parts, because it takes us 6 weeks to get done (there are a lot of views). It's not that bad, we can deliver the partial interface to the customer every two weeks. But it's still idiotic and we would actually be faster when we did the think in one large batch instead of three smaller ones with a planning meeting in between.

    But the juniors like it. They like being part of a qualified team. And they like the mini steps, because they don't need to think to much during a sprint. Just test, code and integrate. Maybe Bob and I are getting old.
  • Failure to manage communication and a drive to inefficient, stressful crossbar communication

    Scrum's typical communication channels function essentially like a forced burst on a crossbar switch. You repeatedly, frequently have bursts of communication It's like a daily radio call back home to base every day, but every station phones in at the same time and you have to listen to everybody else, too. This is meant to avoid information silos.

    It also has multiple downsides: It ignores the need and ability to structure a project into parts that can be independently worked upon. Scrum just claims, you don't need that structure. "Cross functional" in this interpretation means "anyone on the team can do any task".

    The process ignores the fact that this high-frequency broadcast communication can be is very taxing and stressful to certain types of developers. Also, people have a natural inclination to become experts in certain areas. Scrum requires the whole team to think about the complete system all the time so that everybody is up to date. Scrum trivially denies any requirement for channeling communication within the team. Scrum assumes that everybody needs all information all the time and enforces this by violent transparency.


    This causes a conflict of interest and Scrum's solution to this conflict  demonize one side of the it ("silos", "submarines", "cowboys", "rogues"). In its attempt to solve the information silo problem, it causes collaborative overload. Scrum's process reduces the ability of the individual to control the flow of information from and to them. In fact while Scrum might improve team autononomy, developer autonomy is forcibly reduced via peer pressure.

    <rant mode>By all means, if you are an attention deficit hipster that cannot think ahead for more than a few days, cannot plan and implement a larger feature by yourself and instead need constant chatter from your co-workers to keep you going: do Scrum. If you actually like to get things done (i.e. you actually have a maker's schedule), if short, frequent interruptions stop you from getting stuff done, avoid Scrum like the plague.</rant mode> Side note: There is nobody that benefits from too-frequent interruptions and too-frequent crossbar communications. If your project requires an attention deficit teenager, you are welcome. If it requires somebody who can actually get things done on their own, avoid Scrum.


  • Reducing Freedom
    Goodbye Home Office. Goodbye Remote Work. A co-located team is all but a requirement. Flexible work hours? Conflict with the daily standup at 9, so they have become illusionary.

    While newspapers still publish articles about the new, free workers that work wherever they want, at least the lower layers of the IT service industry has already backpedaled. Scrum is basically a 9-to-5 job with a rigorous drill. Personal freedom is gone, self-management is gone. It's replaced by team pressure and daily check-ins with the sprint clock.The developer is treated like a tool to get a task done, nothing more.

  • Ignoring personal needs.
    Even the proponents tell you: Scrum only works when everyone commits to it. One bad apple ruins the thing. Anything less than total commitment seems to break the process. You are recklessly driving at high speed and ignore the risk of driving too fast. And it seems to be so easy to drive too fast.

    I tell you what: I'm not my job. I am still learning to switch off after a 8-9 hour day, but I am learning. I'm also not my team. I am me. I want to get better myself and I want to prove myself. Scrum either ignores this personal need or even frank out tells you to stuff it. If you pin a zealot to the problem, they will either answer with answer #1, above (that's not Scrum, that's not agile) or wiggle themselves out of a straight answer.

    When you research, most of them are project managers/product owners, so their opinion seems a little biased.

    I don't want to work at the bloody UI stuff that Linda is so much better at. But here I am, midget stepping my way through a an interface storyline like some mentally retarded junior and reporting to the team every one or two steps (stories should be measured in hours or at most days). It's degrading. Don't do this to your senior developers. Give them their freedom back, they earned it.

    What do you do with the excellent engineers that have a hard time with total transparency? The standard answer is that these people need to change, because Scrum/agile cannot handle them at all. But the desire and need for autonomy aren't going away anytime soon.

    Self-determination theory even claims that the need for autonomy is fundamental. Scrum focuses so much on the team that the individual easily gets lost in the framework up to the point where there is actual aggression against individuals from peers.

    How do we find room for individuals in agile? As far as I see it, Scrum is basically the open plan office of project management. Read up on "Open Plan Syndrom" (1, 2, 3, 4) if you like.

    A quote I found is Scrum/agile builds "great teams of people, not teams of great people", but that is also a problem. How do you integrate individual needs into a team? Of course, you can always wiggle out of it and say that the individualists are simply non-teamworkers and thus not suited to the job. But where is the room for individual growth? Where is the senior engineer? The claim seems to be, that these people cannot exist any more. Scrum thrives on the team holistic buy-in into the product they are building. Or on "I only have to think once every two weeks during the planning meeting" persons, that can simply switch off their overarching goals for the duration of  the sprint. Choose your poison, I personally can drink none of those.

    There has been a shift in the agile community to consider personality types when hiring agile team members. Most of it is amateur psychology slaved to the corporate interest.  For developers, you need highly skilled people that thrive on team achievements, willingly limit their personal goals and like to communicate while still getting their own stuff done in time. Again: If you have a team consisting of such people, consider yourself very lucky. Again: Scrum puts up the soft skill bar for everyone involved very high. Scrum proponents seem to consider this a challenge that must be mastered (I must learn to be a better communicator), but you cannot (and should not try to) change personality types. In short: you need certain types of people for a Scrum team. Evidence seems to suggest these people are quite raredon't exist ... and that you actuallly may not want them to deliver a quality product.

    But I'm circling around. Scrum seems to have no room for experienced, qualified persons with the ability and need need to work autonomously. Where do those go now? Scrum is exacerbating the shortage of developers by making qualified, intelligent, autonomous developers practically unemployable.

    Scrum encourages  your knowledge to broaden (do different parts of a project), but not to deepen (become an expert in a certain field). Scrum makes you into a cog for high-speed industrialized development without yielding you, individually sufficient benefits in  return.
  • Anger and Aggression

    These are really two words that need to be associated with Scrum advocates. Scrumnuts are angry and they aggressively make their point. It makes me think they are stuck in groupthink mode and we already know where the problem is, there.

    Scrumnuts are angry: Angry towards silos and (wannabe) rockstar coders, that the team members (may) have worked with, angry towards (seemingly) non-communicative team members, angry towards bad management with bad planning, angry towards (perceived) non-transparency.

    Whereever it comes from, Scrumnuts often have an aggressive need for total transparency and control (knowledge is power). Even --it seems-- anger towards people with fluctuating productivity and anger towards introvert "non-teamers". It shows itself in aggression against anyone not understanding the "path to deliverance".

    And because pressure from above sucks, this pressure is replaced with peer pressure. Some think peer pressure is good. But peer pressure is probably the most stressful type of pressue one can apply and Scrum has no proper checks to prevent it becoming straight peer oppression. Scrum actively pulls the stops and then blames the victims.

    There is even Aggressive Scrum now. By Jeff Sutherland, the same guy who's critique on Miles Bowkett's "Why Scrum Should Basically Just Die In A Fire" reads like he's talking to a retarded five year old from a bad neighbourhood. Ladies and gentlemen, these are the people trying to drive your development strategy. And guess what: They are aggressive, condescending, and arrogant as fuck. Exactly what the manifesto does not want them to be.

    This anger and aggression seems to culminate in a demand for control and violent transparency. I think (badly implemented?) Scrum/agile is part of the increasing burnout problem for software developers. It violates sensitive team members and provides no solutions to solve the problem.

    "Grow a thicker skin". Warning, Dichotomy up front and behind. Scrum as currently applied is an outcrop of modern management methods that try to push down responsibility as much as possible. In exchange it reduces personal freedom, replacing it a with an intangible illusion of the same. Practiced Scrum is a very bad deal for the individual developer.

    Brad Johnson compares Scrum to cold war communism, complete with watchful neighbours ready to rat you out to the regime. But in Scrum, you need to rat out yourself on a daily basis.
  • Ignoring Chronemics
    All project management methods work best when dealing with monochronic personalities. Those have a natural inclination to slice time and work into tiny chunks and allocate time slots. They also like to do one thing at a time and then procede to the next item on their list. Scrum is made for these people.

    Polychrones? Not so much. They like to juggle multiple tasks at a time, moving from one to the other (they are NOT necessarily multitasking, mind you). They see time as something that flows forward. Polychrones hate timeboxes and time slots, working in timeboxes makes them very, very uncomfortable. They might understand about deadlines, but for them, time and work are a continuum. Polychronicity can be measured. One scale is the (older) "Polychronic Attitude Index" (PAI), the other is the "Inventory of Polychronic Values" (IPV).

    Paul Graham calls the difference the "maker's schedule" and the "manager's schedule". Both are tendencies, so the pure monochrone and a pure polychrone does not exist, which is also outlined in Paul Graham's notion that there seem to be different modes of operation for the same person for different types of work.

    Polychrones' needs are strongly violated by the small-scale timeboxed task assignments. While they may be able to adopt to deadlines and they --indeed-- are actually those that are more adaptive to changes and more communicative, polychrones struggle with time management in the workplace in general (western work culture is heavily monochronic) and with "Do one thing at a time in small parcels" in particular. And because polychrones are often relational people, peer pressure ("the team is everything") makes them suffer all the harder, seriously increasing their risk for burnout.

    Scrum's distributed task list is perfect for monochrones and has absolutely no room for polychronic "creator" types. In this, Scrum is basically the team version of David Allen's "Getting Things Done", which was never verified to work and also totally ignored individual personalities. And as with GTD, Scrum causes pain and suffering for some personality types. In the long run, it relegates them to small scale (freelancer) projects or

    Scrum takes away the buffers required for some personality types to work effectively. It even declares the people that needs those buffers dysfunctional or unwilling.
Remember that all of these problem statements can be answered by "you are not doing it right".

The sprint should leave you room to experiment, to make mistakes to work at your own pace. You should feel pressure to finish the sprint, but not too much. And in theory you are able to set your own pace (but in practice the team probably dictates your pace).

For some, work is best done as a marathon. For some it's rather interval training. Adoption is only possible to a certain degree and Scrum uses peer pressure to adopt a monochronic working style.

While peer pressure is effective in increasing productivity, for many it is also the most stressful type of pressure that can be applied. Thinking in terms of principle #1 (deliver working software), it seems people forget principle #0: Protect your team! Protect every individual member! Interestingly enough, the manifesto fails to state exactly that ...the  highest priority is explicitly stated to get stuff out the door.
 
The daily scrum should not be judgemental. But have one judgemental team member and one sensitive to criticism the whole thing breaks down no matter how excellent the sensitive member is. Who's to blame? The aggressive transparency advocator. Who are you going to fire? The sensitive team member, because he/she is not performing well. Scrum is applied team dictatorship. Hello again decimation.

Scrum --when it works-- is speeding up the development process to go faster. It also very heavily reduces the margin for error. You need a certain mentality in everyone involved. You need highly monochronic people. You need confident people. You need non-aggressive people. You need highly agreeable team members able to chunk along with small scale tasks. Fail one, Scrum fails miserably.

Product owners and scrum masters should not be aggressive. They should use their interpersonal skills to make their point but otherwise leave the team alone. In a matter of sense they are team members with special tasks.

In theory and for some teams that all works well. It practice, when it fails, it seems to fail horribly, leaving qualified individuals burned out and psychologically scarred. As noted: You are driving a formula 1 car and when such one wrecks, it wrecks hard.

  • Scrum aggressively exposes "problems" that hinder its own implementation.
  • Scrum does nothing to handle these problems. In fact it cannot handle many of these problems without forcing people into modes of operation they are not comfortable and compatible with. Scrum is also likely to trigger insecure personalities into a downward spiral (think OCPD insecure overachievers).
  • Scrum proponents assume that (semi-)public exposure even of personal problems is a good thing always.
  • More general, everything that hinders the implementation of Scrum is a labelled an impediment in an often very aggressive and downright hostile language ("resistor", "defunct", ...). Critics of Scrum are told to shut up, because they hurt the (consulting) collective and take away revenue.
  • Scrum is aggressive communication and transparency within a team leaving (too) little personal space for individual team members.  Scrum can be is emotionally and mentally taxing without offering sufficient rewards to the individual.
Scrum works only with a certain type of developer. It views all other types of developers as dysfunctional, disgusting, and mentally dysfunct.
Scrum pulls the stops and safeties and gives little in return, exposing team members to serious (mental) health risks.
Scrum is highly fragile.
Hammered into every agile enthusiasts mind with a chisel should be the first premise: Protect your team and protect its members!

Recommended Reading: 

Donnerstag, 10. März 2016

Unscrum me, please 2

This is part 2. You might want to read part one, if you did not already.

When does Agile work?

Despite my misgivings, it looks like there are some really successful agile teams out there.

  1. The team shares a common vision and a common goal to deliver a good product.
  2. The team has sufficient standing with management and customer representatives to push through important technical requirements.
  3. The system has a lot of interactive features, is hard to specify in advance and constant input from the customer representative is needed.
  4. The system falls into a category the team is experienced with or overarching design problems are rare and the team is able to deal with them.
  5. The team is sufficiently experienced to design on-the-fly and see possible long-term design problems up front (while still designing on the fly).
  6. Everybody in the team realizes the need to communicate and the team self-organizes neccesary communication. 
  7. Every team member is comfortable with the idea of constantly working on small scale task items (2-3 days) and with (semi-) publicly and constantly breaking down their (often daily) work schedule to the team.
  8. The product owner and team take measures to ensure cleanup work is planned into the task list.
  9. The product owner and team take measures to ensure the team is always slightly underworked and thus reduce the stress created by the constant need to release and integrate.

It's just a job


(1). Yeah. But no. Numbers:

52,3% percent of Americans are unhappy at work. And 41% of people have a job that pays the bills, but does not really interest them. In Germany, 64% of workers just (want to) do their job. 24% are regarded to have internally quit. The highly motivated team that has an interest in the product they are building is very rare.

Regardless of the quarter that would rather quit immediately, I am not willing to insinuate that many of these people are qualified and willing to work. And even if the highly motivated developers look down on career guys and girls, the latter are probably the ones that will stay sane, healthy and  less likely to burn out.

It's interesting that some consultants tell people, that job happiness often stems from thinking "It's only a job not my life". Slightly contradictory? Of course.

Still, with these numbers, the chances to have a fully motivated team are below 1% in a team of five ((1.0 - 0.64)^5). It's not that the other ones aren't good or do not do their job, but they are not motivated to give up so much of themselves to get something done they are not really that interested in.

There are many stories floating around, how agile magically made teams more motivated and productive, but I think that is just because the change seems to have removed the few (unknown) blockers that made people unhappy. I figure, they usually were motivated to get things done before.

So now, the goal would be to find those blockers and demotivators. But that is hard and the general idea of agile seems to be to shift the responsibility to the team and also blame the team (or the organization) when things go wrong. This is actually quite a common theme in modern capitalism: Move responsibility either sideways (socialize) or down. The result is usually that the responsibility rests with people without power to decide or that everybody feels helpless (market dictatorship).

You need  a way to integrate the career developers that have just a job and the highly motivated people. Add to this the qualification delta between team members, their differing personalities and work values and you might want to really add back some external management.

Some Scrum advocates basically say, the Scrum way or the high way. They classify even a person that is (only) sceptic about agile as a passive resistor. If you do not believe in the one true god, you are a heretic that needs to be excised from this community! If it is put like this, resistant to those religious zealots should actually be required.

End of the Food Chain

We have a developer shortage. It might be a good idea to think why that is. The industry mostly does not treat the developers well. It will not be getting any better, qualified people are rare, even if you might think you can import more (cheaper).

(3) Short term projects, too-tight budgets, small-scale work, violation of work and quality values, you name it. Many are working on multiple projects, many of them short to mid term. There's not investment of people into a product, because there's no real long-term product. "Do stuff y for company x" is not product building, it's an (outsourced) service job.

(8) and (9) The reality: Many projects are fixed-price. Everybody wants estimates, but nobody can give proper estimates so we push the job down. Contracts need to be negotiated and fixed. Agile process then often leaves room for constant change requests from the customer. The result is a death march, which delivers value to the customer, but kills (literally) developers.

Agile demands that this needs to change and it seems to work for some companies. For many, including many that I know of, it won't.

I would like to iterate again the main contributors to work-related stress according to the (hopefully by now well-known) RISP study:
  • constant overcommitment
  • loss of control
  • conflicting requirements and value
In waterfall projects, after the final scramble for a release, there is a phase of relative slowness. Agile removes that and replaces it with a carefully managed but continuous pace. It is assumed that the team is responsible for making that pace sustainable.

I can find exactly two studies that compares stress levels in agile and non-agile environments. One compares a single waterfall to a single Scrum project and finds that  Scrum developers are less stressed. The second is a survey with very mixed results. In no way is switching to Agile or Scrum in particular the silver bullet. Of course, the agile zealots will want to dissect what the projects without the productivity gain did wrong.

On the other hand, agile orientation seems to correlate very strongly with the satisfaction of certain psychological needs, most importantly co-worker and supervisor support. The need for autonomy, whose lack is --I repeat my self- a direct stressor is negatively influencing the agile orientation of a developer. Agile only works when you have a tight-knit team that supports each other, is supported by management  and where each team member is able to reduce or limit their own self-efficacy.

Interestingly enough, this also means that agile can go horribly wrong: If a team member has a high self-efficacy (good people usually do), they do not like to rely on the team so much (a tendency, but it's still there). This pushes their psychological needs, which reduces their agility. And now we are in the next section ...

MacDonaldization

Once upon a time there was still the idea floating around that (relatively) unqualified developers could do the dirty work when given a sufficiently though-out specification. That did not work out so well, did it?

Then we had the Brooks team, where you had one very good developer (the  surgeon) who does most of the critical work, while others support him and work at the periphery. Guess what? That's actually the mode many experienced developers like to work: They want to be responsible, they want to make choices, they want to create a product. If the problem gets to big, they try to select chunks to give to other people.

Unfortunately, there are two problems: The surgeon becomes the single point of failure and many modern software is so complex, that a single surgeon cannot handle it all. So you start with the idea of splitting the project submodules so that multiple teams can work on a project and then integrate their results.

Now you've got the risk of silos, where expertise is built up and not shared.

So you break down the silos and build "cross functional" teams and try to enforce information sharing. A nice (or not so nice) way of doing this is continuous integration. Continuous integration basically means "you need to get your stuff together with everything else very frequently".

Now, we make the increments as small as possible. Some people mandate integration multiple times a day, but it should happen at least daily. Guess what you align your task size with? Exactly: the integration increments.

So I now work in at most half-day sizes chunks, because I need the other half-day to communicate and to fix the integration problems (I'm exaggerating).  I am not allowed to sit and think on the overall design during a sprint, because we had the design meeting up front, detailing out every task. So I write tests up from for code that I do not even know if it will fit into the design. When I need a change later, I now have twice as much code to refactor (actual code plus tests) and I have to do it more frequently. All this under the constant pressure of not having to say "I did not get a lot further yesterday. No, I'm not blocked, the task just requires more thinking to get done right". I frequently try out mini-architectures to see if they fit the overall system. For some people, I cannot do that, because I have to deliver value in much smaller chunks. And there's the assumption: Everybody that is not working on small chunks, doing daily mainline integration and is constantly reporting his progress to the team in as small chunks as possible, is a bad person. He's not smart, he's a bad team player.

Any smart person that takes pride in their own achievement and values their privacy will resist constant observation. I would even go so far as so claim that this is a fundamental violation of their rights as an individual. Agile practices can be violating if enforced. And since the agile requires full commitment, the zealots try to missionize the resistor, making things worse. Some Scrum advocates even claim, that it's the Scrum way or the high way. They classify even a person that is (only) sceptic about agile as a passive resistor. If you do not believe in the one true god, you are a heretic that needs to be excised from this community!

Let's give back to the agile zealots, shall we? Because they called us siloed, pseudo-supercoder teamkillers that need to be excised from the team. And yes, they do. Not in as many words, but they still tell us to fuck off.

I think many over-zealous agile proponents seem to have been heavily burned at some point by some him-/herself over-zealous, overly-protective, non-communicative pseudo-supercoder, that wasn't all that great in the end. And now they project that trauma onto every project they are working on.

If you are not a very heavily integrated team worker, you are non-functional. You must cooperate, communicate, multitask (Not that all of these are on the burnout risk list). For some people, agile removes personal comfort zones without leaving them a way out. And it pushes the blame into them.

Agile zealots seem to have a sworn enemy: The highly skilled problem solver that sees communication as a necessary chore not as a his/her default operating mode. In this world, structuring a project so that multiple, highly skilled, independent people can work on it together without constantly looking over each others shoulders is frowned upon, it is deemed impossible. To them, these introverts seem to be disfunct, non-teamplayers and despicable.

There, I wrote it. Scrum is about hating some people's personalities. It's Processes over People.

Hell, let's make it even more provocative: Agile is about monochronic construction-line developers and managers rolling out their personal version of "works for them" discipline. Smart, but more introvert people that like to work on larger tasks in private are their enemy. They hat them, think them disfunction and broken.

People over process my ass. Have a bad day? The team needs to know, because your tasks are only  ever a few hours long! Why aren't there any more green tests on your list? Why did you do nothing today? Why is your task not finished? Agile frowns upon asking that question, but you already need a tight-knit team for those questions not to come up. And that team did not need agile in the first place.

Agile coach's solution is to kill the "resistant" team member off.

Just fuck the fact that many good people actually like to work on something in larger chunks and they can handle it. Problem is, of course, the system is not built this way. While tasks are reduced to small stories, proper modularization is not encouraged. You split of stuff so that the unit tests run, but cross cutting concerns seem to be never addressed. *sigh* You put (significantly) more stress on some people and call that method developer friendly. And the only answer to have for those that cannot cope is to offend them and tell them they are (mentally) broken.

People that I would like to call good agile proponents are more moderate. They think that this amount of aggressive teamwork is a skill that can be learned and that some people only take longer to learn that do others. But they also offer no solutions to good engineers that simply cannot do it. Unfortunately thus, agile puts some smart people into a corner without considering if that is not even more wasteful that any alternative.
 
The premise --in my opionion-- that agile makes up for is just often not realistic. And I strongly refuse to be a construction line developer. And I am not alone, that reduction to a mere code machine is on the top list of work related stress generators in IT.

And mind you: Without smart, independent thinkers that are able to do (some) things on their own, you create a mediocre product. Most of the team might feel good, but the end product is mediocre in the eyes of an experienced person. And when the "introverts" tell you, that it could have been so much better, you dismiss them as arrogant and elitist.

Maybe it really is about being able to reduce one's work values. That conflict also on the burnout generator list.

Hybrid might be a good idea

I think that you still need to fit both worlds: I know that I have spent months at the start of projects to get a broad design overview for a project. You really need the wireframes to get a concept and a broad idea of the commitment you can make, i.e. if the project seems actually doable in the suggested (and paid) timeframe. Thus

  • Broadly plan ahead. You need to know where to stop, though. Do not overplan, but get a broad sense of dependencies. This also helps you to get decoupled modules, which --in turn-- you can use to keep your big thinkers and big tinkers happy. And: You know what experience also means? Experienced people on your team can spot potential pitfals early. Make use of them.

    You only need a broad plan on the lines of "we want to be at x by date y". The plan may change (significantly) over the project's process, but a broad roadmap is really a good idea.
  • Always undercommit. If a planned work period (please stop calling these things sprints already) ends just on time, you put too much into it. You always need room for little tunings and cleanup. It is second nature for experienced developers to do cleanups on the fly (HEADS UP commits should be rare and communicated well, though). It is also important for the psychological needs that people have the feeling of getting done more that they should. Psychology is more important than you think.
  • Leave room for detours and longer tasks. This also fits in line with the need to broadly plan ahead. Experienced people will know that they need to implement a certain feature or try out if something works. These side paths are very important to develop a good system. "I found a good way to solve the problem x as a basis for feature y" is very, very satisfying. People that are only working on the short term task queue are discouraged from these detours, because they do not have the feeling that they can catch up on their workload (by social pressure, see part 1). Don't make your people into idiots.

Properly executed Kanban seems to get it right. Just saying ...