~ Posts ~

On Busyness

Being busier is better, right? Wrong. Or at least almost never. The trick is knowing the which situation you’re in.

That's The Way It Is

How you describe a situation has a lot of impact on how you approch it. Do you take away or give yourself agency?

The Power Of No

Sometimes the fastest way forward is to say No to doing something. The trick is knowing when to say no.

What Are You Waiting For?

Are you letting low priority work hold higher priority work hostage? If you are, are you doing it on purpose, or by mistake?

You ARE Allowed To Think Before You Type

Test driven development, Extreme Programming, and many other approaches encourage us to start typing in code, either as a test or as functionality. That’s good advice, but you should never start coding blindly.

10 Commandments of Code Review

Code reviews are part of almost all development workflows. How you write them, read them, and respond to them says a lot about a team’s culture. It’s also a way to adjust a team’s culture. How you use them is up to you.

Optionality

Optionality is much more than having options. It’s about making the future possible instead of boxing yourself in.

Review Your Own Code Review

Don’t just review it, review it BEFORE you show it to anyone. It’s good for you, it’s good for them, and it’s good for your code.

Demands ...

Providing customer value is what we’re all here for. Unfortunately, it’s not the only thing we end up doing because of demands on our time.

The Tao Of Pooh

Winnie the Pooh is just over 100 years old. You wouldn’t think he has much to say about software development, let alone extreme programming, but Pooh’s approach has a lot to teach us. And not just in development.

Primitive Obsession and Boolean Blindness

George Boole brought us Boolean logic. There’s tremendous benefit in using it. But sometimes, it can also blind you to a deeper truth.

Deploying vs. Releasing

We deploy code and release features. We usually assume those two things are the same, but are they really? And should they be?

Let It Flow

Do you want to optimize for is getting things done or for doing things? That’s a pretty subtle difference, but it’s an important one.

K. I. S. S.

We think we want a one size fits all solution because it will be easier and save time. But it never does.

Adding Estimates

If you can subtract two times and take the average of a bunch of times, why can’t you add times? And what does that have to do with estimation anyway?

You Broke What?

It happens to everyone. What happens next is what’s important. That’s where the blames post-mortem comes in

The Dude Abides

The Big Lebowski is more than a comedy or whodoneit. It’s a commentary on life. And the inspiration for Dude’s Law.

Skill Vs. Experience

Knowing how to do something doesn’t mean you know when or where you should do it. Or even if you should. That’s the difference between skill and experience.

Time Periods

People want estimates. Or they say they do. What they really want is predictability and value. How can you provide both when you just don’t know enough?

Doing It Well And Truly

No amount of talking about doing something will get it done. To get it done, you have to do the thing, whatever it is.

A look at 2023

Every year brings changes. The goal is to learn along the way. Here’s some learnings from 2023.

McDonald's

Sometimes you just get stuck making a decision. How can you help your team move forward?

Strong opinions, Loosely Held

Have an opinion. Defend it. Defend other’s options. Be willing to change your mind.

Stop Designing

Never drive faster than you can see. The trick is to know how fast that is.

Break It Down, Even At Small Scale

Similar to MMMSS, you can also break your tasks down further.

It's A Trap

All languages are not equal. You should use the language you’re using.

Visibility

You need more than the ability to do the work. You need to be seen doing the work.

Radiating Information

No one reads those automated status emails. You’ve got to radiate the information

Perspective

Where you are influences not just what you see, but how you see it.

Three More Tells

Tell em 3 times applies to more than presentations. It works in design too.

Games And Agency

What if we were to think of the role of engineering manager as equivalent to a dungeon master? How does that lens change how we see things?

Shallow Hurry

The hurrieder I go, the behinder I get.

Lead With the Why, Not the Way

Don’t just tell people what to do. Help them understand why they want to do it and how it’s good for them (and everyone).

How Buildings Learn

