Momemto Mori – Preparing for Loss

“But when at last some illness has reminded them of their mortality, how terrified do they die, as if they were not just passing out of life but being dragged out of it.” – Seneca, On the Shortness of Life (Translated by C. D. N. Costa)

Not sure anyone actually prepares to lose a loved one. Not like one might prepare for a speech or a party or a vacation. It’s never that methodical, predictable, or organized. We might brace ourselves for such a loss, if we know it’s imminent. Even then, the sanctuary of denial is much more common. We know the irreversible and inevitable pivot is close, but we busy ourselves with making sure the deck chairs are in order. Great effort is expended at distracting ourselves from the reminder of our own inevitable demise.

If Fortune is such that the death of a loved one is not a sudden loss to be dealt with all at once, we have an opportunity to come to terms with the loss and better understand ourselves. A transition unfolds – day-by-day, moment-by-moment – until a final dissolution. There are good days and bad days, good moments and bad moments that lead the way to THE moment. Throughout this process, there is an improvised preparation. I don’t think such a preparation makes the actual moment of death any easier to bear. But I do believe, when engaged with presence and clarity, it lightens the burden somewhat and eases the work of picking up the pieces before carrying on.

Perhaps it’s the shared finality of it, but the loss of the dogs I’ve been charged with taking care of over the years has a lot in common with the loss of family and friends. The steadfast loyalty of a dog, their unconditional loving and instant forgiveness of a transgression has been a model for me emulate. Their principle goal in life seems to be collaboration and honesty. The clarity with which dogs approach life, and the end of it, serves as a counterpoint to how we humans muddy the water in unnecessary and unhelpful ways. From this forms a singularly clear bond of trust, compassion, and mutual loyalty. Without exception, this has been my experience.

My A#1 dog is Rosebud Thorn Engel. Ears as pink as rose petals and a disposition just as sweet, she can be a thorny terrier on occasion. She lost her hearing last year, has signs of cataracts developing, and struggles with a bit of arthritis in her elbows and knees. More recently, tumors have been found on her liver and spleen and her liver enzymes off the scale. A sporadic appetite means she’s losing weight and has days to weeks. So each day is a treasure

(Rose at 7 weeks old.)

I wonder does she know what is happening? At 14 1/2 years old she’s still a spry little monster at times even with her failing biomachinery. In the back of my mind I’m constantly asking the questions, “Is her quality of life good? Is she comfortable? Is she happy? Is her tail wagging? Is there a light in her eyes?”

(Even thought she’s deaf, Rose still knows when I’m talking to her and, like everyone else it seems, struggles to make sense of what I’m trying to say.)

I believe there is an unacknowledged moment we are waiting for where the pain and grief of watching someone suffer is greater than the grief of loosing them. Whether this is so for the person dying, I cannot say. And we certainly can’t know this from an animal’s perspective. It’s a moment where grief is at its greatest and a small sense of relief has begun to grow. Relief from the suffering, relief from the uncertainty, relief from the anticipation of The Big Sting. I do know if we are fully engaged with this process and simply BE with the moment, The Big Sting passes quickly – the anticipation is the worst part of it – and we can begin, however slightly, to move on.

Time does not heal all wounds. But if we are open to the lessons life sends our way, we can grow stronger and by virtue of our strength, the burden becomes easier to bear.

 

What does Agile documentation look like?

Reading through Dusty Phillips’ second edition of “Python 3 Object-oriented Programming,” this quote caught my attention:

Further, the most important person you will ever have to communicate with is yourself. We all think we can remember the design decisions we’ve made, but there will always be the Why did I do that? moments hiding in our future. If we keep the scraps of papers we did our initial diagramming on when we started a design, we’ll eventually find them a useful reference.

That strikes me as a good benchmark for acceptable documentation in Agile. Whether coder, UI/UX designer, data architect, or whatever, if you are keeping a good record of what you decided and why, you’ll probably be able to recreate the rationale for why things got to be the way they are for anybody who needs to know. Especially if that anybody is you. And there is a good chance that someone following in your footsteps will be able to pick up the same rationale even in your absence. All this without putting an unnecessary burden on project progress for the sake of detailed documentation.

Of course, what qualifies as “good” is the tricky part. A suggested threshold would be to specify only as much information as makes sense or for what is known given the current situation. Documentation should be subject to iterative practices just as much as code.


Image by Pexels from Pixabay

