Jeff Sutherland points the fickle finger of fate at Ken Schwaber for starting this fable:
I've hated having to tell teams this joke... the lore of the Scrum pig and chicken is so pervasive that before long someone is going to call someone else a chicken (or a pig)... and then you have to tell the joke to help that person retain face... it can be quite uncomfortable for me.
I think my disdain for this joke has to do with two of American's least favorite farm animals being featured. We call people chickens to say they have little courage. We call people a pig to insult their appearance (clothing choices, weight, manners). Had the joke featured a cat and dog... it would be so different - wouldn't it?
Now Jake it appears has taken this joke metaphor to a new level... good job Jake!
Scrum Pig and Chicken - part 1 by Jake Calabrese
Organizational Commitment: Pig and Chicken – Part 2 by Jake CalabreseDoes Your Culture Require Your Demise - Pig & Chicken part 3 by Jake Calabrese
-OR- What happens when the customer has better data about the service than the provider and has better networking, better press coverage, better clout, better market reach and reputations?
(Feb 23) My good looking wife just spent 2 hours trying to straighten out Frontier's billing machine... it's not easy. The amazing thing I observed for my recliner while sipping an adult beverage was her influencing techniques. Now another amazingly disconsernation (not a word) is that Frontier has some awesome support people. But oh-my-god do they have a tough job. It's the system that has failed. And they have to figure out how to make some legacy piece-of-crap work.
But it's not going to lead to happy satisfied customers (testify).
Her father, Jim, moved into the home with us in December, he loves Western movies, and is an encyclopedia of knowledge better than IMDB. So we called up Frontier (our FiOS provider for 6 years) and added cable and a voice line for Jim. We cut the cable some years ago.
That's when the troubles began, December 28th. A techie came out to the house and worked 6 hours, all the while on a phone line to his partner back at the home office (I now understand why it required this constant contact to install the new system). When he left we had higher speed internet (from their 50Mbpm to 150Mbpm service), cable channels - Stars Encore Western premium channel, and a voice line (old school) phone tied to a wall socket. Most every thing seemed good.
But the ability to login to their Frontier web site and get a TV guide didn't function, as well as some other issues of seeing our account info online. We were told to wait a few days as the data took a while to move through their systems (in Frontier's universe data does NOT move at the speed of light).
I noticed that if one tries to take their Frontier problem to Twitter, @AskFrontier is an effective defensive machine that kicks in to appease the person. They cannot do anything except type into a twitter post, and escalate your issue to a thing referred to as "an Account Manager". I tried that technique and received a call one week later - yes over 6 days to address an issue raised on a social media platform know for instant messaging.
@davidakoontz If you would like an Account Manager to assist you, please send us a DM. ^KLB— Ask Frontier (@AskFrontier) February 24, 2017 Once burned - twice shy... I didn't fall for this in February.
We found out last night that while we have been paying $193 for a basic plan and the Stars Western channel - that Frontier would be happy to offer us ALL their premium channels for $198. Something that the competition Spectrum is quoting online visible with detail for about $150ish (yes I'm writing this from memory of my influencing wife's exasperation attempting to get the support person to recognize her point of view at being fleeced by Frontier). Frontier's business model includes an interestingly complex system of quoting the cost for a service. They encourage one to call in to talk to their pleasant but hamstrung sells reps. Who can only read from a screen that may change any day now on the pricing that appears to be very time dependent (you never know if tomorrow they will have a sell and better price for what you will be receiving everyday for years to come). Now the prices and "packages" you agree to buy will not be the names and labels on your bill. Those will be completely different and if you can find a subset of items on your bill that sum up to the $198 you thought you had agreed to - well you should work for the IRS.
After that 2+ hour conversation with a great Frontier support specialist, my very intelligent wife influence her way to some deep refunds, and what we hope will be all the movie channels that Jim could watch in a week. Yet after 2 solid months of working with Frontier's business model - we are done. We plan to see what the next bill shows (it's a mystery)... and when the dust settles switch to Spectrum.
The phone logs for ONE month - let the Record show:
Frontier Customer Support Line is 800-921-8101
779 minutes of my life... give or take a migraine
Jan 25, 2017
6:45pm Outgoing Call 2 hours 25 minutes
1:53pm Incoming Call 1 minute
1:28pm Outgoing Call 18 minutes
1:16pm Outgoing Call. 9 minutes
Jan 24, 2017
10:39am Missed Call
7:11am Outgoing Call 54 minutes
Jan 23, 2017
4:59 pm Outgoing Call 2 hours 10 minutes
Jan 22, 2017
11:00am. Outgoing Call. 2 hours 22 minutes
10:34am Outgoing Call 22 minutes
Jan 22, 2017
10:08am Missed Call
10:06am Missed Call
10:00am Missed Call
9:59am Missed Call
Jan 21, 2017 Saturday
8:19pm Outgoing Call. 37 minutes
Jan 16, 2017
7:00 pm Outgoing Call. 1 hour 17 minutes
6:38pm Outgoing Call. 58 seconds
3:59pm Outgoing Call. 40 minutes
Dec 28, 2016
7:41am Outgoing Call 31 minutes
Dec 27, 2016
4:09pm Incoming Call. 43 seconds
Dec 24, 2016
11:18am. Outgoing Call. 14 minutes
Oh - why oh why - did Steve Jobs died before he fixed the living room TV problem? There is no GOD. Can an 85 year old man learn to use this complex thing call a cable box remote from his recliner and almost infinite time?
My experiences say NO, Freaking WAY! Hell, I can't figure this complexifictor out and I've got 30 years in the computer industry making these complexifictors for companies that say the want customer satisfaction.
Zapier is a powerful automation engine that connects with hundreds of applications. It’s also a developer platform that allows you to create your own integrations if they’re not supported out of the box.
Axosoft has been a part of the Zapier ecosystem for about 2 years! So, it seems appropriate to celebrate our 2nd anniversary with a public display of affection. The 2nd anniversary is traditionally cotton, so in honor of our favorite Zap ever, let’s call it the ‘velour’ anniversary.
What is a Zap?
A Zapier integration is called a Zap. Even at its most basic level, a Zap can function as a simple-yet-powerful middleman between two services, but nonetheless, all of the possibilities can be a little overwhelming. So, I wanted to offer a popular Zap example: integrating your Trello board with your Axosoft account.Axosoft + Trello Zaps
Axosoft is a great Scrum project management tool for your development team to manage your backlog, but if you have some team members that insist on a different platform like Trello, you’ll need a way to have the two platforms communicate with each other to avoid task management becoming a cumbersome and inefficient process. Zapier allows you to butt your processes up against each other so you can disseminate tasks to devs on those other platforms.Create Axosoft items from Trello cards
Imagine a distant land where a company is doing contract work, and the funnel of receiving requests consists of generating a statement of work, and then only sending the task to get worked on in Axosoft after payment is processed. All you’d need is a Trello board with a step called ‘Send to Axosoft’. You’d then make a Zap so that any cards dropped into that step would create the item in any Axosoft Project you select, and would be ready for your devs to work on.
Oh, looky here… We have that Zap for you!
Or you can check out the Zap’s page here.
Create Trello cards from Axosoft
Of course, the reverse is also possible! But you want another example, right? Here goes: sometimes our Marketing team has to follow up with some of the changes in the product, in order to update our version history or documentation with new features. Zapping those over to a Trello board might be pretty handy.
You didn’t think we’d have one for you and not the other, did you? Oh ye of little faith, here you go:
So, when your developers are done, err, developering, you can have items Zap over to a Trello board!Start Zapping
To see all the source control, live chat, test case management, and other tools that Axosoft integrates with, visit our integrations page.
Note for Axosoft Installed users:
You need to use the Zapier app dedicated to Axosoft Installed systems.
Because organizations rely on an ever increasing number of technologies, we often wind up with an increased number of specialists on staff. When departments over-specialize, they develop silos and increase the number of organizational dependencies. Everything begins to require multiple handoff and things slow down. To counter silos and increase the flow of value moving through the system of delivery, we often encourage cross-functional teams with more “T-shaped” generalized-specialists.
Now, I’m currently reading The DevOps Handbook: How to create world-class agility, reliability, and security in technology organizations . For anyone who has read (or currently reading) the Phoenix Project, read this book next. In addition to this, my colleague Jim Hayden recently pointed out a passage that got my attention. On page 86, there is a table that compares I-shaped, T-shaped, and E-shaped staff. That table is based on a 2012 blog post by Sarah DaVanzo. It inspired me to make a few changes to the table below and write this blog post.
The vertical stroke of the “I” is a depth of skill that allows someone to contribute to the creative process. They can be from any number of different fields to include: a developer, an architect, a tester, or an analyst. In organizations still utilizing a Waterfall model for application development, one can find specialists in functional phased groups. Having too many specialists can result in an increase of bottlenecks and frequency of ridged handoffs. In short, they create dependencies. These people are insensitive to downstream impacts and unwilling to help beyond their primary job. You may literally hear them say,
That’s not my job.T-shaped (Generalized Specialist)
The term “T-shaped person” was coined by IDEO Chief Executive Tim Brown. When recruiting, IDEO assessed candidates based on both their breadth and depth of experience. In a 2010 interview with Chief Executive Magazine, Brown explained what a T-shaped person is:
The vertical stroke of the “T” is a depth of skill that allows them to contribute to the creative process. That can be from any number of different fields: an industrial designer, an architect, a social scientist, a business specialist or a mechanical engineer.
The horizontal stroke of the “T” is the disposition for collaboration across disciplines. It is composed of two things. First, empathy. It’s important because it allows people to imagine the problem from another perspective – to stand in somebody else’s shoes. Second, they tend to get very enthusiastic about other people’s disciplines, to the point that they may actually start to practice them. T-shaped people have both depth and breadth in their skills.
Since then, in the Agile community, the T-shaped staff member has become synonymous with a generalized specialist. You may hear someone is a developer by trade but is willing to roll up their sleeves when needed, to help test, clarify user story acceptance criteria, or fulfill some other team obligation. This will help remove bottlenecks and lessen the frequency of ridged handoffs. These people are sensitive to downstream impacts and willing to help beyond their primary job.E-shaped (NextGen Specialist)
I note the term “E-shaped” was first referenced in the 2010 DaVanzo post. From there, I’m going to take some liberty to redefine it as the next generation (NextGen) of specialist for an Agile team.
The vertical stroke of the “E” is expertise in a few areas, to allow the specialist to contribute to the team. That can be from any number of different fields, just as we noted for the vertical stroke of the T-shaped people.
The first horizontal stroke of the “E” is experience. Not only do we want people with expertise in a few areas, we also want experience across several areas.
The second horizontal stroke of the “E” is execution. We need a specialist with proven execution skills.
The last horizontal stroke of the “E” is exploration. These people should always be looking of ways to improve their craft or learn new skills.
If you can locate and employ these next generation specialists, your team will have almost limitless potential.
 Kim, G., Willis, J., & Debois, P. (2016). The Devops Handbook: How to create world-class agility, reliability, and security in technology organizations. United States: IT Revolution Press.
