Posts on For my friendgineers
Indirection Vs. Abstraction
Testing Is More Than Preventing Breakage
Stuttering
Optimization
Writing Legacy Code
Who Do You Love?
Practice Makes Perfect?
Power Dynamics
Exsqueeze Me?
The Messy Middle
Speed Vs. Quality
Culture: Not Just For Yogurt
Docs First And The Definition Of Done
System Goals
Superpowers And Optionality
Coding Genies and Code Review
Who Are You Writing To Anyway?
AI Isn’t The Answer
But The Requirements Just Changed
New Code Vs. More Code
Listen to Your Data
What Is Performance Anyway?
Time Passes
Licensed Engineers
Engineers Estimate
Constraints
Slow is Smooth, Smooth is Fast
Government Digital Services
Best Simple System For Now
Respect The Problem
Dijkstra On Bugs
Zero Bugs
Emergency Procedures
Careers are Non-Linear
People Over Process
The Power Of Examples
Biases: The Tyranny Of Or
Simple or Easy?
Governing the Commons
More Error Types
Strong Opinions, Loosely Held - Part 2
Virtuous tests
Code Virtues
Motivation
Comments Are A Smell
Diffusion Of Responsibility
Code Coverage Is Not Enough
The Finish Line Is Just Another Milestone
Home Ownership and Software Updates
Verification First Development
Safety Nets and Guardrails
With Apologies to Uncle Bob
Testing Schedules
Test Classification
I'm Back
On Busyness
That's The Way It Is
The Power Of No
What Are You Waiting For?
You ARE Allowed To Think Before You Type
10 Commandments of Code Review
Optionality
Review Your Own Code Review
Demands ...
The Tao Of Pooh
Primitive Obsession and Boolean Blindness
Deploying vs. Releasing
Let It Flow
K. I. S. S.
Adding Estimates
You Broke What?
The Dude Abides
Skill Vs. Experience
Time Periods
Doing It Well And Truly
A look at 2023
McDonald's
Strong opinions, Loosely Held
Stop Designing
Break It Down, Even At Small Scale
It's A Trap
Visibility
Radiating Information
Perspective
Three More Tells
Games And Agency
Shallow Hurry
Lead With the Why, Not the Way
How Buildings Learn
Seeing Like a State
Code Coverage Is NOT useless
Fly Like An Eagle
Milestones Vs. Steppingstones
Complexity And Congitive Load
Monolith Is A Deployment Strategy, Not An Architecture
0, 1, Many
1 > 2 > 0
What You Do Next
What Are You Testing? II
Release Stabilization
Average Practice
Green Fields And Platforms
What Is Done?
High Quality Quality
A Problem Vs. The Problem
All Models Are Wrong, But Some Are Useful
Mea Culpa, Mea Maxima Culpa
Permission, Approval, and Feedback
Any fool can write code the computer understands.
Enter The Conversation
Let Me Tell You What I Want
The Audience Is Listening
Incident Response
Done Done
Engineering Project Risks
E_INSUFFICIENT_CONTEXT
Don't Be Too DRY
Lies, Damn Lies, And Statistics
Pass or Fail?
Autonomy, Alignment, Purpose, and Urgency
The Immutable Past
The Law Of Instruments
Effective Software Engineers
Breaker Breaker Rubber Duck
Forward Compatability
Another Year In Review
Beware Of Bugs
Happy Winter Solstice
Latkes
What Are You Testing?
FFS
Hello Mother
Properties
The More Things Change
Omission vs Commission
Strange Loop
Tensegrity
More Broken Windows
Readability vs Idioms
The Developer's Journey
One Thing At A Time
What's an Internal Customer?
WIP and Queuing Theory
Built-In Functionality
Consensus vs. Consent
Hey, That's Pretty Clever
Thinking Rocks, Magic, Intent, and TDD
Something Smells ... Primitive
What Is Technical Debt Anyway?
Starting vs. Finishing
What happens when you can't even Tidy First?
Customers vs. Partners
Best Practices and Cargo Cults
Applesauce, Names, and Refactoring
Policies
This Is The Way
TDD Anti-patterns
Monitoring vs. Observability
Traditions
Design Is Iterative
Good Habits
Continuous Delivery
Scream Tests
Automation
TAD vs. TDD
Lint Filters And Testing
Measuring and Managing
Software Development Is A Social Activity
Where do defects come from?
A little housekeeping
Elevator Pitch
Why We Test
Careers Pt 3 - Visualizing Progressions
Action vs. Reaction
Story Splitting
Careers Pt 2 – Breaking Down Scope
Scheduling Time For Maintenance
Error Based Development
The Importance Of (down) Time
Careers Pt 1 - Levels
Faster or Slower?
Planning vs Scheduling
QWAN
Do You See What I See?
Don't just take notes
Hangers and Optimization
Loops and Ratios
Weird Person #2 or First Joiner?
Remediation Surprise
Poka-Yoke
Raspberry vs. Strawberry Jam
Planning and Time Sinks
Are Your KRs Really Tasks?
Heros
Are we there yet?
Tasking
All Aboard
Chesterton's Fence
Moving On
Exit Criteria
Reading Roadmaps
Kinds of Costs
Cupid
More Perspective
Beware Of Just
Perspective 2
Write Your Unit Tests FIRST
Sooner, not Faster
Decisions 2 (if ... elseif ... elseif ... elseif ...)
Is That a Choice or a Decision
Flow
Roller Coasters
Getting Feedback
Efficiency
SPOFs
Back It Up There
2021 In Review
Language Matters
Core Services
Constraints and Creativity
Beware the RAT
OODA and Systems Thinking
Scrape To Taste
Better Code
Walking Through The Code
Ignorance As A Service
More WAT?
ADRs and You
PR Comments
Plans and Planning
Cloth or Die
Continuous Education
Like A Baby
Realms
More Comments
The Tyranny of Or
Legibility
Prioritization vs. Categorization
Problem Solving
(Work) Spaces
Inversion
It Happens
Slacking Off
Experience -> Expertise -> Wisdom
Is That An Error?
Empowered?
Cost Of Time
Engineering Excellence
Context Matters
Measurement
Broken Windows
Drive
DNS Linkage
That's a Drag
Flow and WIP
GetXXX()?
++ / --
Speed
Exploitation
Architecture Isn't Everything
Intro to TDD
Prioritization
Architecture vs. Engineering
Missing Tests
On Decisions
Mutators and Accessors
Another 4 Questions
Simple Fixes
Synergy
Tenure
Autonomy != Anarchy
Perspective
Inspect And Adapt
Obligations
Keeping Your Balance
Testing And Failure
Rocket Science
Global Data(base)
Lone Wolf - Hard Nope
Design By Example
Design By Counter-Example
Complex Vs. Complicated
More Than Cruft
Blink Estimation
Tacit Knowledge
Multiple Projects
Gift Giving
Things We Know (or think we know)
Eliza
Proverbially Speaking
When You Have A Hammer
Wat
OOP at Scale
Empirical Software Engineering
Rice and Garlic
Discipline
NFRs and You
Toasters
Pointers and Errors
Understanding
Best Practices?
Leading Vs. Trailing
Dogma
Flow vs. Utilization
We Like Ike
While You're In There ...
Additive Vs. Subtractive
Monolith to Microservice
Technical Debt and Agility
A 'Making' App
Humor
Naked Returns
Not Just About Crows
README.md
OKRs and You
Hyrum's Law
Managing Expectations
Katas
Context
Marie Kondo It
Lessons From Buckaroo Banzai
Tell Me About A Time When ...
String Style
Creep
Artificial Stupidity
Single Responsibility Principle
Tick-Tock
A Question Of Balance
Experimental Results
You're Sunk
Lumpers and Splitters
Functional Options
The Way
A 'Just' Culture
Optimizing Tests
Oracles
Containment
MBWA vs Gemba
Discoverability vs. Findability
I've got you covered
YAGNI, but ...
Ch-ch-ch-ch-changes
MVP
Strict Product Liability
Kinds Of Tests
Cognitive Load
Charting A Path
The -ilities
NoHello
Precision vs. Accuracy
Poor Man’s Polymorphism
Expediency
Help Me
The Scouting Rule
A Short Pause
Current State
Moving Day, Part 2
Moving Day, Part 1
Captain Crunch
Discoverability
Adapters, Facades, and Decorators - Oh My
YAML
Roadmaps
Momentum
Big Bang Theory
Hindsight
Naming Is Hard
Another Year In Review
Unhappy Customers
Java Isn't Dying
On Branching
RCA
This Would Never Occur To Me
ISQ vs ESQ
Long Live The CLI
Another 'Just No.'
Real World Patterns
Don't Cross The Streams
Experience
Forward Looking
Gooooaaaallll
Is 2020 Over Yet?
Owning Your Code
List Comprehension
Outputs vs. Outcomes
Input Validation
Abstractions vs. Interfaces
Decisions, Decisions, Decisions
Take Time
Error Types
Implicit vs. Explicit
Just No
Hofstadter’s Law
Feedback Please
Thinking Like An Engineer
Ubiquitous Language
Just One More Thing
A Little Architecture
GC At Scale
Thesaurus In Use
Inclusiveness
Time Passes
Radar Time
Commits vs. PRs
To Float Or Not To Float
Your Personal Board
Stories vs. Tasks
A Fiddler On The Roof
Uncle Bob Says
Branch vs
Easter Eggs
Silos vs. Ownership
Agile, 3X, And 4X
Context
Now You Have Two Problems
Pass By Value
It's All Around Scope
Git Bisect and Fruit
Interviewing Up
Not Even Wrong
Happy Birthday
OKRs and KPIs
OOP Isn't Dead
What is Scrum?
How Big Is That File Anyway?
Excuses, Excuses
Code Golf
Kata Time
Visualizing Code
Multiple Oopsies
Hiring
Flexibility
What Would You Say... Ya Do Here?
Github And VSCode
To Rewrite Or To Not Rewrite
Semantics
Rockall
In Defense Of Agile
Pick 2
Cycles
Circle Of Life
Linkapolooza
No-Code
SESE
Dependency Injection - NOT
Ideas In The Shower
XY Problem
Good Design
What I'm NOT Doing
Planting A Tree
Situational Awareness
Careers
DDD and Microservices
Kicking It Off
C Shell, Z Shell ...
Ownership
Hello. Who Are You?
A Scrolling We Will Go
Data, Information, Knowledge, And Wisdom
Don't Always Minimize WIP
NO
Natural Science
Tag, You're It
Branching
Why Are We Doing This
Unintended Consequences
Target Fixation
Multi-Mon
Inconsistent Consistencies
Chaos
Capabilities
Vorlons vs. Shadows
POC vs MVP
Under Construction
One Step At A Time
How Old Is Old
Zip It
The First Year
Inheriting Code
How Severe Is Severe
What's Old Is New Again
Backing Up
Getting Started
Know Your Tools
Why Are An Elephant's Ears So Big?
Crawl, Walk, Run
Eventual Consistency
TIL ...
Abstract vs Interface
Toward A Better PM
Logging
Avoiding The Wat
6 Stages Of Debugging
Just Keep Learning
In Defense Of Laziness
Solving Problem Solving
Velocity Is Internal
Everything Can't Be P1
Swallowing The Fish
Pictures Or It Didn't Happen
Optimization
Cost Of Control
The Art Of Computer Programming
Scale Out, Not Up
IP Tables To The Rescue
The 3 Tells
How Much Config Is Enough?
Your Bug, Your Customer's Feature
Disk Errors
Star Wars Security
What's In A URI?
Else, Switch, And Map
Fear, Courage, and Professionalism
80/20 Rule
Awareness
On Language
Priority -1
It Depends
Real Engineering
Outdoor Sports
Murder Mystery Theater - Acting All Roles
GIGO
Test It Again Sam
Syntax Matters
Rubber Ducky, You're The One
Remote Extreme Programming
Bob The Builder
Alles Ist In Ordnung
Time For A Walk
Staying In Sync
Sharding Shouldn't Be Hard
To Test Or Not To Test
Go Big, Go Blue
Concurrency And Parallelism
No UML
Overcommunicating
I Feel You Man
Shiny Happy People
Keeping It Clean
On Conflict
Naming Is Still Hard
Circles
Intro To Architecture
Write It Down 2
Dates Are Hard Too
For Want Of A Nail
Generally Speaking
Guides
Gazinta's and Gazouta's
Cycles Of History
Committed
Stable Code
Architect's Newsletter
Foundations
Onboarding
Incompatible Markdown
WIP It Good
Scope Of Influence
Breaking New Ground
Improve The Daily Work
Dev Ops Book Club
Good Fences Make Good Neighbors
The More Things Change
Rightsizing
FI/RI, Flag, Merge, Rebase, Trunk
2038 == 2000
Architecture vs Design
Engineer vs Technician
Let It Crash
Innovative Data Transfer
GeoStatisticians vs Default Values
Owning Your Comments
Managing Your Inbox
From BeyondCorp to BeyondProd
Technical Debt And Inflation
Panzer Is NOT German For Tank
Quality Is Job #1
Mini-Maxing Your Java
Shift-Left Is Silly
The Wisdom Of James Mickens
Hofstadter's Law
Surprise And Delight
Project Euler
Debugging
Always Learning
Naming Things
Compatibility Mode
Blameless Post-Incident-Review
Counting From Zero
APIs Are For Life
Random Is Hard
The Paper Of Record
The Year In Review
Programming In The Dark
Lessons From Ancient Rome
Failure Modes
Wall Of Perl
On Testing
That's The British Spelling Of ...
Distributed System Superpowers
How Do I Use This Thing?
I Need A REST
What's Your Charter
I'll Tell You Later
DSLs and You
You Are Not Paid To Write Code
The Maintainer
Kilobytes, Megabytes, Gigabytes and Copy-Pasta
Cautionary Tales
Kissenger, Schmidt, and Huttenlocher, and AI
Engineering Principles
PM Is More Than Provider Of Meals
Prediction
Makefiles
Imposter Syndrome, Dunning–Kruger, or Just Do It
Hello vs. NoHello
Asking For Help
Talking To Customers
The Juice Shop
What Are You Reading?
Options
Assumptions
Silos
Software As A Service
GOLANG Oddities
The Gift Of Feedback
Language Security
Growing
Doc Culture
SLOs, SLIs, SLAs
Open Source
One On One Meetings
Old Passwords
Writing It Down
Pattern Matching
Lego
In The Beginning Was The Command Line
Statistics
WAT?
Languages
Platforms
Kaizen
Monoliths vs Microservices
Software Architecture
Following The Vision
Architecture is just software design at scale
Is It Useful
You Get What You Inspect, Not What You Expect
Clean Code
Gosling On Open Source
Strlen Is Surprisingly Hard
Work/Life Balance
Design Paradigms
Campus Recruiting
Tracing
Huh?
Refactoring
Security
Unicode
Knowledge Gaps
Big Data
Meetings
What's In A Name?
Asking Good Questions
SESE Or Not?
Lego Design Sprints
Things You Should Never Do
Lint
Python Vs. Go Vs. Rust
Code Reviews
Building And Scaling A High Performing Culture
Metaprogramming
Beyond Accidental Architecture
Pipes
State Machines
XP
Won't You Be My Neighbor
Interface Driven
Control Theory
Imperative vs. Declarative Programming
Worse is Better
Tech Debt
Customer Focus
Orm?
Errors Vs. Exceptions
Apollo 11
Try?
Hard Things
10X Engineer?
Bounded Chocolate Contexts
Link to Links
SRE
Limiting Cognitive Load
Who Does Architecture
Intro to AI/ML
Learning From Others
Vim Tips
Conway's Law
Getting Sleep
Linux Containers
Obscuring Complexity
The Old New Thing
Write It Down
Cargo Cult
Correctness Vs. Change