Is Your Team Focused or Fragmented?

I usually will write something as a blog post first, but this started as a short LinkedIn post, which received two likes in less than 10 minutes after posting, so I decided to re-post it here.

Here are some thoughts fueled by listening to an enlightening podcast with a neuroscientist host (Andrew Huberman) and a choreographer guest (Twyla Tharp)🧠&🩰:

A fully supported software initiative includes people focused on coding, UI/UX, and testing. In high-performing teams, these specialists interact frequently.

Great solution teams understand that skilled “creatives” have deep grounding in data about human behavior and regularly test their work with users and refactor based on feedback and practicality 🎨 ; “testers” need to understand the limits of the technology, imagine behaviors that are not expected, and analyze the likelihood of something happening versus the impact of it happening 🧪 ; and developers who don’t test as they go, or don’t apply creative thinking to meeting business requirements may produce a lot of code but aren’t really productive 🤠 .

Yet, many organizations keep these experts apart outside of occasional “sync” meetings that don’t result in anything being synchronized but do tend to reduce productivity.

Other organizations recognize that there is overlap in thinking across these specialties and try to cut costs or speed output by removing the specialists and increasing the load of the remaining experts. 🪨

People that have chosen a focus and developed the skills to be good at what they do are happiest and most productive when they are supported and challenged by people with overlapping thought processes and differing skills. 👀 These similarities in thought processes and differences in discipline are the basis of highly productive teams that thrive when leadership aligns them on a shared direction. 🛣️

(Leaving out managers and architects is a peril, too, but including them here would require a much longer post).

 

If you found this interesting, please share.

© Scott S. Nelson

Working the Plan is not Working for the Plan

This post started with an entirely different approach.

I wanted to rant about how some statements of work are written with absolute certainty based on assumptions, and when those assumptions are proven wrong the work still proceeds with the obligation of fulfilling the SOW, resulting in lot of wasted effort spent on things that do nothing to further the goals of the enterprise. These same SOWs are also written with the absolute certainty of how much time it will take to do the job, so the time spent on the useless parts robs from the time available to work on what will make everyone’s life easier for the next SOW…provided history doesn’t repeat itself.

Instead, I got caught up in mangling metaphors and exaggerating erroneous errors about plans that are too rigid and wound up writing the following. Somehow it still represents the point I was trying to make… at least to me. Apologies in advance if it’s not as good for you.


Waterfall methodologies like RUP ruled the enterprise IT landscape back when it was mostly green fields, and that made sense. Projects were funded based on clear goals where the ROI had already been calculated. That ROI was calculated based on a set of business goals that were frozen once the project got the green light (yes, I know that scope creep existed even back when dinosaurs roamed the server rooms, but stick with me and then tell me if it really matters for the purpose of illustration). These goals were numbered 1 to n, then a person or a team (project sizes and budgets varying) would write functional requirements (FR) that meet those business requirements, numbering them 1.1 to n.. And then there would be development tasks, and test cases, all of which must have a compatible numbering systems, and each must tie back to one (and only one) functional requirement. Life was simple, and project schedules were measured in years. For some, enough years to add up to more than a decade.

Even when Pmanagersaurous (the p is silent) ruled the cube halls, there were businesses (and even some rebellious departments within enterprises) that used a different approach. To those who kept getting their ties caught in printers spewing out detailed requirements to be bound, distributed, and shelved, this alternative method seemed like some cavemen cracking their knuckles and banging on keyboards, intent on creating fire or agriculture or quantum computers. Much of what they built has gone the way of GeoCities and MySpace, but some of it went the way of either owning or replacing the big companies with the big projects and the big budgets. And they taught others their secrets. So many that it stopped being secret.

Then the legacy companies decided they wanted some of this high-margin, low-cost, no-longer-secret sauce for themselves, so they hired agile coaches. Of course, the ones that were really good at doing agile were off doing agile and becoming rich and famous. So the coaches would sometimes wing it, or steal from other processes to differentiate themselves. The legacy companies, being legacy, would pay the coaches lots of money, and thank them profusely, and then start requiring a business case before green lighting an “agile” project. The business cases had numbered paragraphs, and the business leaders wanted to know how things were going every moment of the day, so they insisted that the paragraph numbers be included in the “stories”, and it was Epic.

The little agile companies merged with competitors and became big legacy companies. To compete with even bigger legacy companies, they hired their executives, who needed to know everything that was going on so they could “take it to the next level”. So all of the highly skilled, highly productive people began applying half of their skills and productivity in doing what they have always done best, and half matching numbers to lines of code. Working for the plan.