Mindfulness? There’s an app for that! (Revisited)

Three years ago, I published the following article:

It appears mindfulness is…well…on a lot of people’s minds lately. I’ve seen this wave come and go twice before. This go around, however, will be propelled and amplified by the Internet. Will it come and go faster? Will there be a lasting and deeper revelation around mindfulness? I predict the former.

Mindfulness is simple and it’s hard. As the saying goes, mindfulness is not what you think.  It was difficult when I first began practicing Rinzai Zen meditation and Aikido many years ago. It’s even more difficult in today’s instant information, instant gratification, and short attention span culture. The uninitiated are ill equipped for the journey.

With this latest mindfulness resurgence expect an amplified parasite wave of meditation teachers and mindfulness coaches. A Japanese Zen Master (Roshi, or “teacher”) I studied with years ago called them “popcorn roshis” – they pop up everywhere and have little substance. No surprise that this wave includes a plethora of mindfulness “popcorn apps.”

Spoiler alert: There are no apps for mindfulness. Attempting to develop mindfulness by using an app on a device that is arguably the single greatest disruptor of mindfulness is much like taking a pill to counteract the side effects of another pill in your quest for health. At a certain point, the pills are the problem. They’ve become the barrier to health.

The “mindfulness” apps that can be found look to be no different than thousands of other non-mindfulness apps offering timers, journaling, topical text, and progress tracking. What they all have in common is that they place your mindfulness practice in the same space as all the other mindfulness killing apps competing for your attention – email, phone, texts, social media, meeting reminders, battery low alarms, and all the other widgets that beep, ring, and buzz.

The way to practicing mindfulness is by the deliberate subtraction of distractions, not the addition of another collection of e-pills. The “killer app” for mindfulness is to kill the app. The act of powering off your smart phone for 30 minutes a day is in itself a powerful practice toward mindfulness. No timer needed. No reminder required. Let it be a random act. Be free! At least for 30 minutes or so.

Mental states like mindfulness, focus, and awareness are choices and don’t arise out of some serendipitous environmental convergence of whatever. They are uniquely human states. Relying on a device or machine to develop mindfulness is decidedly antithetical to the very state of mindfulness. Choosing to develop such mental states requires high quality mentors (I’ve had many) and deliberate practice – a practice that involves subtracting the things from your daily life that work against them.

“For if a person shifts their caution to their own reasoned choices and the acts of those choices, they will at the same time gain the will to avoid, but if they shift their caution away from their own reasoned choices to things not under their control, seeking to avoid what is controlled by others, they will then be agitated, fearful, and unstable.” – Epictetus, Discourses, 2.1.12

Looking at the past three Internet years I’d have to say the prospects for the latest mindfulness wave amounting to anything substantial are bleak. There probably aren’t enough words to describe how far off the rails this fad has gone. But there is a number! 2020.

Bonus: There’s a study! “Minding your own business? Mindfulness decreases prosocial behavior for those with independent self-construals.” (Preprint) There was a concept in this study that was new to me: “self-construal.” According to the APA dictionary:

self-construal
n. any specific belief about the self. The term is used particularly in connection with the distinction between independent self-construals and interdependent self-construals.

Well, that definition sorta has itself as the definition. So…

independent self-construal
a view of the self (self-construal) that emphasizes one’s separateness and unique traits and accomplishments and that downplays one’s embeddedness in a network of social relationships. Compare interdependent self-construal.

And

interdependent self-construal
a view of the self (self-construal) that emphasizes one’s embeddedness in a network of social relationships and that downplays one’s separateness and unique traits or accomplishments. Compare independent self-construal.

Clear on terms, on to the abstract:

Mindfulness appears to promote individual well-being, but its interpersonal effects are less clear. Two studies in adult populations tested whether the effects of mindfulness on prosocial behavior differ by self-construals. In Study 1 (N = 366), a brief mindfulness induction, compared to a meditation control, led to decreased prosocial behavior among people with relatively independent self-construals, but had the opposite effect among those with relatively interdependent self-construals. In Study 2 (N = 325), a mindfulness induction led to decreased prosocial behavior among those primed with independence, but had the opposite effect among those primed with interdependence. The effects of mindfulness on prosocial behavior appear to depend on individuals’ broader social goals. This may have implications for the increasing popularity of mindfulness training around the world.