We talked about how it works and what it can do for you:
Next week in the webinar we'll talk about how you can get started! Have post-its and some wall space ready, because we are going to get practical! You find out about the Personal Agility Webinar Workshop on Discuss Agile web site page. See you there!
When Scrum was first defined, it addressed a number of issues that plagued IT organizations of the 1980s. Functional silos and their key side-effect, cross-team dependencies. Lack of clear communication. Extended lead times. Poor alignment of solutions with needs. High defect rates. More.
To this day, Scrum continues to be a valuable tool for teams and organizations that are operating in a traditional way, or that have achieved a certain level of basic proficiency with lightweight methods based on Lean and Agile thinking. As with any tool, Scrum is useful in situations where its characteristics are helpful, and when it’s applied mindfully and appropriately.
Scrum has helped, and continues to help many organizations get started on their Lean/Agile journey. It’s still an appropriate choice in many situations. There’s nothing wrong with it. At LeadingAgile, we use, recommend, teach, and coach Scrum quite a lot. It doesn’t fit every situation, but where it does fit, it fits very well indeed.The Scrum cult
Scrum has been phenomenally successful. It may be the single most widely-used method for delivering software solutions, with the possible exception of the venerable and popular Random Method, and the widely-used Random software engineering technique, Copy-and-Paste-from-StackOverflow. But Scrum’s success has led to a curious phenomenon: A sort of Scrum cult has emerged. Scrum is All Things Good. Scrum is The Answer. Scrum is the End Game. There is nothing more beyond Scrum.
When you ask a Scrum cultist where a team or organization might go after Scrum, they look at you as if they can’t process the question. It’s as if you asked a Christian where you go after you’ve died, gone to heaven, and died in heaven. They look at you quizzically, because in their worldview there’s nothing beyond heaven; it’s the “end state.” You don’t “die in heaven.” They can’t process the question. Scrum cultists have the same mentality regarding Scrum. There’s nothing beyond Scrum; it’s the “end state.”Continual improvement
But to a person who has internalized the idea of continual improvement, there is no end state. Continual improvement is like Jonathan Livingston Seagull, or maybe a really hard video game, in which conquering one level leads to another level. Or you could say it’s like attending school. When we graduate pre-school, we become beginners in elementary school. When we graduate elementary school, we become beginners in middle school. When we graduate middle school, we become beginners in high school. When we graduate high school, we become beginners at university.
When we graduate university, we become beginners in a Masters program or in the work force. As we progress through our careers, we reach numerous milestones in our professional growth, but we never reach a permanent end state. We become beginners again and again, at different levels.One more metaphor
I sometimes liken Scrum to Forrest Gump’s braces. In the movie, Forrest Gump, the title character wears braces on his legs as a child. He needs the braces to stand and walk. Then the day comes when he’s ready to run. At that stage, the braces are a hindrance. In the film, the title character starts to run, and the braces begin to break apart. Piece by piece, they fall away, leaving his legs free to carry him smoothly.
As an Expedition progresses through the LeadingAgile Basecamps on its Agile journey, it requires guidance and structure appropriate to its level of proficiency with lightweight methods; its ability to apply Lean and Agile thinking in practice. Teams in the Expedition that are burning down a backlog of planned features can benefit greatly from Scum when they are in the early stages of learning Agile. You could say that Scrum helps these teams learn to stand and walk. It adds value at least through Basecamp 3, and possibly further.
What we really want to see is Expeditions, and whole organizations, start to run. When they reach the stage that they’re ready to run, Scrum can be the same kind of hindrance as Forrest’s braces. Scrum practices can fall away naturally as teams learn to achieve the same goals with less ceremony. If we don’t allow the braces to fall away, we’re impeding the teams’ ability to progress.
Scrum practices can fall away naturally as teams learn to achieve the same goals with less ceremonyCult? What cult? I don’t see no cult!
You may disagree that there’s any such thing as a Scrum cult. Disagreement is okay. But if the observation is valid, then what might have caused the emergence of a cult around Scrum?
I’ll make the personal observation that the vast majority of Scrum (and Agile) coaches have never seen or experienced what can happen once an organization truly internalizes Lean and Agile values and moves beyond the novice level with these approaches. Most coaches introduce novice practitioners to the basics of Lean and Agile (and Scrum), and then move on to another client where they introduce the basics again.
And again and again and again.
The best organizations and the best teams they ever see are those that have managed to achieve a reasonably good level of proficiency with basic, by-the-book Scrum (or some sort of Scrum-like hybrid).
But that’s not the “end state.” There’s more.Value and overhead
A key concept in the Lean school of thought is customer-defined value. Time spent in activities that directly add customer-defined value to a product is deemed “value add time.” All other time is deemed “non-value add time.”
The distinction is often misunderstood, as it differs from conventional thinking about value. Conventionally, we consider anything that helps us deliver value to customers to be useful and possibly necessary. Things that are useful and/or necessary to get the job done surely are valuable, right? Sure, in the casual sense of the English word, “valuable.”
Consider a financial institution that offers services to customers. All services must comply with government regulations designed to protect consumers and the national economy from errors and unethical actions that might do harm. Conventional thinking tells us the things we do to assure compliance are valuable. We may well invest additional time and effort in compliance activities just to be really sure we’re doing it well.
When we look at the same situation through a Lean lens, we perceive that customers are willing to pay for certain services. They have a baseline expectation that their transactions will be accurate, ethical, and safe, but they don’t think about those things as part of what they’re paying for. They only intend to pay for the service they want. The time we spend in maximizing the direct value of those services is value add time, and the time we spend to support necessary overhead items such as compliance is non-value add time. We may well invest some effort in seeking ways to minimize compliance overhead.
Similarly, customers do not wish to pay us to fix our own bugs. If we create a bug, that’s our problem, not our customers’. Therefore, from a Lean perspective, bug-fixing, remediating technical debt, and production support—even testing—are non-value add activities. A Lean thinker will seeks ways to minimize the time spent on such activities. A conventional thinker might only think about improving how they do these things, rather than looking for ways to eliminate the need for them.
No doubt you can see how this minor shift in perspective helps us identify potential areas of improvement in our delivery processes. Every minute spent on non-value add activities is a minute lost to value add activities. But what does this have to do with Scrum, or with the supposed “cult” of Scrum?From walking to running
As mentioned above, Scrum was created in an era when certain organizational and procedural problems were endemic to large-scale IT organizations. It was designed to address several of those problems directly. Its three roles—Product Owner, Scrum Master, and Development Team—represented a sharp change from the then-common manager-driven hierarchical organizational structure and “matrix” assignment of so-called “resources” (meaning humans) to multiple projects concurrently.
Many IT organizations needed something like Scrum to help them stand and walk. The Product Owner mitigated the generally poor communication between business stakeholders and the IT organization. The Scrum Master mitigated the generally poor understanding of effective delivery processes on the part of IT staff. The Delivery Team brought together individual specialists from various functional silos to create a cross-functional team, significantly reducing communication delay and misunderstandings.
But that was the 1980s, hanging over into the 1990s. There are still organizations operating as they did in the 1980s, but the industry as a whole has long since moved on. Does Scrum help an organization in which communication between business stakeholders and the IT organization is already good? How about an organization in which the staff understands and uses effective delivery methods? How about an organization in which staff routinely collaborate across individual specialties and are accustomed to transparency? How about an organization that already delivers small batches incrementally and on a short time scale?
In other words…what about an organization that has learned how to stand and walk, and is ready to run?
From a Lean perspective, every role, every artifact, and every event defined in Scrum is overhead. Scrum itself is not what customers buy. It isn’t what they want to buy. It’s a way of delivering what they want, but it isn’t The Thing they want. A conventional thinker will think of ways to “do Scrum better.” And maybe that’s exactly what they should be doing, based on where they are in the journey at the moment. A Lean thinker will seek ways to minimize the overhead of using Scrum, with the eventual goal of making Scrum unnecessary. That’s quite a different goal.The rub
To outgrow the need for Scrum is a fine goal, but you have to earn it. To earn it, you have to understand the substance of what Scrum is helping you achieve; merely following the prescribed practices isn’t sufficient for that. A novice delivery team can’t arbitrarily discard Scrum, just because they recognize it as overhead. Teams must learn to achieve the same goals and deliver the same value without the overhead of Scrum. Then the braces can fall away.
Scrum cultists will chafe at the word “overhead” here, but the reality is that there’s always some form of overhead in any process. Lean thinkers prioritize “eliminating waste from the process” third, behind “focus on value” and “maintain continuous flow.” They know some overhead is inevitable, necessary, and ultimately all to the good. The trick is to minimize non-value add time while still fulfilling all necessary requirements.
In their book, Lean Thinking, Womack and Jones distinguish between two types of non-value add activity, or muda. (That’s Japanese for “non-value add activity.”) Type 1 muda comprises activities that don’t help in any way and are only performed out of habit. These activities can simply be stopped, with no downside impact.
Type 1 muda could be, for instance, preparing three different status reports about the same tasks in three different formats for three different managers, or entering the same information about hours worked into four different time tracking systems. (But those examples are absurd, of course. Who would do that?)
Type 2 muda comprises activities that are necessary to get the job done, but that don’t directly add customer-defined value to a product. The goal here is to minimize the overhead involved in carrying out these activities. This could include, for instance, governance review procedures to ensure information security standards were followed in developing an application, or functionality built into an application to track data for auditors. Bake the security standards into your development process, and you can dispense with the review step in the delivery pipeline. Build logging into your reference architectures, and you can dispense with any extra effort to satisfy auditors.
The process of the braces falling away piece by piece naturally involves the organization and the teams within it learning to satisfy all the ancillary requirements surrounding the product with a minimum of effort, time, and cost. As these requirements become ingrained in the delivery process, overhead activities to double-check them become less necessary.Full circle
As an example, let’s home in on one of the factors that Scrum addresses: Predictable delivery. Business stakeholders in the 1980s and 1990s were constantly asking IT organizations “How long will it take to deliver X?” IT professionals came up with various ways to estimate the time they would need to deliver X. Some are formal and some informal, and may be based on experience, calculation, statistics, heuristics, empiricism, or a combination.
Customers won’t place an order for an estimate. They may want to know how long it will take you to deliver a solution, but they don’t expect to pay you just for the estimate. If customers aren’t intentionally buying estimates, then the time you spend preparing estimates is muda.
During the years when estimation was regarded as a core competency of software development rather than as an overhead activity, delivery performance continued to be unpredictable. Sure, some teams boasted that their estimates were always within 5% of actuals, but this was almost always gamed; they padded the estimates enough that they could make their numbers look the way management wanted the numbers to look.
Scrum as such doesn’t define an estimation method, but teams tend to use certain methods more than others with Scrum. A novice Scrum team may estimate User Stories in terms of clock time. This doesn’t do much to improve predictability, but it does help the team get into the habit of decomposing work into small pieces and thinking about what’s involved in delivering the pieces.
As they gain proficiency with Scrum, the team may estimate in terms of ideal time, applying a load factor to their planned capacity to account for interruptions such as meetings and production support issues. Usually, they begin to see some improvement in predictability.
As they progress, the team begins to understand what their Scrum coach meant all these past weeks or months when she told them to stop thinking about time and to think about relative size instead. They shift from time-based estimation to relative sizing of User Stories based on a scale of arbitrary points.
Initially they may peg points to time (e.g., “One point is half a day”), but sooner or later they drop that. Now they see significant improvement in predictability, because they are planning their work based on their own demonstrated delivery performance in the recent past. This is empiricism, consistent with the Scrum approach.
Throughout these early stages, the discussions surrounding estimation serve another purpose: They help build shared understanding about the problem space, the solution space, design considerations, and acceptance criteria. These are among the things a team must learn to do in other ways before they can dispense with story-level estimation.
Continuing to mature in Agile thinking and practice, the team gradually learns to decompose and structure User Stories into reasonably same-sized chunks. Eventually they discover most of their stories seem to be of the same size. They stop using relative points and just count stories instead. This reduces their planning overhead without sacrificing predictability. (They couldn’t have dispensed with estimation in the beginning; at that time, they didn’t know how to achieve predictable delivery without it.)
At this stage, everyone can see approximately how long each User Story takes to deliver. The team has gone full circle, and can now answer the question “How long will it take to deliver X?” directly, in terms of clock time, just the way stakeholders need it to be answered.
A piece of their braces—story sizing or estimation—can fall away naturally. In Lean terms, they have reduced the planning overhead necessary to deliver customer-defined value. Similarly, teams can learn to deliver effectively without other pieces of the braces, too. It may not be intuitively obvious how to achieve this, and that’s why it’s helpful to work with guides who have been there and done that.
[[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Bill & Groundhog
Well this happened about ten years ago, and about 6 years ago, or maybe it was 4 years past, and seems like we did this about 24 months ago... or it could be today!
The Agile Transition Initiative at the company has come upon an inflection point (do ya' know what that is... have you read Tipping Point?). I'm not exactly sure of it's very precise date... but Feb. 2nd would be the perfect timing. The inflection has to do with which direction your Agile Transition Initiative takes from this point into the future. Will it continue on it's stated mission to "transform" the organization? Or will it stall out and revert slowly to the status quo?
How do I recognize this perilous point in the agile trajectory? Well there are several indications. But first we must digress.
Punxsutawney Phil Says more Winter in 2017In this story we will use the germ theory as a metaphor. Germ theory came about in about ... (wait - you guess - go ahead ... I'll give you a hundred year window... guess...). That's right! "The germ theory was proposed by Girolamo Fracastoro in 1546, and expanded upon by Marcus von Plenciz in 1762." Wow, we've know about these little buggers for a long time. And we started washing our hands ... (when... correct -again). "The year was 1846, and our would-be hero was a Hungarian doctor named Ignaz Semmelweis." So right away business (society) started using a new discovery - a better way to treat patients.... or well it took a while maybe a few months, or maybe more than 300 years.
But back to the metaphor - in this metaphor the organization will be like a human body and the change initiative will take the roll of a germ. The germ is a change introduced to the body by some mechanism we are not very concerned with - maybe the body rubbed up against another body. I hear that's a good way to spread knowledge.
We are interested in the body's natural process when a new factor is introduced. What does a body do? Well at first it just ignores this new thing - heck it's only one or two little germs, can't hurt anything - (there are a shit load of germs in your body right now). But the germs are there to make a home - they consume energy and reproduce (at this point lets call it a virus - meh - what the difference?). So the virus reproduces rapidly and starts to cause ripples... the body notices this and starts to react. It sends in the white-blood cells - with anti-bodies. Now I don't understand the biological responses - but I could learn all about it... but this is a metaphor and the creator of a metaphor may have artistic license to bend the truth a bit to make the point. Point - WHAT IS THE POINT?
The point is the body (or organization) will have a natural reaction to the virus (change initiative) and when the body recognizes this change it's reaction (natural - maybe call it subconscious - involuntary). Well let's just say it's been observed multiple times - the body tries very hard to rid itself of the unwanted bug (change). It may go to unbelievable acts to get rid of it - like tossing all it's cookies back up - or squirting all it's incoming energy into the waste pit. It could even launch a complete shutdown of all communication to a limb and allow it to fester and die, hopefully to fall off and not kill the complete organism. Regaining the status quo is in the fundamental wiring of the human body. Anything that challenges that stasis requires great energy to overcome this fundamental defense mechanism.
[Pop the stack.] So back to the indicators of the tipping point in agile transitions. Let's see if our metaphor helps us to see these indications. The tossing of cookies - check. That could be new people hired to help with the change are just tossed back out of the organization. The squirts - check. That is tenured people that have gotten on board with the change being challenged by others to just water it down... make it look like the things we use to do. Heck let's even re-brand some of those new terms with our meanings - customized for our unique situation - that only we have ever seen, and therefore only we can know the solutions. Folks, this is called the Bull Shit Reaction.
Now imagine a limb of the organization that has adopted the new way - they have caught the virus. There is a high likely hood that someone in the organization is looking at them a "special". A bit jealous of their new status and will start hoarding information flow from that successful group. Now true that group was special - they attempted early transition and have had (in this organizations realm) success. Yet there was some exception to normal business process that made that success possible. How could we possibly reproduce that special circumstance across the whole org-chart? Maybe we just spin them off and let them go it alone - good luck, now back to business.
What's a MIND to do with this virus ridden body and all these natural reactions?
Well we are at an inflection point... what will you do?
Which curve do you want to be on? - by Trail Ridge Consulting
The Fleas in the Jar Experiment. Who Kills Innovation? The Jar, The Fleas or Both? by WHATSTHEPONT
Here at Axosoft, we’re passionate about supporting the development community. For 13 years we’ve been helping grow the tech ecosystem in Arizona by opening up our space to Meetup groups, sponsoring and speaking at local events, and partnering with like-minded organizations. When we can, we also travel to speak at conferences and connect with developers across the globe.
However, what we really want is to be able to connect with devs outside of just our local community more consistently. So we thought, what better way to do that than by supporting your local developer Meetup groups with all the best goodies! Here’s what our new GitKraken Meetup Package includes:GitKraken Meetup Package
- Food and drinks budget of $200
- GitKraken stickers for all attendees
- Several GitKraken shirts for giveaways
- GitKraken Pro promo code for $10 off a 1-user GitKraken Pro annual account, for every attendee
- Our GitKraken Cheat Sheet
We know it won’t be possible for us to send packages to every Meetup (unfortunately), so we’ve put together some basic requirements that your developer group must meet in order to be eligible to receive a package:
- Must be an established Meetup (or group) with a publicly accessible page
- Must be a developer-focused event
- Must have 40+ attendees regularly
We also ask that you help us spread the word about GitKraken by playing our 90-second Intro to GitKraken video during your Meetup and tweeting @GitKraken with a photo of the Meetup and your Meetup hashtag if there is one.
SlideShare DeckHere's how it might go down... Agile2017 Submission # 5835
And if you're interested... comment on this slide deck... it's not the final answer. In fact we may be sneaking bigger guns in to the corral under our dusters...
Leadership Style Shoot Out :: Which style best works for this context - how will you recognize it?
Where do you Stand
Let's survey the audience's Leadership styles/preferences - we will use a standard reference tool (or maybe just make it up on the fly). Getting the participants up and moving and interacting with each other and the sub-set of leadership styles described on the four flip charts in the corners of the room. We will play a few rounds of the game Constellations. This warm up exercise will most likely bring up some great question on terms and concepts, which we will answer as a group.
Examples of Models & Theories
We will present several models and approaches of Leadership - via Poster Presentations (previous done posters for models of Leadership: Examples: Situational Leadership II, Leader-Member Exchange Theory, Path-Goal Theory, Servant Leadership, etc.) compare and contrast theories of leadership with other leadership approaches: ( Situational, Skills, Style, Trait - also summarized on posters). Gathering insights from participants on experiences with these various leadership styles/traits. Using some famous examples from history and common known examples (JFK, Nixon, Washington, John Wayne, Neil Armstrong, etc).
Review of Literature
We will present a library of books (10 - 30 leadership books) to loan out for the next few days of the conference - participants wishing to come to next session (2 days later) will preform a poster book report on the topics of interest with their small group on the books best topics during the 2nd session. This technique is ripped off from my mentor Sivasailam Thiagarajan (http://www.thiagi.com), I'm sure he will not sue us. This game however is going to require longer than 75 min. to get value - so I'm proposing a radical new idea for conference session - a follow up session scheduled later in the week for the sub-set of participants that choose to participate in this "home-work assignment".
In the 2nd session we will organize the posters - book reviews and give each group/team about 10 min. to present and then a few min. for audience Q&A. Largely dependent on the number of small teams wishing to participate; wishing to go in depth on a topic and learn about that aspect of leadership. Then leave time for a debrief of both sessions.
Information for Program Team:
We are requesting something VERY RADICAL - 2 sessions - for ONE topic - the first session will set the hook: interest a sub set of participants to commit to the second session (the book-review report back poster extravaganza session later in the week).
First session on Monday or Tuesday; second session on Thursday or Friday - link them in the catalog with an "**" and note.
Each session will be independent enough that participant that do not want to attend the other will be carried along with the enthusiastic games of the others that have attended both. Interesting and Learning will be available for all - regardless of attendance of both sessions.
none really - however we assume many people have been part of a group and have seen many forms of leadership in many different context
- Awareness of several views of Leadership and Management
- Knowledge of multiple theories of leadership
- develop a lexicon of terms to discuss leadership behaviors
- experience being an emergent leader in a group with a specific objective
- Understanding that styles of leadership change over time throughout history
- Ways to measure effectiveness of leadership (via the fellowship of followers)
- Assessment tools and models to take home and try on your leaders
Stats from Agile Complexification Inverter blog site
Well the stats are just one insignificant measure of what one gets from writing about their experience.
The more meaningful measures have been seeing some of these articles and resources put into practice by other colleagues, discussion that have happened (off line & sometimes in comments or twitter, etc.) with readers that require me to refine my thinking and messaging of my thinking. Interestingly some times seeing a resource that you have created being "borrowed" and used in another persons or companies artifact without attribution is both rewarding and a bit infuriating. I like that the concept has resonated well with someone else and they have gone to the trouble of borrowing the concept, and repeating or improving or repurposing the concept.
Let me borrow someone else's concept: "The Bad Artist Imitate, the GREAT Artists Steal." -- Banksy
Most of all the collection of articles are a repository of resources that I do not need to carry around in my 3-4 lbs of white & grey matter. I can off-load the storage of concepts, research pointers and questions to a semi-perminate storage. This is a great benefit.
Introduction: What We Have Learned
Originally written in 1993, this edition written in 2003 has additional insights from 10 years of working with teams. The authors see more pragmatism on the subject, less thoughtless rushes to a fad movement. Top leaders are seeing that teams also apply to themselves, at the top of the business. They see the core aspect as discipline, not the management fad du jour. The discipline for team performance has 6 basics: team size, complementary skills, common purpose, performance goals, commonly working agreements, and mutual accountability. The desire to be a team is not sufficient - one must have performance centric outcomes as the objective. Leadership is more important at the beginning - but not the primary determinant of success. Most organizations have untapped potential in team performance. The organizations performance ethic makes the difference between one-off success and widespread organizational team performances.
The authors develop an explicit terminology, to distinguish commonly misunderstood phrases when discussing groups and teams. The Y-Chart (p. XXI) helps explain the taxonomy of groups (Effective Group vs Performance Units; Single-Leader Unit vs Real Team). They define an abstract Team Performance Curve, noting time as the major factor in achieving high (extra-ordinary) performance. The decision of which type of team; single-leader unit vs team is dependent upon 3 factors: need for collective work products integrated in real time by two or more people, shifting leadership roles for situational awareness, need for mutual accountability in addition to individual accountability. Setting outcome-based goals is essential to achieving high performance (as apposed to activity-based goals). Real teams require more time and leadership capacity than single-leader units. Process support for multiple team opportunities across broad programs is essential to scale the team success from one-to-many.
Prologue: A Note About What to Expect
The book notes the obvious concepts but also the subtle nature of language used to describe the concepts are required to be precise in defining the discipline. The authors find that it is difficult to apply common sense to teams. Expect failure when: building the team for its own sake is the goal (rather that demanding performance challenges), the discipline of “team basics” is overlooked, many areas for teams are left unexplored in organizations (teams: recommend things, do things, run things), teams at the top of organizations are the most difficult, individual accountability is the norm (as apposed to team/group accountability).
Uncommon-sense findings: strong performance standards seem to spawn more teams than teaming-for teaming sake; high-performance teams are extremely rare; hierarchy and teams go together well; teams naturally integrate performance and learning; “teams are the primary unit of performance for increasing numbers of organizations” (p. 5).
Part One: Understanding Teams
Focusing on Team Basics - figure 1-1 (p. 8)
Apex: Performance Results; Collective Work products; Personal GrowthSides: Skills (Performance results - Collective work products) Accountability ( Performance results - Personal growth) Commitment ( Collective work product - Personal growth)Internal: Skills - Problem solving, technical function, interpersonal Accountability - Mutual, team size, individual Commitment - Specific goals, common approach, meaningful purpose
Chapter 1: Why Teams?
The authors have learned that although many executives understood the argument for using teams many didn’t extract the real potential from the teams or the opportunities to use teams. Many times because of unwarranted assumptions and poor knowledge.Key lessons:
- “Significant performance challenges energize teams regardless of where they are in an organization.” Performance is the primary objective. A team is the means - not the end.
- “Organizational leaders can foster team performance best by building a strong performance ethic rather than by establishing a ream-promoting environment alone.” Focus on customer satisfaction performance rather than teamwork performance.
- “Biases toward individualism exist but need not get in the way of team performance.” Turn individualism, self-preservation, and self-centered objectives to the benefit of the team.
- “Discipline - both within the team and across the organization - creates the conditions for team performance.” “Groups become teams through disciplined action. They shape a common purpose, agree on performance goals, define a common working approach, develop high levels of complementary skills, and hold themselves mutually accountable for results.”
Teams are made up of individuals with complementary skills - build on strengths, not to cover weakness. Define clear goals, via team communication. Build real-time problem solving skills and initiative, allow adaptive behavior. Provide social dimension to enhance work - teams fundamental nature are people interactions. Fun is part and parcel of the process - encourage it.
Resistance to teams come from 3 primary concerns: ”lack of conviction”, “personal discomfort and risk”, and “weak organization performance ethics” (p 21-23).
Teams do not solve all problems, they are not the answer to every problem. They require discipline and practice. Organization culture may be opposed to teams if a strong individualistic performance is reward in spite of team performance.
Chapter 2: One Team: A Story of Performance
As a basic unit of performance a team blends the knowledges, skills and abilities of several people strengthening the overall performance of individuals. Many people having once experienced the power of a high performing team long for the experience again. Burlington Northern launched the Intermodal Rail era after deregulation in 1981. Largely the result of a core team of 7 individuals, with an extend group of 45 people. This team was largely self selective, all were interested in the new prospects of intermodal rail and saw the value even in face of large corporate resistance and hostility. The team started small and grew as needed, bringing in and fostering the required skills. A positive attitude that the goal was possible was shared by all. Hard work and long hours were the norm for the group. When the group’s proposal was approved but with the worst pilot project locations the group saw the opportunity to prove the concept and jumped right into it. The core group shared leadership roles and had strong affinity of tacit information on specific skill sets. They assumed a ask for forgiveness rather than permission attitude, and resolved impediments quickly. The results was a change in the business model for the industry, intermodal rail is now common place and well established business process for the rail industry.
Ch 3 Team Basics A Working Definition and Discipline
Teams are a “powerful vehicle for performance” (p. 43) many companies are embracing teams as a unit of performance. There are differences in understand of what a team is and what constitutes a performant team. Teams work well when they have specific results to achieve, and the performance ethic of the organization demans those results.
“A team is a small number of people with complementary skills who are committed to a common purpose, performance goals, and approach for which they hold themselves mutually accountable.” (p. 45)
Small number - in the Agile community we say 7 +/- 2 ( 5 - 9 members). Reasoning is the tacit knowledge of each other (the group) and the intercommunication of the team. The larger the number the lower the accountability for success. Large numbers have logistical problems not seen in smaller groups (space to meet, etc.). See Also: Choosing the Team Size in Scrum by Agile Pain Relief
Scrum (software development process) offers a way to scale teams to very large (hundreds) numbers.
Complementary skills - we call this a cross-functional team. A team must have a person with the required skills to solve the problem, and it will take many skills to solve most any complex problem. Many successful teams realize they lack certain skills, and become self reliant on learning or acquiring the skill set.
Committed to common purpose and performance goal. Teams must see the purpose for their existence, be motivated to achieve the goal. The best teams spend significant time discussing their purpose, reshaping it and refining that purpose over their lifetime.
Committed to a common approach. Agreement on the approach, process to solve the problems is a key, they may spend considerable time on this issue also.
Mutual accountability. Teams must hold each other accountable for the achievement of the goal, the quality of the products, and the process. They must be capable of defining their own standards for performance and encouraged to raise the bar.
Ch 5 The Team Performance Curve
A team does not start out at super high performance, it takes time to reach this goal. Many teams never reach their potential. Experts say that if a team does reach high-performance that it should not be disbanded but kept together, and given a new purpose. The performance curve describes this growth to high-performance.
Work groups are not teams, though they may develop into a team. One difference is the focus either on team performance or individual performance & accountabilities.
Pseudo-teams never agree on purpose, or accountability of the group, they get stuck in rituals and avoid rather than engage each other.
Ch 8 Teams, Obstacles and Endings: Getting Unstuck
Every team will encounter obstacles, high-performing teams develop tools for overcoming these obstacles. Teams lower of the performance curve may need help to over come obstacles of all natures. Teams may become stuck, and not develop the tools to resolve their obstacles, then it is time for serious help. Stuck teams: lack energy, or enthusiasm, have a sense of helplessness, lack identity, lack purpose, members are cynical, and have a high degree of mistrust.
A weak sense of direction - the team needs to create common goals, take joint responsibility.
Insufficient commitment to performance - team needs accountability for the problem and the solution, based in performance measures.
Critical skills gaps - team needs to hire experts or develop skills. They must be capable of admitting they need help - identify the type of help and go get it.
Getting unstuck: - 1) revisit the basic of teams, 2) build on small successes, 3) inject new information and techniques, 4) get facilitation skills & training, 5) change team membership or leader
Transitions and endings will also effect the team, may drop them back into lower stages of Tuckman model of development - allow for that, don’t expect no emotion for losses.
One thousand Words on Metrics
Here's a quote to get you even more interested in clicking that link...
ConclusionIn short, I find most grasping for metrics to be a reliable metric for lack of understanding of human behavior, not only that of those who would be measured but that of those who would do the measuring.If a higher-up wants a metric about a team, say, as an input to their judgment about whether the team’s work is satisfactory, oughtn’t there be some other way to tell?And if I choose nearly any metric on someone else’s behalf, doesn’t that reveal my assumption that I know something about how they do their good work better than they do?Or worse, that I prefer they nail the metric than do something as loose and floppy as “good work”? Well - will you look at that! Yareev's even willing to apply his own metric to his work. What a great example of a leader...
Let’s try that againNew metric (expiration = next subhead, privacy = public): I’m 0 for 1 on satisfying conclusions to this post.I’m hardly an expert on human behavior. If I were one, rather than being passive-aggressive and obstructive, I’d have a ready step to suggest to metrics-wanters, one that they’d likely find more desirable than metrics.Instead I have to talk myself down from passo-aggro-obstructo, by which time they’ve chosen what they’ll observe and the ready step I can offer is limited to encouraging them to observe the effects of their observation.Can you give me some better ideas?Here's my very special response to his request for comments.
I'm wanting to +1 your whole rant, I'd like to nail it to the front doors, I'm thinking about a tattoo, but unsure where on my leader's body it should go...
I have sometimes fantasied about asking the VP that want's a new metric, if it would be good for us to add one that measured their leadership of our group - I'll call this metric Mean Time between Disruptions (MTD). MTD is calculated much like the old factory sign that said:
"its been 1023 days since we killed someone at this factory, please be safe." So let's start counting (I suggest in weeks) the time between a major disruption to the team. For this basic metric we are looking at team formation dynamics (your familiar with Tuckman's Forming, Storming, Norming, Performing) and you Mr. VP desire the P word - but it comes after 3 stages of development beyond the F word).
Let's start at the beginning and count weeks between Forming and ReForming. You know like when you move a person on/off a team. When you move the team's physical location, or when you give the team a new objective, then let's reset the clock.
The metrics I've seen range from MTD = 0 to about 20 weeks for many teams I've worked with. And Mr. VP says they desire persistent teams.
I would have put it on his site in the comments but I got a very dissatisfied error message from the system when I posted it... (wonder if he has a metric for failed comments?).
Agile in 3 Minutes a podcast that discusses a journey toward agility (each episode in exactly 3 minutes). I'm pondering... why does the magic number 3 come up in the Agile community so often? Personally I feel it has to do with the Book of Armaments, chapter 2, verse 9 to 21; because 5 is right out!
Team Metrics - Case Study
How could we measure Team Happiness?
Metrics for a Scrum Team but don't confuse that post with Scrum Team Metrics which discusses the necessary and sufficient metric Velocity.
Do you really need a Project Management Office? (PMO effectiveness metrics)
Wondering what other books I should read concurrently with the philosophy of this book, Other Minds, on the mind of our alien ancestors. In chapter one Peter is already mashing up Ismael and Darwin, so I feel it appropriate to do a bit of mix-in myself. I'm thinking Seven Brief Lessons on Physics will add spice. To bad I recycled How to build a Mind at Half Price Books.
I've also got to read Coaching Agile Teams by Lyssa Adkins for work's book club. And I may mix-in a bit of LEGO Serious Play, because I cannot get serious about coaching - seems like a play activity to me.
Maybe I will devise a quadrant model of these books. A Venn diagram of their overlapping topics.
Squid Communicate With a Secret, Skin-Powered Alphabet
January 27th -- International Holocaust Remembrance Day.
President Trump bars refugees and citizens of Muslim nations entry into the U.S.A.
The New York Times
By Bundesarchiv, Bild 183-N0827-318 / CC-BY-SA 3.0, CC BY-SA 3.0 de
Four score and four years ago a dictator brought forth on the European continent an evolving plan to rule the world and subjugate the masses.
Now we are engaged in a great resistance, testing whether our nation, or any nations conceived from the learning of our mothers and fathers and so dedicated to liberty, can long endure. We are met on a great social square of technologic creation. We have come to dedicate a portion of our wealth, wisdom, and life to those in history that have offered their lives and wisdom so that we may learn and prosper. It is altogether fitting and proper that we should do this.
But, in a larger sense, we can not dedicate -- we can not consecrate -- we can not hallow -- this square. The brave women and men, living and dead, who struggle here, have consecrated it, far above our poor power to add or detract. The world will little note, nor long remember what we say here, but it can never forget what they did here in the commons. It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us -- that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion -- that this nation, ruled by law, shall have a new birth of freedom -- and that government of the people, by the people, for the people, shall not perish from this planet.
-- David A. Koontz, human patriot
President Abraham Lincoln's address, on Thursday, November 19, 1863, to dedicate Soldiers' National Cemetery in Gettysburg, Pennsylvania, four and a half months after the Union armies defeated those of the Confederacy at the Battle of Gettysburg. Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal. Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a final resting place for those who here gave their lives that that nation might live. It is altogether fitting and proper that we should do this. But, in a larger sense, we can not dedicate—we can not consecrate—we can not hallow—this ground. The brave men, living and dead, who struggled here, have consecrated it, far above our poor power to add or detract. The world will little note, nor long remember what we say here, but it can never forget what they did here. It is for us the living, rather, to be dedicated here to the unfinished work which they who fought here have thus far so nobly advanced. It is rather for us to be here dedicated to the great task remaining before us—that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion—that we here highly resolve that these dead shall not have died in vain—that this nation, under God, shall have a new birth of freedom—and that government of the people, by the people, for the people, shall not perish from the earth.
"Abraham Lincoln's carefully crafted address, secondary to other presentations that day, was one of the greatest and most influential statements of national purpose. In just over two minutes, Lincoln reiterated the principles of human equality espoused by the Declaration of Independence and proclaimed the Civil War as a struggle for the preservation of the Union sundered by the secession crisis, with "a new birth of freedom" that would bring true equality to all of its citizens. Lincoln also redefined the Civil War as a struggle not just for the Union, but also for the principle of human equality.".
"Lincoln's address followed the oration by Edward Everett, who subsequently included a copy of the Gettysburg Address in his 1864 book about the event (Address of the Hon. Edward Everett At the Consecration of the National Cemetery At Gettysburg, 19th November 1863, with the Dedicatory Speech of President Lincoln, and the Other Exercises of the Occasion; Accompanied by An Account of the Origin of the Undertaking and of the Arrangement of the Cemetery Grounds, and by a Map of the Battle-field and a Plan of the Cemetery)."
-- Wikipedia, Gettysburg Address
The books title is indictavite of the author's ability to thoroughly cover a topic. Everett's 2-hour oration had 13,607 words.
The Address by Ken Burns - PBS. Did you hear the story about the person that would give $20 bucks to grandkids that learned the Gettysburg Address? Encouraged me to learn it and it's history. History has an interesting emergent property... it appears to repeat, this is a emergent property from a complex system. It is the complex system practicing and learning... Humans as part of this universe's system, are so far (as we know) it's fastest learning sub-system. Our apparent loop duration is currently around Four Score years.Why President Obama Didn't Say 'Under God' While Reading the Gettysburg Address
Lincoln's 272 Words, A Model Of Brevity For Modern Times by Scott Simon
Germany's Enabling Act of 1933. "The Enabling Act gave Hitler plenary powers. It followed on the heels of the Reichstag Fire Decree, which abolished most civil liberties and transferred state powers to the Reich government. The combined effect of the two laws was to transform Hitler's government into a de facto legal dictatorship."
Women's March 2017 "A series of worldwide protests on January 21, 2017, in support of women's rights and related causes. The rallies were aimed at Donald Trump, immediately following his inauguration as President of the United States, largely due to his statements and positions which had been deemed as anti-women or otherwise reprehensible."
Reichstag Fire Decree - Germany 1933 According to Rudolf Diels, Hitler was heard shouting through the fire "these sub-humans do not understand how the people stand at our side. In their mouse-holes, out of which they now want to come, of course they hear nothing of the cheering of the masses.". Seizing on the burning of the Reichstag building as the supposed opening salvo in a communist uprising, the Nazis were able to throw millions of Germans into a convulsion of fear at the threat of Communist terror. The official account stated: The burning of the Reichstag was intended to be the signal for a bloody uprising and civil war. Large-scale pillaging in Berlin was planned for as early as four o’clock in the morning on Tuesday. It has been determined that starting today throughout Germany acts of terrorism were to begin against prominent individuals, against private property, against the lives and safety of the peaceful population, and general civil war was to be unleashed…
TrumpCare: In the Beginning by Bill Frist - Nov. 2016, Forbes. "Yesterday Americans woke up to news of a new president-elect: Donald J. Trump. The immediate question for those whose lives focus around lifting the health of individual Americans is, “What does this mean for health care in America?”
Node Sentinel File Watcher (NSFW). It’s a file watching module built for Node.js. I built NSFW to overcome an obstacle we were encountering while developing GitKraken, and I released it as an ongoing open-source project. It’s actually entirely safe for work. Ideal for it, even.
NSFW has a file watching implementation for Linux, MacOS, and Windows, which are wrapped and bound for the node runtime to utilize. Thanks to its native implementation, NSFW is able to watch recursive directories on all operating systems in a very performant way.What problem does NSFW solve?
At this time, Node has pretty poor support for file watching. Every operating system has a different capacity to watch directories. Here’s what some celebs have been saying on Twitter:
Linux can’t perform recursive directory watching. MacOS doesn’t provide the filename when a file was changed.
Add to these the fact that there are numerous unsolved issues for Node’s file watcher and that Node does not have a consistent experience across operating systems.How does NSFW solve the problem?
NSFW solves the poor file watching experience on Node by utilizing 3 low-level file watching utilities written in C++ and targeted for the Linux, MacOS, and Windows operating systems.
Linux, MacOS and Windows each ship with their own file watching APIs. Since NSFW’s watch utility is targeted specifically at each of those APIs, it means the experience of using the module is consistent across all three OSs. NSFW fills in the gaps for each API so they’re all consistently feature-complete:
- Linux: The Inotify file watching system does not perform recursive directory watching, so NSFW builds and maintains a recursive watch tree for you.
- MacOS: FSEvents is known to produce inconsistent file events (the file event bitmask becomes corrupted if events occur too quickly), so NSFW stats and disambiguates file change events for you.
- Windows: supports all targeted needs out of the box. (RECORD SCRATCH) That’s right, Windows has the best native support. I said it.
GitKraken is currently the primary consumer of NSFW. A good Git client should not ship with a refresh button because it should automatically know when things change.What could have been: Imagine if GitKraken needed a refresh button like this. Gross!
NSFW is essential to the smooth, cross-platform experience of GitKraken, as it helps the app respond quickly and accurately to changes in a repository it is viewing. NSFW is a quiet and humble, no-frills background process. It doesn’t make waves. It doesn’t talk through movies, chew loudly or snore, but its transparency is its strength; if you notice it, it’s more than likely because something isn’t working. So cheers to watching files silently and effectively – something made easy by the NSFW module.Development hurdles
With no experience in any of the file watching APIs, little experience in the Native Abstractions for Node (NAN) API, and no clear understanding of how to model the interactions Node makes with each file watching utility, the 0.x.x NSFW releases were, umm, troubled.
On Windows, I tried using C++/CLI to use the fancier file watching module provided by the .NET library. While this made it quick to get up and running, it inevitably backfired, because some users were unable to run GitKraken due to missing library dependencies. Sigh.
I also encountered strange errors related to having two distinct garbage collectors running concurrently (one for Node and one for the managed file watcher). When I scrapped the .NET implementation, I achieved much stronger stability for the Windows operating system.
On Linux and MacOS, issues revolved around unfamiliarity with the file watching API and native constructs. The overall unfamiliarity combined with the different strategies each operating system incorporated, ended up turning the entire project into a spaghetti turd. [REDACTED: DEEMED NSFW BY THE AXOSOFT DEPARTMENT OF PROPAGANDA]
Finally, large file change operations slowed down every operating system. At the time, those messages had no throttling behavior. The Node application would get absolutely hammered by file system change notifications and slow to a crawl. We suffered the consequences of that in GitKraken whenever we walked through our bootstrap process, which involves a lot of file manipulation.
After fiddling around with the project through the 0.x.x months (aka The Dark Times), I learned a lot about how each underlying file watcher API works, including their caveats, demands, and broken bits.
After spending a week putting together a complete system diagram, I scrapped the entire 0.x.x project and rebuilt the project to handle the differences of each operating system in a planned way. I also did away with the C++/CLI interface and opted for ReadDirectoryChangesW in Windows.A couple of lessons learned
- Predicting a system’s architecture without first dirtying your hands with the core features, means you’ll probably end up throwing away your project, dirtying your hands with the core features, and starting the project over. As a new developer, be prepared to throw away your prototypes.
- I’m not sure if C++/CLI and Node should ever be a thing. Ever.