And then AI came along, but that is post of a different order.

If you found this interesting, please share.

© Scott S. Nelson
Freepik rendering of the prompt 6 cats in a line one whispering to the next playing the telephone game

Realizing Agile’s Efficiency

(Feature image by Freepik)
TL;DR: Fostering a culture of trust that leads to calm collaboration up front will yield the benefits that Agile principles promise.
Preface: While agile is in the title of this post, no claim is made that the post is about how to do agile or how SAFe is or is not agile. It is about how the Manifesto for Agile Software Development is self-clarifying in that it concludes with “while there is value in the items on the right, we value the items on the left more.” (italics mine), and how the value of the items on either side should be measured by their effectiveness in a given organization and the organizations influence on the “self-organizing teams” referenced in the Principles behind the Agile Manifesto. That said…
The value of architecture, documentation, and design reviews in SAFe was illustrated in a scenario that played out over several weeks.
The situation started with the discovery that a particular value coming from SAP had two sources. Well, not a particular value from the perspective of the source. The value had the same name, was constrained to the same list of options, but could and did have different values depending on the source, both of which were related to the same physical asset. For numerous reasons not uncommon to SAP implementations that have evolved for over a decade, it was much more prudent to fetch these values from SAP in batches and store them locally.
The issue of the incorrect source was identified by someone outside the development team when it was found to be commonly missing from the source selected for work prioritization. For various reasons that will be common across a variety of applications that support human workflow, this was considered something that needed to be addressed urgently.
The developer who had implemented the fetch to the correct source was tapped to come up with a solution. Now, one thing about this particular application is that it was a rewrite of a previous version where the value of “Working software over comprehensive documentation” was adhered to without considering the contextual reality that the team developing release one would neither be the team working on the inevitable enhancements nor ever meet that team. The re-write came about when the system was on its third generation of developers and every enhancement was slowed because there was no way to regression test all of the undocumented parts. Unsurprisingly, the organizational context that resulted in the first version missing documentation also resulted in some tables schemas being copied wholesale from the original application and not reviewed because requirements were late, resources were late, and the timeline was unchanged. So, with no understanding of why not to, the developer provided a temporary solution of copying the data from one table to the other because it had only been communicated that the data from one source was the correct data for the prioritization filter. Users were able to get their correctly prioritized assignments and  the long-term fix went to the backlog.
As luck and timing would have it, when the design phase of the long term fix was picked up by the architect, the developer was on vacation. Further, while this particular developer had often made time to document his designs, the particular service the long-term fix depended on was one of the few that were not documented. Still further, it had been re-design as another service had been discovered to obtain the same data more reliably. But all of the data currently loaded was from the previous version, so even the attempt of reverse engineering the service to get sample data for evaluation was not possible. These kinds of issues can lead to frustration, which in turn dampens creative thinking, which is to say that had the architect looked at the data instead of following the assumption from the story that the data wasn’t yet readily available, he would have discovered that it was already present.
Eventually the source of the correct value was identified and a design created that would favor the correct value over the incorrect value but use the incorrect value if the correct one was not available to allow for the assignments to continue because sometimes the two actual values were the same (which is inspiration about a future post discussing the value of MDM). The design also included updating to the correct value if it became available after the initial values were set. The architect, being thorough, noted in the design a concern about what should be done when the correct value came into the system after the record that was prioritized based on that value has been assigned and processed by a user. After much back and forth, it was finally communicated that while the data was retrieved from the same system and labeled with the same name, the two values were not different because one was incorrect but because they were in fact to separate values meant for two different viewpoints. Which means that the design of attempting to choose and store a single correct value in both tables was invalid and that the records altered for the work-around were now (potentially) invalid. This made the correct solution a (relatively) simple change to the sorting query.
With the full 20/20 vision of hindsight, it is now clear that if the team did not feel that ever issue needed to be treated as an emergency and all of the product, design, and development stakeholders had discussed the issue prior to taking action, about 80 hours of work would have been reduced to 4 hours. Yes, there were other factors that impacted the need of 80 hours to deal with what is a fairly minor flaw, but those factors would not have come in to play had the questions been asked up front and clarity reached through collaboration.
If you found this interesting, please share.

© Scott S. Nelson

The Real Problem with Hybrid Agile

Featured image by Gratisography: https://www.pexels.com/photo/man-person-street-shoes-2882/

