Code ownership, stewardship, or free-for-all?

32
Code ownership, stewardship, or free-for-all?

(1 comments)

February 16th 2022


As the pendulum has swung from monoliths to micro-everythings – providers and products, front-ends, you name it – we discover ourselves with more “issues” to fetch and retain. And so it begs the quiz, who’s accountable for what?

As a truly simple example, imagine a small crew of, express, 6 builders:

The crew has created and now helps a cell app, an Alexa skill, three separate web apps, fifteen microservices, and a partridge in a pear tree.

And whereas they’ve managed to position into designate some extent of standardization all over the ecosystem, by the very nature of fashioned software development, it is appropriate loads. There may maybe be Python, Django, DynamoDB, S3, React, Typescript, Tailwind, Swift, and a lot more, all working collectively to implement user interfaces, APIs, info persistence, integrations, etc.

Too great for anyone developer.

Furthermore, each travel comes with assorted demands for enhancements and fixes, and the work is now not disbursed equally all over the codebases. One travel may maybe well require heavy adjustments in the cell app, and the following may maybe well need largely abet-discontinue work.

So again, the quiz is: how is a crew easiest deployed to meet the demands of the industry, travel-after-travel? In other phrases, how will we easiest divvy up responsibilities?

To illustrate, will we encourage specialization – express, set up Emily to address the entire cell development, let Joe comprise the on-line parts, etc? And previous appropriate tech stack, if we have faith over a dozen microservices, will we scheme some boundary spherical them, and express Javier owns microservices A and B, Anna C and D, etc? However what happens when work of their explicit location is light for a pair of sprints in a row? Are we cheerful with them having a chunk lazy time?

Or will we strive to better optimize utilization, and encourage a more corpulent-stack, putrid-domain tradition? Each and every developer does all of it! However wait…is this cheap?

Drivers

Licensed savor when constructing software, forward of we soar to an answer we are in a position to also simply silent step abet strive to resolve out what we’re attempting to solve. I could maybe well argue, there are four gargantuan issues to have faith in ideas when excessive about developer responsibilities and ownership:

  1. The obtrusive facet is productiveness. All issues being equal, we would scheme end to development the crew in a map that maximizes the work they fetch finished. I mean, this is why we’re paid! And so optimizing productiveness in general scheme conserving some consistency for builders, aligning their work with their skill-sets and experience. To illustrate, if Emily worked on the cell app closing travel, she ought so that you can knock out that next characteristic faster than, express, the developer who has been working in the backend.
  2. We furthermore wish to be mindful of quality. And equal to above, it is probably that the developer with more hands-on experience in a given codebase will furthermore implement the following characteristic with elevated quality than the one who became as soon as parachuted in for one travel handiest and does now not know the development, patterns, or conventions. Even the ideal builders can write crappy code when they don’t effect the codebase.
  3. Right here is where it gets tricky though. The organization veritably furthermore wants to mitigate the probability of a developer leaving, and with it their info. And this veritably runs counter to the targets above. Whereas assigning one single cell developer to the entire cell development travel after travel may maybe well maximize each productiveness and quality, it puts the organization in a precarious set up when that developer begins getting texts from the Meta recruiter.
  4. Eventually, we are in a position to now not ignore the much less-tangible dimension of developer happiness. However this too is subtle. Just a few of us savor differ and newness, and so if we’re stuck with the the same machine travel after travel, it may maybe probably well well also have an effect on our productiveness or execute us more inclined to soar ship. Others scheme end predictability and preserve pleasure in having their very comprise turf. Bouncing spherical would drive them loopy. In other phrases, each of us is assorted, but guaranteeing that we’re fulfilled and challenged is necessary.

Now assuming these are the lawful components to have faith in ideas, the crux then is that each organization has to scheme end its “weights” for each. What’s fundamental to optimize? Presumably there may maybe be a whereas-serious drive (level in time) at play, and productiveness wants to be optimized above all else. Or even the market for builders is so sizzling that an necessary facet is appropriate conserving developer jubilant, productiveness be damned! In other phrases, it is very great context-dependent.

Hand waving over the “how” right here, and assuming the organization knows what it is attempting to optimize, it wants to pick out some model for structuring responsibilities for the crew. However what are the decisions? Right here are a pair of of the usual fashions I’ve stumble upon:

Ownership

Normally, we settle on a map of code ownership. Most frequently it is tacit – each person appropriate respects that Joe veritably does the on-line stuff, Emily does cell development, I create the price microservices, etc. Diversified occasions it is formalized – management hired Joe as The Net Developer, Emily as The Mobile Developer, etc. In either case, in practice it plays out in an identical fashion. When contemporary capabilities or fixes may maybe be found in, we divvy all of it up consistent with what we “comprise”. This permits us to be maximally productive (in an particular person sense), and furthermore will enhance quality (veritably).
There are a pair of downsides nonetheless.

First info of assorted systems may maybe also be hoarded, representing a huge probability if anyone “wins the lottery”/”gets hit by a bus”, as they express. Additionally, “ownership” can veritably undoubtedly feel savor a shackle to builders, if what they wish to be doing is studying contemporary issues. Lastly, it ought to be illustrious that whereas particular person productiveness will enhance (for the reason that developer knows their codebases properly), collective productiveness veritably decreases with ownership. As mentioned above, because work hundreds don’t cleanly steadiness out each travel, this can lead to a feast and famine venture for the proudly owning builders. To illustrate, one travel there may maybe be more work of their codebase than the proprietor can contend with inflicting gargantuan bottlenecks (or silly nights!), and the following month there may maybe be now not great to create, and that proprietor is more or much less lazy.