TL;DR: Mindfulness “training” makes selfish people more selfish and narcissistic people more narcissistic. On the other hand, it makes altruistic people more altruistic and compassionate people more compassionate. So there’s that.

I think it’s fair to say the last several years in particular have revealed an awe inspiring explosion in selfishness and narcissism. Evidenced by the extreme polarization manifest in identity politics and all it’s dubious offspring. The thought of all these people pulling on a mindfulness mask like some fashion accessory is less than comforting.

Three years on, it looks to be certain that “mindfulness” has been co-opted and applied as a temporary bandage in a world lacking resilience, flexibility, and genuine tolerance. Another mindfulness wave that has failed to crash onto the shores of civilization with a cleansing thunder, instead mindlessly trickled up to the edge and done little more than rearrange the garbage floating at the shoreline.

I really wanted it to succeed. Maybe next time.

References

Poulin, M., Ministero, L., Gabriel, S., Morrison, C., & Naidu, E. (2021, April 9). Minding your own business? Mindfulness decreases prosocial behavior for those with independent self-construals. https://doi.org/10.31234/osf.io/xhyua

 

Image by jplenio from Pixabay

False Barriers to Implementing Scrum

When my experience with scrum began to transition from developer to scrum master and on to mentor and coach, early frustrations could have been summed up in the phrase, “Why can’t people just follow a simple framework?” The passage of time and considerable experience has greatly informed my understanding of what may inhibit or prevent intelligent and capable people from picking up and applying a straightforward framework like scrum.

At the top of this list of insights has to be the tendency of practitioners to place elaborate decorations around their understanding of scrum. In doing so, they make scrum practices less accessible. The framework itself can make this a challenge. Early on, while serving in the role of mentor, I would introduce scrum with an almost clinical textbook approach: define the terms, describe the process, and show the obligatory recursive work flow diagrams. In short order, I’d be treading water (barely) in recursive debates on topics like the differences between epics and stories. I wrote about this phenomenon in a previous post as it relates to story points. So how can we avoid being captured by Parkinson’s law of triviality and other cognitive traps?

Words Matter

I discovered that the word “epic” brought forth fatigue inducing memories of Homer’s Iliad and Odyssey, the Epic of Gilgamesh, and Shakespeare. Instant block. Solution out of reach. It was like putting a priceless, gold-plated, antique picture frame around the picture postcard of a jackalope your cousin sent on his way through Wyoming. Supertanker loads of precious time were wasted in endless debates about whether or not something was an epic or a story. So, no more talk of epics. I started calling them “story categories.” Or “chapters.” Or “story bundles.” Whatever it took to get teams onto the idea that “epics” are just one of the dimensions to a story map or product backlog that helps the product owner and agile delivery team keep a sense of overall project scope. Story writing progress accelerated and teams were doing a decent job of creating “epics” without knowing they had done so. Fine tuning their understanding and use of formal scrum epics came later and with much greater ease.

“Sprint” is another unfortunate word in formal scrum. With few exceptions, the people that have been on my numerous scrum teams haven’t sprinted anywhere in decades. Sprinting is something one watches televised from some far away place every four years. Maybe. Given its fundamental tenets and principles, who’s to say a team can’t find a word for the concept of a “sprint” that makes sense to them. The salient rule, it would seem, is that whatever word they choose, the team fully understand that “it” is a time-boxed commitment for completing a defined set of work tasks. And if “tide,” “phase,” or “iteration” gets the team successfully through a project using scrum then who am I to wear a the badge of “Language Police?”

A good coach meets the novice at their level and then builds their expertise over time, structured in a way that matches and challenges the learner’s capacity to learn. I recall from my early Aikido practice the marked difference between instructors who stressed using the correct Japanese name for a technique over those that focused more on learning the physical techniques and described them in a language I could understand. Once I’d learned the physical patterns the verbal names came much more easily.

Full disclosure: this is not as easy when there are multiple scrum teams in the same organization that eventually rotate team members. Similarly, integrating new hires with scrum experience is much easier when the language is shared. But to start, if the block to familiarization with the scrum process revolves around semantic debates it makes sense to adapt the words so that the team can adopt the process then evolve the words to match more closely those reflected in the scrum framework.

Philosophy, System, Mindset, or Process

