Trunk-Based Development vs. GitHub Flow

“Even after finding that trunk-based development practices contribute to better software delivery performance, some developers who are used to the “GitHub Flow” workflow remain skeptical. This workflow relies heavily on developing with branches and only periodically merging to trunk. We have heard, for example, that branching strategies are effective if development teams don’t maintain branches for too long – and we agree that working on short-lived branches that are merged into trunk at least daily is consistent with commonly accepted continuous integration practices. […] We should note, however, that GitHub Flow is suitable for open source projects whose contributors are not working on a project full time.”

Accelerate by Forsgren, Humble, Kim, et al. 2018

Outsourcing Software Development

“The fact that  software delivery performance matters provides a strong argument against outsourcing the development of software that is strategic to your business, and instead bringing this capability into the core of your organization. […] Distinguishing which software is strategic and which isn’t, and managing them appropriately, is of enormous importance.”

Accelerate by Forsgren, Humble, Kim, et al. 2018

Dream teams

“Over two years we conducted 200+ interviews with Googlers (our employees) and looked at more than 250 attributes of 180+ active Google teams. We were pretty confident that we’d find the perfect mix of individual traits and skills necessary for a stellar team — take one Rhodes Scholar, two extroverts, one engineer who rocks at AngularJS, and a PhD. Voila. Dream team assembled, right?

We were dead wrong. Who is on a team matters less than how the team members interact, structure their work, and view their contributions. So much for that magical algorithm.”

https://rework.withgoogle.com/guides/understanding-team-effectiveness/steps/introduction/

A typology of organisational cultures

 

Pathological Bureaucratic Generative
Power oriented Rule oriented Performance oriented
Low cooperation Modest cooperation High cooperation
Messengers “shot” Messengers neglected Messengers trained
Responsibilities shirked Narrow responsibilities Risks are shared
Bridging discouraged Bridging tolerated Bridging encouraged
Failure leads to scapegoating Failure leads to justice Failure leads to inquiry
Novelty crushed Novelty leads to problems Novelty implemented

https://qualitysafety.bmj.com/content/qhc/13/suppl_2/ii22.full.pdf

Measuring Productivity

Utilization is defined as the amount of an employee’s available time that’s used for productive, billable work, expressed as a percentage. An employee’s utilization rate is a critical metric for organizations to track.

(Source: Google)

Queue Theory in math tells us that as utilization approaches 100%, lead times approach infinity. [Lead Time is “how fast work can be completed”]

(Source:  Accelerate by Forsgren, Humble, Kim, et al. 2018)

So, be a good employee and ring the bell soon enough and take some slack time!

Maximizing Developer Effectiveness

After commitment, measurement and empowerment comes scaling.

https://martinfowler.com/articles/developer-effectiveness.html

Working environment

“When we look into these scenarios, a primary reason for the problems is that the engineering organization has neglected to provide developers with an effective working environment. While transforming, they have introduced too many new processes, too many new tools and new technologies, which has led to increased complexity and added friction in their everyday tasks.”

Micro Feedback Loops

“I recommend focusing on optimizing these loops, making them fast and simple. Measure the length of the feedback loop, the constraints, and the resulting outcome. When new tools and techniques are introduced, these metrics can clearly show the degree to which developer effectiveness is improved or at least isn’t worse.”

“The key loops I have identified are:

“It is hard to explain to management why we have to focus on such small problems. Why do we have to invest time to optimize a compile stage with a two minute runtime to instead take only 15 seconds? This might be a lot of work, perhaps requiring a system to be decoupled into independent components. It is much easier to understand optimizing something that is taking two days as something worth taking on.”

In der Verwaltung Überleben

“Verwaltungen sind auch eine Arena für Machtkonflikte und erinnern mitunter an “organisierte Anarchie”. Wer dies versteht und weiß, dass das innerhalb gewisser Grenzen auch normal ist, dem bleiben im Umgang mit und im Leben in Verwaltungen einige Frustrationen erspart.”

Wolfgang Seibel, Verwaltung Verstehen, S. 26

Verwaltung Verstehen

“Verwaltung gilt bestenfalls als uninteressant, jedenfalls als Expertenangelegenheit. Das ist paradox, schon deshalb, weil die öffentliche Verwaltung im demokratischen Staat Angelegenheit der Bürger sein sollte, und das kann sie nur sein, wenn diese die Möglichkeit haben, sich über ihre Eigenheiten zu unterrichten und sie wenigstens ihren Grundzügen nach zu verstehen.”

Wolfgang Seibel, Verwaltung verstehen, 2. Aufl. 2017.