Free-for-all

When a firm feels a majority of those misfortune of ownership, they veritably abandon any technique the least bit and appropriate waft it: i.e free-for-all. This methodology is so simple as it sounds. A supervisor sees a pile of work over there, and says “howdy you, code-person, fetch after it!” And that’s the reason that.

Whereas this system does guarantee that we steadiness our total allocations (i.e. Emily the cell developer is now not lazy when there may maybe be now not any cell work, because she gets pulled over to work on the Python service), this model may maybe also be each laborious and fraught with quality points. If we haven’t got any lengthy-lasting connection to the codebase we’re working in, our work is guided handiest by expedience and lack of information. We shoe-horn a janky brief-term fix in because either we didn’t know any better, or because we don’t undoubtedly care great – we’ll be in a outlandish codebase next travel! As they express, “no person has ever washed a rental vehicle”.

The free-for-all model is fundamentally driven by management who idealistically sees us as interchangeable handymen (i.e. the legendary Pudgy Stack Developer) – snappy ready to kind out with grace and ease any technical arena, it is miles rarely linked what tier, machine, or industry domain. And obviously this is bull-shit. For all however the most trivial systems or all however the most distinctive developer, there may maybe be simply too great complexity so that you can navigate our scheme via every thing without true time to ramp-up.

Stewardship

Now somewhere in between these two extremes of ownership and free-for-all is a model of stewardship (or custodianship). Much like ownership, builders check up on after certain codebases where they have faith got the most experience – they doubtlessly did many of the preliminary work in the project, and their name is all over the code, but they’re now not accountable for doing every thing. As a minimum though they ought to be consulted on adjustments and be pulled in to triage production points or discuss kind adjustments.

This permits for, express, Emily to lunge over and soar in and give Joe a hand with the on-line portal when the workload there may maybe be excessive, but to come to her cell app when issues die down. In other phrases, it balances each particular person and collective productiveness. Additionally, this model furthermore can steadiness properly probability mitigation and developer happiness, as builders fetch some extent of familiarity with other objects previous their very comprise (i.e. fetch to learn contemporary issues).

The necessary facet with stewardship is that, whereas it is much less formal that ownership, it is miles silent explicitly outlined and held to. At a minimum, a pair of issues ought to be in set up. There ought to be an inventory that defines who’s steward of what, GitHub (or no matter SCM software) ought to be configured so that stewards ought to approve all pull requests, and stewards ought to be given ample allocation (time) to create the mandatory “stewarding” of their facet. Except there may maybe be some formality and self-discipline spherical this, every thing will appropriate race down the slippery slope unless you discover your self in the pit of the free-for-all.

Conservatorship

Lastly, it is doubtlessly necessary to furthermore stare a model that’s very standard in bigger organizations, and that’s the reason what I will call conservatorship. Right here is the foundation that there may maybe be a chosen few (veritably astronaut architects) who have faith the accountability of “proudly owning” every thing. They retract the info, execute the necessary technical choices, and kind the industry common sense/development, however the correct down-and-dirty work is finished by whichever developer is obtainable, veritably in free-for-all trend of scheme.

In idea, this model works gargantuan. Efficiency and quality are optimized by advantage of conservators sharing their “wisdom” with the hands-on builders, thereby clearing the course to the hastily and efficient solution. And with the abet of the conservators, builders can appropriate swap inside and out of codebases, counting on the conservator to fetch them up to flee snappy. That is the foundation now not now not up to.

In practice, it by no scheme works out savor this. Conservators, without any hands-on experience, snappy turn out to be silent from the on-the-floor technical actuality, and veritably are no proper abet the least bit to builders who ought to implement some enhancement or fix some defect. It’ll preserve a developer appropriate as lengthy to ramp up, and furthermore may maybe also be nerve-racking because they fundamentally cede their autonomy (and creativity) to the conservator who gets to call the pictures.

Speaking as anyone who has played this conservator characteristic, I will attest to how diminutive abet I became as soon as to the hands-on developer who desired to fetch proper work finished all via the systems I supposedly “owned”. This model, in my behold, sucks for each person – and that’s why I strive to lead flow of those forms of roles.

In Summary

Within the discontinue, what began in my head as hastily post about assorted fashions of code ownership went scheme longer than anticipated. Right here is how I believe it though, and these are appropriate a pair of fashions I’ve stumble upon for divvying up work. I could maybe well scheme end to listen to your ideas and experiences.


And yes, if you were wondering, I believed of the name “Conservatorship” after staring on the Free Britney documentary with my wife. 🙂

I am an “extinct” programmer who has been blogging for practically 20 years now. In 2017, I started Highline Recommendations, a consulting firm that helps with software structure and entire-stack development. I in actuality have faith two degrees from Carnegie Mellon University, one shimmering (Data and Decision Techniques) and one now not so great (Philosophy – thesis right here).
Pittsburgh, PA is my home where I stay with my wife and 3 energetic boys.

I currently released a web app called TechRez, a “better resume for tech”. The idea is that moderately than sending out the the same-extinct static PDF resume that’s jam packed with buzz phrases and spans a pair of pages, that you would be in a position to assemble a TechRez, which is fashioned, visual, and interactive. Are trying it out for free!

Read More

Vanic
WRITTEN BY

Vanic

“Simplicity, patience, compassion.
These three are your greatest treasures.
Simple in actions and thoughts, you return to the source of being.
Patient with both friends and enemies,
you accord with the way things are.
Compassionate toward yourself,
you reconcile all beings in the world.”
― Lao Tzu, Tao Te Ching