A similar fate awaited team members that had latched onto the idea that scrum or agile in general is a philosophy. I watched something similar happen in the late 1980’s when the tools and techniques of total quality management evolved into monolithic world views and corporate religions. More recently, I’ve attended meet-ups where conversations about “What is Agile?” include describing the scrum master as “therapist” or “spiritual guide.” Yikes! That’s some pretty significant mission creep.

I’m certain fields like philosophy and psychotherapy could benefit from many of the principles and practices found in agile. But it would be a significant category error to place agile at the same level as those fields of study. If you think tasking an agile novice with writing an “epic” is daunting, try telling them they will need to study and fully understand the “philosophy of agile” before they become good agile practitioners.

The issue is that it puts the idea of practicing agile essentially out of reach for the new practitioner or business leader thinking about adopting agile. The furthest up this scale I’m willing to push agile is that it is a mindset. An adaptive way of thinking about how work gets done. From this frame I can leverage a wide variety of common, real-life experiences that will help those new to agile understand how it can help them succeed in their work life.

Out in the wild, best to work with the system as much as possible if you want meaningful work to actually get done.

Parkinson’s Law of Triviality and Story Sizing

From  Wikipedia: Parkinson’s law of triviality

Law of triviality is C. Northcote Parkinson’s 1957 argument that people within an organization commonly or typically give disproportionate weight to trivial issues. Parkinson provides the example of a fictional committee whose job was to approve the plans for a nuclear power plant spending the majority of its time on discussions about relatively minor but easy-to-grasp issues, such as what materials to use for the staff bike shed, while neglecting the proposed design of the plant itself, which is far more important and a far more difficult and complex task.

I see this phenomenon in play during team story sizing exercises in the following scenarios.

  1. In the context of the story being sized, the relative expertise of each of the team members is close to equal in terms of experience and depth of knowledge. The assumption is that if everyone on the team is equally qualified to estimate the effort and complexity of a particular story then the estimation process should move along quickly. With a skilled team, this does, indeed, occur. If it is a newly formed team or if the team is new to agile principles and practices, Parkinson’s Law of Triviality can come into play as the effort quickly gets lost in the weeds.
  2. In the context of the story being sized, the relative expertise of the team members is not near parity and yet each of the individual team members has a great deal of expertise in the context of their respective functional areas. What I’ve observed happening is that the team members least qualified to evaluate the particular story feel the need to assert their expertise and express an opinion. I recall an instance where a software developer estimated it would take 8 hours of coding work to place a “Print This” button on a particular screen. The credentialed learning strategist (who asked for the print button and has no coding experience) seemed incredulous that such an effort would require so much time. A lengthy and unproductive argument ensued.

To prevent this I focus my coaching efforts primarily on the product owner as they will be interacting with the team on this effort during product backlog refinement session more frequently than I. They need to watch for:

  1. Strong emotional response by team members when a size or time estimate is proposed.
  2. Conversations that drop further and further into design details.
  3. Conversations that begin to explore multiple “what if” scenarios.

The point isn’t to prevent each of these behaviors from occurring. Rather manage them. If there is a strong emotional response, quickly get to the “why” behind that response. Does the team member have a legitimate objection or does their response lack foundation?

Every team meeting is an opportunity to clarify the bigger picture for the team so a little bit of conversation around design and risks is a good thing. It’s important to time box those conversations and agree to take the conversation off-line from the backlog refinement session.

When coaching the team, I focus primarily on the skills needed to effectively size an effort. Within this context I can also address the issue of relative expertise and how to leverage and value the opinions expressed by team member who may not entirely understand the skill needed to complete a particular story.

(John Cook cites another interesting example of Parkinson’s Law of Triviality (a.k.a. the bike shed principle) from Michael Beirut’s book “How to” involving the design of several logos.)

 

Image by Arek Socha from Pixabay

There Will Never Be an Agile 2.0…

…for the simple reason there was never an “Agile 1.0.”

Claiming to have crafted “Agile 2.0” would be like publishing the “Declaration of Independence 2.0” or “The Laws of Thermodynamics 2.0.” The Agile Manifesto is foundational. It is a statement of first principles that underpin a mindset from which a mountain of tools, techniques, frameworks, and practices have been created.

As to methods, there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble.Harrington Emerson

As a tool, its utility comes from providing a stable base from which we can clarify complicated problems. Much of the 2.0 stuff I’ve read adds complexity and complication to a simple set of values and principles. In this regard it reflects research that shows people are more likely to add to solutions rather than subtract.