Can you design for change and re-use? Should you? Isn’t doing one thing and doing it well the goal?

Seeing Like a State

It’s very easy to fall into the habit of seeing like a state. It’s also not very helpful.

Code Coverage Is NOT useless

Clickbait titles aside, how you use your signals is important. Not just for measuring code coverage.

Fly Like An Eagle

Time is hard. When you find out about something is just as important as when it actually happened. So you need to track ALL of the details.

Milestones Vs. Steppingstones

You need to know where to step before you can worry about how far you’ve come.

Complexity And Congitive Load

You can only keep so many things in your head at once. The trick is making sure they’re the right ones.

Monolith Is A Deployment Strategy, Not An Architecture

It’s important to distinguish the how from the what and the why.

0, 1, Many

There are an infinite number of integers. How many do you use in your thinking and planning?

1 > 2 > 0

How can 2 be between 1 and 0?

What You Do Next

What can Jazz teach us about the art of software development.

What Are You Testing? II

Because why you test is as important as what you test.

Release Stabilization

Releasing with stablity is good. Waiting for release to get stability, not so much…

Average Practice

Eventually what was a best practice in one situation turns into an average practice for the industry.

Green Fields And Platforms

There might not be any existing code for your new platform, but that doesn’t mean you’re free from constraints

What Is Done?

You can’t be done unless you know what done means. So how do you know?

High Quality Quality

When you say you want quality software, what are you really asking for, and how can you get it?

A Problem Vs. The Problem

You need to make sure you’re solving the right problem at the right time.

All Models Are Wrong, But Some Are Useful

The trick is to know which models to use, and when to use them.

Mea Culpa, Mea Maxima Culpa

I got my attribution wrong, and you probably did too, but the point is just as valid.

Permission, Approval, and Feedback

You might need permission, but feedback is more valuable.

Any fool can write code the computer understands.

You can write bad code in any language. You can write good code in any language. The choice is yours.

Enter The Conversation

APIs are a conversatin with your user. Meet them where they are.

Let Me Tell You What I Want

User stories are not about what to do, they’re about how to add value.

The Audience Is Listening

Of course the audience is listening. So what are you doing?

Incident Response

There’s a lot to learn from aviation. Particularly around incident management

Done Done

Knowing when you’re done is just as important as knowning what to do.

Engineering Project Risks

There are many types of risks for a software project. New projects/teams have their own in addition.

E_INSUFFICIENT_CONTEXT

It Depends is human for the lack of context error code.

Don't Be Too DRY

It’s good to be DRY, but you can have too much of a good thing

Lies, Damn Lies, And Statistics

Be careful when looking at aggregate data. If can be hiding what you need to see.

Pass or Fail?

Why do students pass or fail tests, but software tests pass or fail?

Autonomy, Alignment, Purpose, and Urgency

What are these forces, and how do they interact?

The Immutable Past

You might have been wrong, and you can always make new choices, but the decision process you used yesterday doesn’t change.

The Law Of Instruments

How you see a problem is just as much of a bias as how you respond to it.

Effective Software Engineers

Perhaps oddly, perhaps not, the traits of an effective software engineer have nothing to do with software

Breaker Breaker Rubber Duck

You can rubber duck too much, but please, take a moment to think about the problem before you give up trying.

Forward Compatability

You can’t guarantee forward compatibility, but you CAN make it easier

Beware Of Bugs

How can something be proven correct and still have bugs?

Happy Winter Solstice

What does it really mean when we say it’s the shortest day?

Latkes

Throughput, Latency, Batch Size, and Latkes

What Are You Testing?

Because what you test is as important as how you test it.

FFS

Sometimes you need to say it out loud and to others.

Hello Mother

If you ever wanted to know where it all came from, this is where.

Properties

Testing and the essential attributes of what you’re testing

The More Things Change

Cycle time is ALWAYS important

Omission vs Commission

Some bugs are caused by the things you do, some are caused by the things you don’t do.