Before SAFe®, most organizations would do “our brand of agile”. IMO, SAFe® takes the most common elements of a plethora of hybrid agile approaches and codifies them in to a “standard” (imagine air quotes). My comments today are not about SAFe® but hybrid agile in general.

The common denominator I see across hybrid agile approaches is that they include the notion of some specific deliverables by a specific date. For the agile purist this isn’t agile because that notion is very not agile. Hats off to the purists that get to work that way, and they have already stopped reading by now unless they share the same mental state of people that slow down to look at a bad accident on the freeway (which I feel is not agile, but I’m no purist, so I couldn’t say for sure).

So, having target dates for a collection of stories isn’t entirely a bad thing, in that there are many organizations that have a legal obligation to appear as if they can reliably predict the future. These target days are where the problems start. And I will admin here that the title of this post is a lie, it is multiple problems, but I wanted to rope in those who really think that there is one thing wrong because I think they may get the most out of this particular rant.

So, first problem (position being arbitrary, I don’t have any stats about which problem occurs most) is that if the target is missed then there will be some people that point at the agile side of the hybrid approach as the blame. It could be, but it is much more likely that it is the behaviors that result for hybrid approaches, such as skipping documentation entirely, which results in longer ramp up time and lack of the DRY design pattern, because if you don’t know what’s been done how would you know if you were doing it again?

The next problem (purposely avoiding making it the  second problem to avoid people thinking this is a non-arbitrary sequence…beyond a order that helps to communicate the concepts) is that when the targets are missed the people that are supposed to know what the future looks like look bad, so they get mad at the people who are trying to hit the target. Most people feel bad when people are mad at them (except people with either experience in such things, certain psychological disorders, or a hybrid of the two).  No one likes to feel bad (except people with different psychological disorders) so they try to figure out how to prevent that in the future.  And we have tons of action-comedies to suggest a way to do this: Lower your expectations…lower…lower…that’s it. So people stop missing their targets and Wall Street analysts think the bosses of these people are great prognosticators where what they have actually done is taught their teams to be great procrastinators.

And the last problem I will point at before running for my life from hip hybrid folks who will want blood and purists that stuck around and are still looking for blood is that the people who try to make it happen still miss the mark because they focus on the wrong targets. The long-term goals have this nice, big, shiny definition,  where agile aims to complete one small, solid solution. The magic comes from being able to look at the big shiny and build a small solid that is good-enough-for-now, and still in the direction of the big shiny. One definition of magic is “some can and some don’t know how”, and in the case of this balancing different paths to perfection, some will focus everything on the small solid piece and forget to thing about whether it will fit into the big shiny vision. Or, they will be so enamored with the big shiny vision that everything they do in the span of a sprint is inadequate for the pieces that are solid, making the next sprint slower because they are still waiting on that piece that would let them move faster. Of course, magic is hard, and expecting everyone to produce it is destined for disappointment, which is why the teams that just lower their expectations are more “successful” (Dr Evil-level air quotes there).

So, at the end of the day, or at least the end of this post, the perception of success is easiest to meet if you succeed at level far below your potential. You can stress out everyone and sometimes hit the target. Or you can start forgiving your teams for their imperfections, cheer them for their successes, and teach them to learn from each other to be more successful every quarter. The problem with that last is that I will have to write another post to find more problems with hybrid until they are all resolved.

If you found this interesting, please share.

© Scott S. Nelson
Path with cloudy destination

You can always get there from here

There are many quotes to the effect that perfection is a path and not a location (my wording in this case).  To me, this is the essence of agile vs waterfall (and, to a degree, SAFe).
Agile trusts that high performing teams, following processes that support continual re-evaluation, will produce higher quality deployable results with the same amount of resources.
All methodologies have processes (or ceremonies). Properly followed, they can all produce good results. Whether one methodology will produce better results than another is fairly moot, because it isn’t the methodology alone that influences the results. It is where the focus of the team is while following the methodology that makes the difference.
A team that is focusing on a date will almost always have to skip some steps to make that date.
A team this focused on the completed product is almost always  going to miss an import use case (very simple products excepted).
A team that is focused on absolute perfection of every task is going to miss business expectations.
A team that is focused on sticking to an iterative process and willing to course-correct their approach to improve the next iteration will always produce better deliverables.
Leadership is less about providing direction and more about communicating where the team should focus to be successful. The goal is to have a shared vision and foster the flow state that will support realizing some version of that vision at regular intervals.
Or, to use another similar quote, “This is the way”.
If you found this interesting, please share.

© Scott S. Nelson