It’s this notion of a stable base that flummoxes people seeking to assign versions to Agile. First principles are often unassuming, their beauty and brilliance is masked by their seemingly simple codification of how things best work. Neither are first principles about absolute truths. First principles can have first principles. The first principles by which I use a wood plane are different from the first principles used by the tool manufacturer when milling the steel for the blade. My first principles of use inherit and extend the manufacture’s first principles of milling steel.

The Agile Manifesto identified elements in software development that are non-reducible. To be clear, there are other first principle elements not included in the Agile Manifesto and the Agile Manifesto doesn’t apply to every conceivable context. Twenty years of experience of applying it’s four values and twelve principles to other areas of business have revealed this to be true. They are not, nor will they ever be, an absolute truth. As our understanding of why they work so well improves, so will the underlying principles. Frankly, I’m impressed they have held up this well this far into the Internet Age. And I certainly don’t expect them to withstand every challenge or be as durable as the Declaration of Independence of the Laws of Thermodynamics.

So when I read someone’s declaration of “Agile 2.0,” the first thing I want to know is if their proposal precedes the first principles established by the Agile Manifesto or are they trying to do something else. So far, it’s always been the something else. There may be some interesting thoughts related to an alternate framework or perhaps a change to common practices, but I’ve yet to see anything revolutionary or even evolutionary.

A second thing I look for: Is the author working to falsify any of the principles and have they done a good job of presenting their argument. Again, this hasn’t happened. Mostly I read a lot of complaints about wording or ambiguity or history or stuff that is little more than efforts to tag the foundation with a personal style of graffiti.

I’ve yet to see Agile’s next evolutionary phase. I hope someday I will.


Image by 은주 송 from Pixabay

Moving Past “I Don’t Know”

In 2015 I attended the Mile High Agile conference in Denver where Mike Cohn delivered the morning keynote address: “Let Go of Knowing: How Holding onto Views May Be Holding You Back.” As you might expect from a seasoned professional, it was an excellent presentation and very well received. A collection of 250+ scrum masters, product owners, and agile coaches is no stranger to mistakes, failures, and terrifying moments of doubt.

As valuable as the ideas in Cohn’s presentation are, I want to take them further. Not further into the value of keeping our sense of sureness somewhat relaxed, rather onto some thoughts about what’s next. After we’ve reached a place of acknowledging we don’t know something and are less sure then we were just a moment before, where do we go from there? It’s an important question, because if you don’t have an answer, you’re open to trouble.

The “I Don’t Know” Vacuum

Humans are wired to find meaning in almost every pattern they experience. The cognitive vacuum created by doubt and uncertainty is so strong it will cause seemingly rational people to grasp at the most untenable of straws. It’s a difficult path, but developing the skill for being comfortable with moments of doubt and uncertainty can lead to new insights and deeper understanding if we give our brains a little time to search and explore. Hanging out in a space of doubt and uncertainty may be fine for a little while, but it isn’t a wise place to build a home.

After acknowledging we don’t know something or that we’ve  been wrong in our thinking, it’s important to make sure the question “What’s next?” doesn’t go begging. I’d wager we’ve all had the dubious pleasure of discovering what we don’t know in full view of others and in those situations the answer to this question becomes critical. It may not need an immediate answer, but it does need an answer. If you don’t work to fill the vacuum left by “I don’t know” or “I was wrong,” someone else surely will and it may not move the conversation in the direction you intended.

The phenomenon works like this. Bob, a capable scrum master, ends up in a situation that reveals a lack of experience or understanding with the scrum framework and doesn’t know what to do. Alice, maybe immediately or maybe later, moves into the ambiguity, assumes control, and tells the team what should be done. If Alice is wise in the ways of agile, this could end well. If command-and-control is her modus operandi in the defence of silos and waterfall, it probably won’t.

So how can an agile practitioner prepare themselves to respond effectively in situations of doubt and uncertainty? Here are a few things that have worked for me.

Feynman-ize the Conversation

In his book “Surely You’re Joking , Mr. Feynman!,” Nobel physicist Richard Feynman tells a story from his early career where several building engineers started reviewing blueprints with him, thinking he knew how to read them. He didn’t. Having been surprised by being placed in a position of assumed expertise, Feynman improvised by pointing at a mysterious but ubiquitous symbol on the blueprint and asking, “What if that sticks?” The engineers studied the blueprint in light of Feynman’s question and realized the plans had a critical flaw in a system of safety valves.