Strange Loop

A small conference with a big picture

Tensegrity

Balancing forces can make for apparent paradoxes

More Broken Windows

Turns out, there is proof that technical debt breeds more tech debt

Readability vs Idioms

Just what is readability anyway?

The Developer's Journey

Is the developer’s journey one of the 7 basic plots?

One Thing At A Time

Trying multiple things at once is NOT faster

What's an Internal Customer?

How to get from someone from partner to customer

WIP and Queuing Theory

Shipping sooner by starting less.

Built-In Functionality

Just because you can shell out and call a script, that doesn’t mean you should.

Consensus vs. Consent

There IS a difference between the two. Make sure you’re going for the one you need.

Hey, That's Pretty Clever

That’s pretty clever, so fix it.

Thinking Rocks, Magic, Intent, and TDD

Software development is more than a little like magic.

Something Smells ... Primitive

Primitive obsession sneaks in when you least expect it and makes things worse.

What Is Technical Debt Anyway?

Technical debt is not doing a bad job now and fixing it later.

Starting vs. Finishing

Why does focusing on finishing rather than starting get more done?

What happens when you can't even Tidy First?

What is Refactoring and when do you do it?

Customers vs. Partners

Do you have customers or partners? The difference really does matter.

Best Practices and Cargo Cults

Don’t blindly copy what others, even successful others, are doing.

Applesauce, Names, and Refactoring

Naming is important. Even if it’s applesauce

Policies

What are those policies for? Why do we have them and how long should they live?

This Is The Way

60 years in, the Unix way still makes a lot of sense

TDD Anti-patterns

Some kinds of tests you just don’t want to write

Monitoring vs. Observability

Monitoring and Observability are NOT the same thing.

Traditions

Tradition is more than just doing what your ancestors did

Design Is Iterative

As long ago as 1968, BDUF was a bad idea.

Good Habits

Good habits are good, but there can be too much of a good thing

Continuous Delivery

There’s a difference between delivering often and continuous delivery

Scream Tests

How do you REALLY know if something is unused?

Automation

Scripting is only part of automation

TAD vs. TDD

There is a difference between testing before and after coding

Lint Filters And Testing

Tests are like cleaning the lint filter on your dryer

Measuring and Managing

There are some quotes you know that just ain’t so

Software Development Is A Social Activity

We aspire to uncouple with clear boundaries, but we need to work together

Where do defects come from?

Is it someone’s fault, the system’s fault, or a balance of both?

A little housekeeping

Sometimes things need to move around a little

Elevator Pitch

What’s an elevator pitch, and why is it important?

Why We Test

The purpose of testing is to increase confidence for stakeholders through evidence.

Careers Pt 3 - Visualizing Progressions

Visualizing your career progression to manage your career

Action vs. Reaction

Bias for action is thoughtful. Bias for reaction gets you in trouble

Story Splitting

User stories need to live in the Goldilocks zone. Not too big, not too small

Careers Pt 2 – Breaking Down Scope

Understanding what scope of influence means in practice

Scheduling Time For Maintenance

Even thought the 1’s never get worn down, software needs maintenance too.

Error Based Development

If you can’t change the error how can you fix it?

The Importance Of (down) Time

Why taking a break is so important to having an impact

Careers Pt 1 - Levels

Level is really a proxy of scope of influence

Planning and Time Sinks

Why is planning so hard?

Heros

It’s important to step up when there’s a big problem. But the real hero is the person who sees the small problem and prevents the catastrophe.

Measurement

There are lots of management quotes. Make sure you are using the full quote, not just part of it.

Flow and WIP

Doing too many things at once will slow you down.

Wat

Flow vs. Utilization

Which one you optimize makes a HUGE difference

MVP

RCA

Code Golf

In golf you want fewer strokes. In code, that’s rarely the case.

NO

PM Is More Than Provider Of Meals

Just what do you mean by PM anyway?

XP

SRE