Skip to content

Commit dbc6a55

Browse files
committed
A few updates
- Look Outside Your Immediate Task, Maintain the Bigger Picture - Understand and Respect the Customer - Move Communication higher - Loop in Experts for Important Actions - Keep Everyone in the Loop
1 parent b0bc2bc commit dbc6a55

File tree

1 file changed

+185
-112
lines changed

1 file changed

+185
-112
lines changed

README.md

Lines changed: 185 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,29 @@ arbitrarily. Please don't expect it to be polished.
1919
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
2020
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
2121

22-
2322
- [Day-to-Day Work of a Software Engineer](#day-to-day-work-of-a-software-engineer)
2423
- [Leave Work Better: Improving Today for a Simpler Tomorrow](#leave-work-better-improving-today-for-a-simpler-tomorrow)
2524
- [Fast Feedback](#fast-feedback)
2625
- [Start Simple](#start-simple)
27-
- [Habitability](#habitability)
26+
- [Look Outside Your Immediate Task, Maintain the Bigger Picture](#look-outside-your-immediate-task-maintain-the-bigger-picture)
2827
- [Avoid Work That Can Be Avoided](#avoid-work-that-can-be-avoided)
28+
- [Understand and Respect the Customer](#understand-and-respect-the-customer)
2929
- [Choose Where to Innovate (Carefully)](#choose-where-to-innovate-carefully)
3030
- [Automate everything](#automate-everything)
3131
- [Quick exploration](#quick-exploration)
3232
- [Task Sequencing: Group Related Activities for Efficiency](#task-sequencing-group-related-activities-for-efficiency)
3333
- [Strive for Clarity](#strive-for-clarity)
3434
- [Everything Explicit. No Magic.](#everything-explicit-no-magic)
35-
- [Close the loops](#close-the-loops)
35+
- [Close the loops, acknowledge communication](#close-the-loops-acknowledge-communication)
3636
- [Learn from Lessons](#learn-from-lessons)
3737
- [Use Diagrams](#use-diagrams)
38+
- [Communication and Teamwork](#communication-and-teamwork)
39+
- [Agile Software Development Requires Strong Social Network](#agile-software-development-requires-strong-social-network)
40+
- [Sending Status Updates to the Team](#sending-status-updates-to-the-team)
41+
- [Keep Everyone in the Loop](#keep-everyone-in-the-loop)
42+
- [Recognize the ideas and achievements of your colleagues](#recognize-the-ideas-and-achievements-of-your-colleagues)
43+
- [Professional content](#professional-content)
44+
- [Loop in Experts for Important Actions](#loop-in-experts-for-important-actions)
3845
- [Complexity and Cognitive Load](#complexity-and-cognitive-load)
3946
- [Solving Right Problems](#solving-right-problems)
4047
- [Solutions are Context-Driven](#solutions-are-context-driven)
@@ -50,6 +57,7 @@ arbitrarily. Please don't expect it to be polished.
5057
- [Design](#design)
5158
- [Poor Abstraction](#poor-abstraction)
5259
- [Cost of Abstraction](#cost-of-abstraction)
60+
- [Habitability](#habitability)
5361
- [Hard Feature](#hard-feature)
5462
- [True Name](#true-name)
5563
- [One Pattern per Class](#one-pattern-per-class)
@@ -128,12 +136,6 @@ arbitrarily. Please don't expect it to be polished.
128136
- [Capturing Meeting Results](#capturing-meeting-results)
129137
- [Briefing In](#briefing-in)
130138
- [Sharing Screen & Presenting Material](#sharing-screen--presenting-material)
131-
- [Communication and Teamwork](#communication-and-teamwork)
132-
- [Agile Software Development Requires Strong Social Network](#agile-software-development-requires-strong-social-network)
133-
- [Sending Status Updates to the Team](#sending-status-updates-to-the-team)
134-
- [Keep Everyone in the Loop](#keep-everyone-in-the-loop)
135-
- [Recognize the ideas and achievements of your colleagues](#recognize-the-ideas-and-achievements-of-your-colleagues)
136-
- [Professional content](#professional-content)
137139
- [Systems](#systems)
138140
- [Good enough is often best](#good-enough-is-often-best)
139141
- [Designing Systems for Effective Work](#designing-systems-for-effective-work)
@@ -199,22 +201,34 @@ See also Kent Beck's
199201
[Test-Driven Development book](https://en.wikipedia.org/wiki/Test-Driven_Development_by_Example)
200202
where this approach of doing simple things is explained at great depth.
201203

202-
### Habitability
204+
### Look Outside Your Immediate Task, Maintain the Bigger Picture
203205

204-
Habitable software is better than perfect software.
206+
- When starting any task, take time to understand the rationale behind it (the
207+
WHY).
208+
- See how the task connects to broader goals, milestones, or parallel efforts.
209+
It may be part of a chain where upstream or downstream effects matter.
210+
- Maintain awareness of the bigger picture. A task that seems minor may be a
211+
critical blocker for a more visible effort. Conversely, something that appears
212+
simple might turn out to be time-consuming and affect teammates or
213+
dependencies.
214+
- With a deep understanding of the task, you will start seeing how different
215+
strategies (e.g., Strategy X vs. Strategy Y) can lead to different outcomes.
216+
This kind of insight allows you to:
205217

206-
[Richard Gabriel - Patterns of Software, Habitability and Piecemeal Growth](https://www.dreamsongs.com/Files/PatternsOfSoftware.pdf).
218+
- Escalate risks early.
219+
- Spot opportunities.
220+
- Align better with the system's or team's needs.
207221

208-
> Habitability is the characteristic of source code that enables programmers,
209-
> coders, bug-fixers, and people coming to the code later in its life to
210-
> understand its construction and intentions and to change it comfortably and
211-
> confidently. Either there is more to habitability than clarity or the two
212-
> characteristics are different...
222+
A practical application of this mindset in documentation writing: start each
223+
technical page with a clear problem statement and a description of its
224+
surrounding context.
213225

214-
> ...Habitability makes a place livable, like home. And this is what we want in
215-
> software – that developers feel at home, can place their hands on any item
216-
> without having to think deeply about where it is. It's something like clarity,
217-
> but clarity is too hard to come by.
226+
- Who or what benefits if this task is completed?
227+
- Does it enable a system, a process, or a team?
228+
- What is the strategic value of solving it?
229+
230+
Framing the problem this way helps readers, especially future engineers, orient
231+
themselves and understand the significance of the solution that follows.
218232

219233
### Avoid Work That Can Be Avoided
220234

@@ -238,6 +252,22 @@ off-the-shelf system.
238252
In software development, there's a well-known saying: "The best code is the code
239253
that is never written".
240254

255+
### Understand and Respect the Customer
256+
257+
Take time to deeply understand and respect the customer, both the people and the
258+
domain they operate in. Immerse yourself in their context. Know what they care
259+
about, what problems they face, and how your work fits into their world.
260+
261+
When things go smoothly, this understanding helps you deliver real value. When
262+
things get challenging, such as when delays or technical setbacks arise, this
263+
relationship matters even more.
264+
265+
In such situations, transparency is better than defensiveness. A clear and
266+
honest update, even when delivering bad news, builds trust. Customers almost
267+
always prefer being informed early over being surprised later. A transparent
268+
explanation of issues, trade-offs, and risks shows respect for their time,
269+
planning, and decision-making.
270+
241271
### Choose Where to Innovate (Carefully)
242272

243273
Innovate where your business's focus lies and stay conservative with other areas
@@ -270,8 +300,8 @@ locate the most relevant section rather than reading from A to Z.
270300
When exploring with code, a combination of quick-and-dirty scripts can sometimes
271301
create miracles, giving immediate and valuable insights. Instead of discarding
272302
an idea because it's complex and time-consuming, try implementing a very basic
273-
version firstit might provide useful insights or even a functional solution
274-
right away.
303+
version first because it might provide useful insights or even a functional
304+
solution right away.
275305

276306
### Task Sequencing: Group Related Activities for Efficiency
277307

@@ -409,6 +439,121 @@ express your concepts with the fewest visual elements possible. Creating
409439
diagrams that are too visually complex hinders understanding and reduces their
410440
effectiveness.
411441

442+
## Communication and Teamwork
443+
444+
### Agile Software Development Requires Strong Social Network
445+
446+
**Agile Software Development Requires Strong Social Network**. This statement is
447+
a generalization: This idea has been there from the beginning and since the
448+
inception of the [Agile Manifesto](https://agilemanifesto.org/), but the
449+
following quote from Kent Beck helps to pinpoint it very clearly:
450+
451+
> In The Forest (more specifically on an XP-style team), we handle communication
452+
> of design & implementation multiple ways:
453+
>
454+
> - Communicative code.
455+
> - Readable & predictive tests.
456+
> - A strong social network.
457+
>
458+
> It's only when there is a large audience for stable information (such as the
459+
> JUnit API) that we resort to separate documentation.
460+
461+
See
462+
[Kent Beck - Anatomy of Oscillation](https://tidyfirst.substack.com/p/anatomy-of-oscillation).
463+
464+
### Sending Status Updates to the Team
465+
466+
Software engineering teams often communicate daily via chat. A proven pattern is
467+
for each team member to send updates about their work, allowing the entire team
468+
to see these messages.
469+
470+
Examples of such messages include:
471+
472+
- "Task X is done, here's the PR link. @A and @B, could you take a look?"
473+
- "This week my focus is... Next, I am going to work on..."
474+
- "I see your PR, but I'm working on something else."
475+
- "What does the team think about introducing the coding convention ABC?"
476+
477+
While this may seem obvious for some teams, there are others where daily chats
478+
are completely silent, reflecting a lack of communication between peers
479+
throughout the day. When messages are exchanged, it creates a certain "pulse"
480+
within the team, signaling that the group is actively working on meaningful
481+
tasks and is open to discussion, iteration, and improvement.
482+
483+
This activity not only serves an informational purpose (increasing awareness)
484+
but also has learning, motivational, and even entertaining aspects.
485+
486+
### Keep Everyone in the Loop
487+
488+
Share regular updates with the people who rely on your work: your manager,
489+
teammates, or anyone following your technical progress. In fast-moving projects,
490+
keeping others informed helps avoid surprises and keeps everyone aligned.
491+
492+
In an office setting, updates often happen naturally. If the team is
493+
well-connected, these updates may happen through casual conversations or small
494+
talk over lunch. This kind of informal communication spreads useful information
495+
without needing formal meetings.
496+
497+
One big advantage: by the time your work reaches a review—like a code review,
498+
documentation review, or a project milestone—people will already know about it
499+
and may have given input earlier. This makes reviews faster, smoother, and less
500+
stressful.
501+
502+
Another reason to talk about your work: visibility and recognition. Others might
503+
not know:
504+
505+
- what challenges you re facing
506+
- how long something might take
507+
- how your work connects to theirs.
508+
509+
Your teammates are often busy with their own tasks. Clear communication helps
510+
them understand what you are doing and helps your work get noticed and
511+
appreciated.
512+
513+
Stay connected. Stay aligned.
514+
515+
### Recognize the ideas and achievements of your colleagues
516+
517+
Teamwork involves contributions from all team members. Whether you are a leader
518+
or an individual contributor, it is essential to give credit where it's due when
519+
expressing an idea that you know was authored by someone else.
520+
521+
This is a good practice because it fosters trust and respect within the team,
522+
encouraging open collaboration and the free exchange of ideas. Recognizing
523+
others' contributions also boosts morale, motivates continued input, and
524+
strengthens the overall effectiveness of the team.
525+
526+
An anti-pattern is when the names of the original authors are omitted, and the
527+
work is presented in the first person, either intentionally or unintentionally,
528+
as if the content were one's own.
529+
530+
### Professional content
531+
532+
When writing an email or chat message, even if addressed to a select group,
533+
consider composing it in a way that it would remain professional and consistent
534+
if shared with a larger or unintended audience. Avoid using vague references
535+
like "we" and "they", especially when referring to internal teams or external
536+
parties such as customers. Refrain from using negative sentences or excessive
537+
emotion. Your content should be polished and ready to be forwarded by anyone, at
538+
any time, whether intentionally or unintentionally.
539+
540+
### Loop in Experts for Important Actions
541+
542+
When making an important decision, involve the right experts. It is better to
543+
include too many people than to miss someone who should have been part of it.
544+
545+
If you are writing an email or message that speaks for your team or group, check
546+
it with others first. Make sure the message reflects what everyone agrees on.
547+
548+
When a message is aligned like this, it:
549+
550+
- Stays strong even if people question it.
551+
- Builds trust inside and outside the team.
552+
- Shows that the team is working together.
553+
554+
Taking the time to check with others makes your message clearer and more
555+
powerful in the long run.
556+
412557
## Complexity and Cognitive Load
413558

414559
> "Complexity can be defined as intellectual unmanageability" (Nancy Leveson,
@@ -607,6 +752,23 @@ Those responsible for maintaining such systems often find themselves
607752
disentangling unnecessary complexity, seeking a new balance that restores
608753
manageability by replacing or introducing more adequate abstractions.
609754

755+
### Habitability
756+
757+
Habitable software is better than perfect software.
758+
759+
[Richard Gabriel - Patterns of Software, Habitability and Piecemeal Growth](https://www.dreamsongs.com/Files/PatternsOfSoftware.pdf).
760+
761+
> Habitability is the characteristic of source code that enables programmers,
762+
> coders, bug-fixers, and people coming to the code later in its life to
763+
> understand its construction and intentions and to change it comfortably and
764+
> confidently. Either there is more to habitability than clarity or the two
765+
> characteristics are different...
766+
767+
> ...Habitability makes a place livable, like home. And this is what we want in
768+
> software – that developers feel at home, can place their hands on any item
769+
> without having to think deeply about where it is. It's something like clarity,
770+
> but clarity is too hard to come by.
771+
610772
### Hard Feature
611773

612774
If a feature is hard to implement it might indicate that it is something wrong
@@ -1447,95 +1609,6 @@ Common pitfalls:
14471609
- If your team is presenting to an external party, align on the materials
14481610
beforehand to ensure consistency in messaging.
14491611

1450-
## Communication and Teamwork
1451-
1452-
### Agile Software Development Requires Strong Social Network
1453-
1454-
**Agile Software Development Requires Strong Social Network**. This statement is
1455-
a generalization: This idea has been there from the beginning and since the
1456-
inception of the [Agile Manifesto](https://agilemanifesto.org/), but the
1457-
following quote from Kent Beck helps to pinpoint it very clearly:
1458-
1459-
> In The Forest (more specifically on an XP-style team), we handle communication
1460-
> of design & implementation multiple ways:
1461-
>
1462-
> - Communicative code.
1463-
> - Readable & predictive tests.
1464-
> - A strong social network.
1465-
>
1466-
> It's only when there is a large audience for stable information (such as the
1467-
> JUnit API) that we resort to separate documentation.
1468-
1469-
See
1470-
[Kent Beck - Anatomy of Oscillation](https://tidyfirst.substack.com/p/anatomy-of-oscillation).
1471-
1472-
### Sending Status Updates to the Team
1473-
1474-
Software engineering teams often communicate daily via chat. A proven pattern is
1475-
for each team member to send updates about their work, allowing the entire team
1476-
to see these messages.
1477-
1478-
Examples of such messages include:
1479-
1480-
- "Task X is done, here's the PR link. @A and @B, could you take a look?"
1481-
- "This week my focus is... Next, I am going to work on..."
1482-
- "I see your PR, but I'm working on something else."
1483-
- "What does the team think about introducing the coding convention ABC?"
1484-
1485-
While this may seem obvious for some teams, there are others where daily chats
1486-
are completely silent, reflecting a lack of communication between peers
1487-
throughout the day. When messages are exchanged, it creates a certain "pulse"
1488-
within the team, signaling that the group is actively working on meaningful
1489-
tasks and is open to discussion, iteration, and improvement.
1490-
1491-
This activity not only serves an informational purpose (increasing awareness)
1492-
but also has learning, motivational, and even entertaining aspects.
1493-
1494-
### Keep Everyone in the Loop
1495-
1496-
Provide frequent updates to those who rely on your work – your manager,
1497-
teammates, or anyone following your technical progress. In fast-paced
1498-
development, keeping others informed helps maintain alignment and prevent
1499-
surprises.
1500-
1501-
In an office setting, updates often happen naturally. If the team is
1502-
well-connected, they can happen during casual conversations or even small talk
1503-
over lunch. This kind of informal communication spreads information quickly
1504-
without the need for formal status meetings.
1505-
1506-
A key benefit of this approach is that by the time your work reaches a review
1507-
stage – whether a code review, documentation review, or project
1508-
milestone—everyone will already be familiar with it and may have contributed
1509-
their input. This reduces friction, speeds up approvals, and makes collaboration
1510-
smoother.
1511-
1512-
Stay aligned with your team.
1513-
1514-
### Recognize the ideas and achievements of your colleagues
1515-
1516-
Teamwork involves contributions from all team members. Whether you are a leader
1517-
or an individual contributor, it is essential to give credit where it's due when
1518-
expressing an idea that you know was authored by someone else.
1519-
1520-
This is a good practice because it fosters trust and respect within the team,
1521-
encouraging open collaboration and the free exchange of ideas. Recognizing
1522-
others' contributions also boosts morale, motivates continued input, and
1523-
strengthens the overall effectiveness of the team.
1524-
1525-
An anti-pattern is when the names of the original authors are omitted, and the
1526-
work is presented in the first person, either intentionally or unintentionally,
1527-
as if the content were one's own.
1528-
1529-
### Professional content
1530-
1531-
When writing an email or chat message, even if addressed to a select group,
1532-
consider composing it in a way that it would remain professional and consistent
1533-
if shared with a larger or unintended audience. Avoid using vague references
1534-
like "we" and "they", especially when referring to internal teams or external
1535-
parties such as customers. Refrain from using negative sentences or excessive
1536-
emotion. Your content should be polished and ready to be forwarded by anyone, at
1537-
any time, whether intentionally or unintentionally.
1538-
15391612
## Systems
15401613

15411614
### Good enough is often best

0 commit comments

Comments
 (0)