That’s how to Feynman-ize a conversation. Start asking questions about things you don’t understand in a manner that challenges those around you to seek the answer you need. In essence, it expands the sphere of doubt and uncertainty to include others in the situation. This tactic is particularly effective in situations where corporate politics are strong. Bringing the whole team into the uncertainty space helps neutralize unhelpful behaviors and increase the probability the best answer for the moment will be found. It is no longer just you who doesn’t know. It’s us that that don’t know. That’s a bigger vacuum in search of an answer. In short order, it’s likely one will be pulled in.

The Solution Menu

Thinking of the agile practitioners in my professional circle, they are all adept at generating possibilities and searching their experience reservoir for answers based on similar circumstances. When the creative juices or flow of answers from the past are somewhat parched by the current challenge, it is natural to project the appearance of not knowing. Unless you’ve drawn a complete blank, you can still use the less-than-ideal options that came to mind.

“I can think of several possible solutions,” you might say. “But I’m not yet sure how they can be adapted to this challenge.” Then offer your short list of items for consideration. One of those menu choices might be the spark that inspires a team members to think of a better idea. Someone else may find an innovative combination of menu choices that gets to the heart of the issue. I’ve even had someone mishear one of my menu choices such that what they thought they heard turned out to be the more viable solution. This is just another way to leverage the power of everyone’s innate drive for finding meaning.

Design an Experiment

If there is a glove that fits the “I don’t know” hand, it’s experimentation. I suppose you could work to stretch the guessing glove over “I don’t know.” But if your team is aware that you don’t know something, it’s worse if they know you’re pretending that you do. Challenges and problems are the situation’s way of asking you questions. If the answers aren’t apparent, form a solution hypothesis, set up a simple test, and evaluate the results. And as the shampoo bottle says: lather, rinse, repeat until the problem is washed away. It’s another way to expand the sphere of uncertainty to include the whole team and increase the creative power brought to bear on the problem. If your shampoo bottle is this agile, I’ve every confidence you can be, too.

Now I’m curious. What has helped you move past “I don’t know?”

 

Image by Gerd Altmann from Pixabay

Deliberate Practice and Coding

Deliberate practice applied to coding offers some unique opportunities. Unlike other skills, like learning to play the cello (to pick one that I have some experience with), you can go very far without a personal mentor. The feedback from the computer is about as objective as it gets. It will let you know exactly how good your code is.

This also helps remove the emotional component – positive and negative – that can sometimes impede progress with an in-person mentor. This doesn’t remove all emotion, however. Just about everyone who’s worked in a professional coding shop has witnessed the rare occurrence of a coder cursing at or even physically attacking their computer because their code isn’t working as expected. Those are surreal moments when an avalanche of cognitive biases and unconscious behavior become visible to all but the coder. That’s a topic for for a different post. Suffice it to say, learning how to control your emotions, channel frustration, and ignite curiosity is part of what distinguishes good coders from great coders.

Which gets met to finding quality feedback. While I’ve made a good living writing mountains of proprietary code for various business and corporations, I earned my coding chops by working on or authoring open source projects. This was the best source I found for getting feedback on my code. It also taught me another important lesson: Do not attach your identity to the code you write. Like any noob, I had a lot of pride in my early code that was pretty much untested outside my little work environment. In the open source world, the feedback was often swift and harsh. Or, at least is was when my identity was attached to it. Learning to separate work product from identity revealed just how much emotional spin I was putting on what was in hindsight reasonable feedback. I have concerns that the current climate in the coding world is opting for soft feedback and good feelings over legitimate and reasonable feedback. This, too, is for another post.

It’s worth giving some thought about the the pros and cons of working with an actual person for mentorship. Along with good instruction, a single mentor will pass along their own limitations and biases. Not necessarily a bad thing, just something to be aware of. So multiple mentors are better than just one, which starts to move down the path of actively participating in open source projects. By “actively” I mean not just contributing code, but studying the code (and it’s history) of existing successful projects. There are usually many ways to solve a problem with software. Work to understand why one approach is better than another. Insights like this are best gained, in my experience, by studying good code.

Somewhat related, if you are working from a book or a training program, actually type in the examples – character by character. Don’t cheat yourself by copy-pasting code examples. This is the muscle memory component to coding that you will find when learning other more physical skills (like playing the cello.) If you really want to experience the gnarly edge, ditch the IDE and code with at text editor. I still do all my coding in vim and this keyboard.

