Results: 48
-
Open-closed
2022-04-27 22:42
The open/closed principle of the SOLID framework for software development.
references
-
The philosophy of water
2023-04-21 20:16
Water is life. Connection to humanity through water and rain. The smell of the earth after a warm rain.
-
Single responsibility
2022-04-29 15:12
There should never be more than one reason for a class to change.1
-
Wikipedia contributors. (2022). SOLID. In Wikipedia. https://en.wikipedia.org/w/index.php?title=SOLID&oldid=1069309351 ↩
-
-
Normalization of deviance
2022-09-18 20:13
- Pay attention to weak signals
- Resist the urge to be unreasonably optimistic
- Teach employees how to conduct emotionally uncomfortable conversations
- System operators need to feel safe in speaking up
- Realize that oversight and monitoring are never-ending
-
Rescuing a failing project
2023-10-30 11:05
Cure the lack of momentum and feedback.
- Add some (very few for now) tests even if they verifies a bug continues to be a bug.
- Set up CI/CD that tests and pushes always.
- Continue to add tests
- If it hurts, do it more and automate it more.
Crafting Code Podcast Ep. 2
-
Senior engineer
2022-06-11 22:36
Defining what makes an engineer a “senior engineer” is a murky task. There will always be differences from one company to another, but there are some general patterns that most people agree on.
Skill
- Achieved mostly independent ability to solve any task given.
- Knows when they need to involve others for things that they don’t have the skills for or believe should be group efforts
Responsibilities
-
Use a simple heuristic to guide gradual adoption
2023-04-05 10:01
unless you have a good reason write it in [new tech]
Have to give autonomy, have to spend the effort to justify the reason not to, have to allow people to do the right thing without you dictating
202203231647 Leading from vision 202107240951 Visionary leadership style 202205111310 Migrations are the only solution to tech debt
Software unscripted change management minute 30
-
Digital streams vs gardens
2022-05-02 17:01
Gardens are timeless, heterarchical, and defined by topological relations.
202109060835 Knowledge is constructed, 202109060845 Knowledge is a heterarchy
Streams are ephemeral and linear, defined by serial flow (202205021249 Stock and flow of knowledge).
-
Have fun and be terrified
2024-08-22 20:21
Have fun and be terrified. I can do that.1
On quitting your job and striking out on your own, or more broadly, daring to do something and put your skin in the game #wip
-
Suresh, N. (2024, August 21). Quitting My Job For The Way Of Pain [Blog]. Ludicity. https://ludic.mataroa.blog/blog/quitting-my-job-for-the-way-of-pain/ ↩
-
-
The Principles of Product Development Flow
2023-08-24 17:43
- 202309011312 The primary goal in product development is to make good economic decisions
- 202309011322 We need more information for complex decision making
- 202309011327 Define metric to value transfer functions using sensitivity analysis
- 202309011333 Quantify your cost of delay
- 202309011342 Measure output instead of activity
- 202309021620 Important trade-offs have u-curve optimizations
-
The Software Craftsman
2023-12-09 13:23
Chapter 2 - Agile
- 202312161343 You don’t do Agile
- (18 discussion) “Focusing purely on the process and treating software development like a production line leads to average 9-to-5 developers doing what they are told — they become factory workers.” This is what we do here with mobbing
- (19 discussion) bad faith argument in paragraph 2
Chapter 3 - Software Craftsmanship
-
The Last Lecture
2022-05-19 13:14
- People only tell you what you're doing wrong if they still care about you. If they've stopped telling you what you're doing wrong, it means they've given up on you.
- Experience is what you get when you didn't get what you want
- Wait long enough and people will impress you. (Am I too cynical?)
- I don't know but
(one of my star people is|you're)
excited so let me learn more. Tell me more.
Randy Pausch last lecture
-
Beauty will save the world
2022-08-22 16:35
Beauty will save the world.1
-
Dostoyevsky, F., McDuff, D., & Todd, W. M. (2004). The idiot. Penguin Books. (Original work published 1868) ↩
-
-
All systems thinking is a simplification
2024-01-29 15:54
All 202203210833 Systems thinking is an approximation or simplification of the real world. 202203210830 When your model and reality conflict, reality is always right. We can't possibly account for all the nuance and intricacies of the systems that govern behaviors. There is always an encompassing system and further sub-systems at play. There are always more feedback loops and information that influences the system.1
-
Meadows, D. H., & Wright, D. (2011). Thinking in systems: A primer (Nachdr.) (pp. 18). Chelsea Green Pub. ↩
-
-
Systems thinking benefits all thought
2024-01-29 14:41
Though we should use all of our different lenses for viewing and thinking about the world, a Systems Thinking lens has distinct benefits:1
- It hones our ability to understand parts of the whole
- It allows us to see interconnections
- It gives us tools to ask questions about future behavior and get answers
- It gives us the power to understand and be confident at 202203231646 Affecting long-term change in the system
-
Meadows, D. H., & Wright, D. (2011). Thinking in systems: A primer (Nachdr.) (pp. 6–7). Chelsea Green Pub. ↩
-
Resilient systems
2024-02-20 12:02
Systems that work well are resilient: they can recover after being stretched or strained. Most often, resilient systems have rich feedback loops and interactions that allow a system return to some equilibrium, state, or function even after a large disruption.1
Sometimes systems will exhibit even higher level resilience where they can repair, produce, or modify feedback loops themselves. These are 202402201203 Self-organizing systems.
Human bodies are remarkable examples of resilient, self-organizing systems.
Also, note that 202402241658 Stability and resilience are not the same thing.
-
Meadows, D. H., & Wright, D. (2011). Thinking in systems: A primer (Nachdr.) (pp. 76–78). Chelsea Green Pub. ↩
-
-
The tragedy of the commons
2024-02-25 14:49
In a commons system there is a resource that is shared (e.g. a shared pasture for cattle grazing). For these systems to be tragedy, the shared resource must be erodible (i.e. the further it's degraded, the harder it is to regenerate the resource) and the users of that resource must be incentivized to use the resource even in the face of the erosion (e.g. immigrants may hurry or increase in numbers if they hear immigration laws are going to become tougher).1
-
Meadows, D. H., & Wright, D. (2011). Thinking in systems: A primer (Nachdr.) (pp. 116–121). Chelsea Green Pub. ↩
-
-
Feedback can only affect future behavior
2024-02-17 14:55
While mostly tautological — or physical based in relativity and information transfer — the statement that feedback can only affect future behavior is important. It describes “lag” and requires our attention to the lag time — if I’m ordering stock for my store inventory, I need to account for the continued outflow of inventory as the resupply of inventory is arriving after ordering it.1
More generally, it means that flows can’t react instantly to other flows. They can only react to changes in stocks and after a delay. (huh? #wip)
-
Meadows, D. H., & Wright, D. (2011). Thinking in systems: A primer (Nachdr.) (pp. 39). Chelsea Green Pub. ↩
-
-
Quantify your cost of delay
2023-09-01 13:33
If you're only going to quantify one thing, quantify the cost of delay.1
We simply have no business trading money for cycle time if we do not know the economic value of cycle time.
Cost of delay is the measure that returns the most value while building an economic framework for a project. It will lead to our ability to quantify other important variables such as the cost of queues, batch sizes, and variability.1
How to quantify it? #wip #thread (should be answered later in the book)
-
Migrations are the only solution to tech debt
2022-05-11 13:10
Migrations are both essential and frustratingly frequent as your codebase ages and your business grows: most 202205131318 Software only supports one order of magnitude before becoming ineffective, so rapid growth makes them a way of life.
In fact, if your software survives an order of magnitude increase, it may have been over-designed in the first place. Add to that the simple fact that they are usually the only available avenue to make meaningful progress on technical debt1 and it follows that we have to know how to do them well.
So how are we going to deal with these inevitabilities?
-
Larson, W. (2018, April 15). Migrations: The sole scalable fix to tech debt. https://lethain.com/migrations/ ↩
-
-
Limit WIP to increase throughput
2021-10-18 12:46
Limiting the amount of work in progress can increase the total throughput of the system. 202110181247 Humans can't multi-task in a literal sense of concentrating on two things at once. We also can't multi-task in the sense that trying to switch between two tasks repeatedly slows down our ability to understand and complete those tasks. We are much better off pursuing deep 202109091123 Flow state work.
Taking this one step further, we see that it's better to deeply focus on one thing at a time in order to actually increase our total output.
Another extrapolation is that teams of individuals should reduce their WIP as much as possible, but may be able to sustain multiple threads. The size of the team, the threads of work, and the knowledge/skills of the members likely contribute to the optimal number. Is there a way to estimate this ideal number of threads? #thread
-
Pratt parsing
2024-05-17 09:38
Pratt parsing (alternatively Top Down Operator Precedence or Precendence Climbing) is a method for writing language parsers.
Resources:
- YouTube Discussion of the method
- original Pratt paper, rehosted
- An ALGOL 60 Translator for the X1
- The Shunting Yard Algorithm
- Parsing expressions by precedence climbing
- Crafting Interpreters
- Pratt Parsers: Expression Parsing Made Easy
- Writing An Interpreter in Go
- Simple but Powerful Pratt Parsing
references
-
The Myth of Sisyphus
2024-06-13 17:15
The fundamental subject of The Myth of Sisyphus is this: it is legitimate and necessary to wonder whether life has a meaning; therefore it is legitimate to meet the problem of suicide face to face. The answer, underlying and appearing through the paradoxes which cover it, is this: even one does not believe in God, suicide is not legitimate. Written fifteen years ago, in 1940, amid the French and European disaster, this book declares that even within the limits of nihilism it is possible to find the means to proceed beyond nihilism.
– Albert Camus, Paris, March 19551
-
Camus, Albert, and Justin O’Brien. The Myth of Sisyphus. Second Vintage international edition. New York: Vintage International : Vintage Books, a division of Penguin Random House LLC, 2018. ↩
-
-
Ask questions to assess the validity of a model
2024-02-17 15:20
Whenever you’re confronted with a scenario, as yourself questions to help you decide how good of a representation of reality the model is — but always remember 202203210830 When your model and reality conflict, reality is always right.1
Some questions that might be helpful:
- Are the driving factors likely to unfold this way? Models of dynamic systems are usually not designed to predict what will happen. Rather they’re designed to explore what would happen if a number of driving factors unfold in a range of different ways.
- If they did, would the system react this way? Regardless of whether you think the driving factors will do something, would the system actually behave like that if they did?
- What drives the driving factors of the system? Who watches the watchmen?
-
Meadows, D. H., & Wright, D. (2011). Thinking in systems: A primer (Nachdr.) (pp. 45–47). Chelsea Green Pub. ↩
-
Poetry and quotes
2022-08-22 13:05
- 202208221306 In the Desert
- 202210141736 Ozymandias
- 202307282003 An Ode
- 202308271554 This be the verse
- People (society) plant trees under whose shade they will never lie
Literature Quotes
- 202208221635 Beauty will save the world
- 202208221321 I claim them all
- 202209201414 Science can only amplify
- 202209121025 The world wants new men
- 202211021054 Yearn for the vast and endless sea
- 202304041631 The end of all things
- 202308271610 Quarry workers' creed
- 202408221254 Ten thousand times the spider would rebuild
- 202408221304 Desolation tries to colonize you
- 202408232359 The abyss gazes back
Quotes
- 202408222021 Have fun and be terrified
- 202411161349 As if I've deliberately come back to this one day
- "An investment in knowledge always pays the best returns" - Benjamin Franklin
Stories and Folklore
Songs
Latin
-
Limiting factors can change
2024-02-25 12:02
The 202402251159 Limiting factor of a system can change over time. Take the example where adding potassium won't help crops if they don't have enough nitrogen. Now imagine that we add sufficient nitrogen to the soil, it's possible that the limiting factor might be the potassium or something else entirely like water or sunlight.
This can cause a "whack-a-mole" style expansion problem for optimizing a system. It's even possible that the shifts in the limiting factors could be at cross purpose with each other so that the result of helping one hurts the other.
In a business, it's important to remember this concept. Adding more salespeople to sell a product that you can't build fast enough won't help.
In engineering, it's an interesting analogy for quality, speed, and productivity over the long run. The limiting factor may not be quality now, but it could be in the future. Whether it's acceptable to trade that depends on many factors including the probability of making it to that future without failing.
-
Thinking in Systems
2024-01-29 14:11
- 202401291425 Definition of system
- 202401291441 Systems thinking benefits all thought
- 202401291458 The purpose of the parts may not be the purpose of the whole
- 202401291554 All systems thinking is a simplification
- 202308281423 Ship of Theseus
- 202205021252 Stock and flow
- 202110231515 Feedback loop
Chapter 2 - A Brief Visit to the Systems Zoo
- One Stock Systems
- 202402171439 One stock with two competing balancing loops
- 202402171455 Feedback can only affect future behavior
- 202402171507 A stock with one reinforcing loop and one balancing loop
- 202402171512 The principle of shifting dominance
- 202402171520 Ask questions to assess the validity of a model
- 202402241530 One stock with delays
- Two Stock Systems
Chapter 3 - Why Systems Work So Well
-
Friedrich Nietzsche
2022-06-09 08:53
German philosopher (philologist by training) whose works centered around themes of 202206051528 Moral Philosophy and the history of morality.
On the genealogy of morals
Comprised of 3 essays, this is perhaps the most well known work of Nietzsche.[^nietzsche1887]
The first essay centers on the history of morality. Nietzsche contends (through some philological argumentation) that “good and bad” is not the same as “good and evil”.
”Good or bad” is a delineation between “good = aristocratic = beautiful = happy = loved by the gods = strong = vital” and “bad = common = plebeian = stupid = lacking”. The “knightly-aristocratic” caste are good insomuch as they have noble qualities whereas the “bad” people were simply people who lacked those qualities. It’s not a moral judgment in itself, it’s a descriptive categorization of humans.
“Good and evil” then comes from a “priestly” caste at a later date. The purpose of this new distinction is to reverse the judgment and to assign moral weight to it. The priestly caste creates a world in which the strong, dominant, rich, powerful are evil for using those traits (Nietzsche precisely sees no issue in “Man” wielding his strength and dominating others) and the new “good” are the downtrodden, meek, subservient people who require things like neighborliness, timidity, humility to survive against the “blonde beasts”. This results in the Judeo-Christian tradition and (according to Nietzsche) a self-abnegating inward focus of the mind and instincts. Instead of being strong, vital, active, and forgetful[^1] of wrongs done to us, we become cruel, resentful, vengeful people who spend our time thinking about the abuses of others and competing to be the most “debased” type of human.
-
Zero to engineer
2022-08-10 19:44
How do get into 202109061338 Software Engineering?
Let's go at this from a specific angle.
What would it take for me to get an entry level job as a programmer?
- Get past the résumé screen
- Get past the recruiter screen
- Get past the coding exercise
- Get past the onsite interviews
Preparing for these takes different amounts of time and require different skillsets. If we include the dependencies between each step and sort them by preparation time, we get a new ordering.
- Getting past the coding exercise — is the basis for 2 and 3, so it must be solid and come first.
- Getting past the résumé screening — requires things like example projects and raw time spent coding.
- Getting past the onsite interviews — definitely the point where not knowing your shit can bite you, but it's also possible to be great at interviewing and compensate for your rough patches with things like work ethic and initiative.
- Getting past the recruiter screening — easy to bullshit past if the résumé checks out, but always easier if you're confident and capable than faking it.
Getting past the coding exercise
Helps if you know what it will be. Many companies make things like this available in advance. If so, you have an obvious path.
-
The Private Library
Being a More or Less Compendious Disquisition on The History of the Architecture and Furnishing of the Domestic Bookroom
2024-07-28 12:42
The Private Library is the domestic bookroom: that quiet, book-wrapt space that guarantees its owner that there is at least one place in the world where it is possible to be happy. The history of its architecture and furnishing extends back almost to the beginning of history and forward toward a future that is in equal parts amazing and alarming.
All libraries are magical rooms. All their windows look out onto Faërie, and all their carpets can fly. […] Entering our library should feel like easing into a hot tub, strolling into a magic store, emerging into the orchestra pit, or entering a chamber of curiosities, the club, the circus, our cabin on an outbound yacht, the house an old friend. It is a setting forth and a coming back to center. [^byers2021] (pp. 1, 3)
A visitor standing before this instantiation of language must have felt the true, right sense of the numinous.[^byers2021] (pp. 14)
A private library is a place for rest and relaxation, but also contemplation and thought. It is a place for the individual to find respite and transport oneself to new worlds. In its purest form, a library is only a library if that is its sole purpose. A study or an office can have many of the qualities of a private library but it may not truly be one if it can’t provide the enveloping nature of a pure library.
-
System design
2022-08-13 13:27
Designing systems is one of the common, critical tasks of a 202206112233 Staff-plus engineer. It's something that sets a 202206112236 Senior engineer apart. It proves that you can understand tradeoffs in technology and organizational size and maturity. It shows that you understand how to build things that are optimal for now and have a clear path to the future you're working toward. Many engineers plateau at a place where they can understand and implement any type of tech but aren't capable of planning out new systems from scratch based on some need of the business.
Example systems to learn how to design
- Rate limiter
- Consistent hashing
- Key-value store
- Unique id generator in distributed systems
- Url shortener
- Web crawler
- Notifications
- News feed
- Chat
- Search autocomplete
- YouTube
- Google Drive
Example: Scale from 0 to 1M users
- start with a single server. DNS somewhere directs all traffic to the web server where everything from apps, to APIs, to DBs are housed.
- The first interesting scale point is when you need to separate your database from your web servers. At this point you probably have enough reason to discuss the exact details of the DB you're using. Should you be using a relational DB or a NoSQL document store?
-
The Entry Point
2021-04-29 15:22
#new #thread #source #structure #wip
This is the main entry point into my knowledge graph. At the risk of being prescriptive about categories and connections, a single top-level entry point is useful to maximize discoverability. If you're looking for other things I do, check out my home page.
The lofty goal of this project is to contain all of my knowledge. I hope this will be a lifelong project where I can learn, collect, and create a record of my thoughts in a simple, plain-text format that should never become obsolete.
Workflow
This will change drastically over time, but in an effort to keep myself organized, here's my process.
- Find a source of information
- Create a #source note with solid citations (managed in Zotero) for taking notes while consuming the source.
- Create, link, and manage the Zettel and my Zettelkasten.
For more information on the why and how of using a Zettelkasten, see 202107272242 The Art of using a Zettelkasten.
Tags
- The #structure tag is used for structure notes. These are hubs of Zettel that are connected under some sort of idea. They help with discoverability and maintenance of the Zettelkasten as a whole.
- The #source tag is a single Zettel to organize the notes I take while working through some source material. Each Zettel that's a #source is also a #structure Zettel. For example, I take notes while reading a book in a Zettel that's named for the book's title and tag it with the #source tag. These notes aren't technically needed if we do a good job citing sources, but it's helpful during the initial reading and note taking for long-form content that requires multiple sessions.
-
Freedom and Responsibility
2024-07-01 09:52
People must have the freedom to act and the responsibility to act wisely. Without the freedom to act, responsibility is pointless; the system decides what actions can be taken and the responsibility or lack thereof for those actions is vested in the system, not the individual. Without the responsibility to act wisely, the freedom to act is risky and unfair; consequences for those free actions have to be upheld, both positive and negative; accountability for outcomes and whether the act was taken with proper consideration lie on the free person.
Note that this doesn't mean that we all have to be risk-averse. Just because you are responsible for your actions, doesn't mean we have to exact painful consequences. We can create a culture that gives freedom, demands responsibility in return, and then is benevolent with punishment for bad outcomes. If the action was taken in good faith — responsibly — and didn't work out, we can accept that as one of the tradeoffs for the other benefits we gain from FNR. If someone makes an honest mistake, they don't need to be shamed, hurt, or expelled. In fact, this honesty and transparency about outcomes combined with the lenient forgiveness of failure is what drives true freedom to do, build, create, innovate, and achieve.
-
Types, and why you should care
2022-06-28 14:49
From a talk[^minsky2019] by Yaron Minsky of Jane Street.
Typed vs. Untyped
- Untyped — scripting, lightweight, friendly, and slow.
- Typed — Serious, professional, unfriendly, verbose, and fast.
Some definitions
- Values — data, things
- Variables — can be different values, part of the lexical portion of the language
- Expression — composed out of variables, values, and other things
- Types — categorization system for values; groups values into named groups; strings, integers etc.
- In untyped language, values have types
- In typed languages, values, variables, and expressions all have types. (For instance, variable is typed when it always contains a variable of that type)
Why types?
- Make programs faster, typically through compilation/interpretation loop having “hints” and more information.
- V8 for instance can be super fast, within a factor of 3 or so from a compiled language (but this is through herculean effort of thousands of people over tens of years and complicated things like tracing compilers and things)
- This is predictable performance vs V8
- Make programs more understandable
So why don’t people always use them?
- Often make programs more verbose — when the language doesn’t have a convenient way to express something, it’s difficult to express it at all or in a good way
-
Curriculum design for software engineering
2022-06-28 20:18
I want to teach computer science, what should I do?
vs
I want to make software, what should I do?
Need to ask questions about the desired solution to figure out things like goals, constraints, and methods before you can build that solution. In the education case, the “solution” is the curriculum.
Ask things like:
- What age are the students?
- What exposure have they had before?
- Is this required? An elective? An extracurricular?
- How long is the class? How often does it meet?
- Is it even a class or something else?
- How many students are in the room?
etc. but also think about things like
- Is there internet access?
- Is the teacher new to programming?
- Can the students type?
- Are there students with disabilities?
- Do the students have regular computer access at home?
- Do the students have regular computer access at school?
Think about
- Equity, Rigor, and Scale
Methods
- Required courses
- Don’t scale though, need certifications for teacher. The economy for experts means that they’ll go to Jane Street and learn a huge amount more than public HS
- Rigor has to take a hit because everyone has to pass the course to graduate
- Elective courses
- Not equitable. Hugely biased (currently) to white and asian males, failures and achievement gap #thread lead to further disparity.
-
The Pragmatic Programmer
2023-07-24 10:42
Intro
- 202308141544 Make the future less painful
- 202308281423 Ship of Theseus
- What makes a pragmatic programmer?
- 202308271610 Quarry workers' creed
Chapter 1
- 202308282340 No broken windows
- 202312091400 Be the exemplar of change
- 202312091413 Know what's good enough
- Think critically
Chapter 2
- Good design is easier to change than bad design. Almost all other patterns boil down to "easier to change" or ETC or 202205031449 Optimize for change or 202204262114 Write code that's easy to delete, not extend.
- This is a value (spectrum) not a rule.
- This is why I don't like frameworks that lift a lot (tailwind style string classes everywhere in code) or rails magic. It's everywhere and pervasive and not good. Or things w/lots of non-standard tooling (bit or graphql)
-
Category Theory in Life
2022-07-18 19:46
Category theory is abstract, but its abstraction makes it apply to many things around us in ordinary life.
What is category theory?
Category theory is the mathematics of mathematics
Mathematics is the logical study of how logical things work.
In order to study things logically, we have to ignore some details of reality that make things behave illogically. It's only in the abstract world where things do behave perfectly logically
Category theory is the logical theory study of the logical study of how logical things work.
The map of the London underground is a good example of a "mathematics", where the geographical map of the exact tubes are not the purpose. The slightly unreal, more representative version helps us in a certain situation navigate more easily. We choose to ignore certain details to represent things more logically.
Objects and morphisms
$A \rightarrow B$ means there's a $morphism$ between $A$ and $B$.
So if we have
$$A \xrightarrow{\text{is the mother of}} B \xrightarrow{\text{is the mother of}} C$$
We can deduce
$$A \xrightarrow{\text{is the grandmother of}} C$$
Instead of looking at things based on their intrinsic characteristics, we can learn a lot about them (and other things) by their relationships to other things: hence the "Category". This gives us more context
-
Stop starting, start finishing
2023-10-24 15:10
Instead of starting many things and splitting your attention, you should focus on finishing things that you've started. Note that "finishing" doesn't have to be seeing that project to completion. For example you can finish a project by deciding that you don't have time for it and won't continue with it. This relates to 202110181246 Limit WIP to increase throughput.
How does this idea work with creativity learning or the fact that 202110212227 Moderate procrastination facilitates creativity? Creativity learning is about chasing the many interesting things that we see without worrying about becoming an expert in them. This leads to generalized knowledge (T-shaped etc.) #thread and this 202304031221 Breadth of knowledge fuels analogy.1
-
Epstein, D. (2019). Range: How generalists triumph in a specialized world (1st ed.). Macmillan. https://www.goodreads.com/book/show/41795733-range ↩
-
-
The four states of a team
2022-03-24 11:59
It’s hard and slow work, but stay the path to the end. Prioritize one team at a time.[^larson2019]
Falling Behind
- Description — Every week the backlog gets longer, the team is working super hard and not making progress, morale is low, and there’s vocal dissatisfaction from users.
- Fixing and Supporting — Hire net new people. Support by setting expectations with users and stakeholders. Find easy wins to inject optimism.
Treading Water
- Description — Can get critical work done but can’t pay down debt or start new major projects. Morale is a bit better but users know help won’t come when needed.
- Fixing and Supporting — Consolidate effort to finish more things and reduce WIP until the team can start repaying debt. Transfer people from personal view of productivity to team view.
Repaying Debt
- Description — Beginning to snowball when debt is payed down enabling more debt to be payed down.
- Fixing and Supporting — Add time. Your team is working. Find space for them to allow it to continue to work. Try to find overlap with user needs. Prevent backsliding.
Innovating
- Description — Debt is sustainably low, morale is high, and the majority of work is satisfying user needs.