Another approach to deliberate practice is the idea of coding “katas.” This never clicked with me. I attribute this to having studied martial arts for 25 years, most of that time at the black belt level. Mapping the human psycho/physical world and the purpose of katas in the dojo to the machine world is too much of a mis-match. Much is lost in the translation, in my experience. The katas in the dojo, regardless the art form, translated easily to other styles and practices. The coding “katas” are more tightly coupled to the coding language in which they are written. In my view, it’s yet another example of swiping a cool sounding word and concept and force-fitting it to another domain. A software version of cargo cults – expecting form to create function. “Black belt” or “Ninja” coder are other force-fits. Yet again, something for another post.

But those are my limitations. Your experience will no doubt be different. As learning exercises and proficiency tracks, many of the coding “katas” look to be very good.

(For related thoughts on how building your own tools can deepen your understanding of a skill, see “Tools for Practice.” The examples in the article combine software development and cello practice.)

 

Image by Robert Pastryk from Pixabay

Frameworks vs Rules

Getting the job done is no excuse for not following the rules. Corollary: Following the rules will not get the job done,” said Somebody I Don’t Know.

When I was developing software under the draconian rules of CMMI there was a very clear message from the handlers (as we called them) to follow the rules or there will be consequences. So we did. Mostly. The problem was that among those of us in the trenches there wasn’t much of a feeling of actually getting work done. There was a lot of rework due to features being designed without our input. The design team would send us a design, we’d make noise that the design had problems but we’d have to build it anyway, we’d build the unworkable thing, demonstrate a flawed product to the design team, they’d redesign (without our input), re-document, and send us a new design.

And so we lurched forward. We followed the rules and weren’t getting the job done from the customer’s perspective. I’m sure the CMMI gods were happy, though.

This was before “Agile” was a thing. There were plenty of rapid application development ideas in the industry and in loose fashion we ended up implementing what we thought we could get away with. And that worked.

Our impromptu “water cooler” conversations in the mornings where we mostly complained but frequently suggested solutions for each other’s techno-pain would be easily recognized by any scrum master as a daily scrum. The way we cut up (literally) copies of the official documentation and re-arranged the work to better match how we thought the work needed to be done looked a lot like a sprint backlog.

We were getting the job done, but not following the rules. As far as I know, none of us ever suffered adverse consequences. It’s hard to argue with success no matter the path taken to get there.

Imposing elaborate sets of rules to a fundamentally creative process will pretty much guarantee a slow boat to success. In the late 80’s and early 90’s that seemed to work well enough. But those days are long gone. It’s why the framework approach to many of the Agile methodologies are more successful in software and similarly creativity dependent projects. Frameworks leave room to adjust, adapt, experiment, and act.

And…

Rules are important. Frameworks aren’t devoid of rules. Far from it. Tossing out bits and pieces of a framework shouldn’t be done just to get the job done. The rules that are part of a framework should be considered a minimal set essential to success. None of them should be discarded without careful deliberation. Unlike the rules to something like CMMI that are meant to control as many aspects of the project as possible and squeeze out any trace of uncertainty and risk, the rules in an Agile framework are meant to serve as important guides. Operating outside a framework for extended periods is likely to put a project at significant risk.

Well-established and proven frameworks, such as scrum, have extracted the essential rules from previous methodologies and experiences and organized them in useful ways. They don’t reject all the previous rules in a quest to re-invent the wheel. They build on what has been learned to improve the wheel. This is reflected in the words of the Stoic philosopher Seneca:

Won’t you be walking in your predecessors’ footsteps? I surely will use the older path, but if I find a shorter and smoother way, I’ll blaze a trail there. The ones who pioneered these paths aren’t our masters, but our guides. Truth stands open to everyone, it hasn’t been monopolized.Seneca, Moral Letters, 33.11

The Stoics recognize that our predecessors weren’t entirely wrong. But they are very likely incomplete. It is incumbent on us to improve upon and extend their work.

This illuminates the importance and value of a good scrum master. Like a good cowboy or cowgirl, part of their job is to ride the fences, looking for breaches to the framework. If found, either repair the fence with coaching or decide if the fence line needs to move to accommodate a need dictated by circumstances and conditions.

Image credit: Wikipedia