21st Century Baby Brain
I recently became a Dad (for the first time). We don’t want to share photos online but trust me — this baby looks great. Beautiful blue eyes matched with amber hair, and a screaming cry that bursts both eardrums! While on paternity leave for the last two months we’ve had to overcome a lot of challenges. A lot of these make me reflect on the way I operate as a software engineer of nearly a decade now, or even as a human-being of thirty years.
No such thing as good advice
The art of raising a child comes with a lot of advice. Some of it scientifically based, others from years of experience, and some just plain misguided or wrong. In truth these unique little creatures have many needs, and you can't always apply the right advice at the right time. While they may share a lot of themes each newborn still has a unique experience. Our ability to read these cues (or miss them completely) usually becomes the cause of a lot of our day-to-day frustrations.
When we meet challenges in our work projects we try to fall back on the rules we know. As developers, we have a special relationship with rules because we spend most of our days searching for and implementing them. Best practices can even become our identities as we spend our careers advocating for them. When those rules don't work we get frustrated because things should get better, because we did everything “right”. In those situations people often double down, we conclude that we just didn't implement our rules properly. In truth the rules don't always work. Good advice can fail in the wrong moment, or it solves the wrong problem.
In a lot of situations our little one, and us, find ourselves frustrated because we don't understand each other. Programming errors always have a cause (even when they come from unexpected places). You can debug a program to get to the root of the problem, but sadly you can't debug a newborn baby. You can't debug a human adult either. Despite this we still try to apply our rules to everyday interactions in a work project. We want to codify our processes because it makes us feel better — even when the Agile manifesto tells us to put “people over processes”. Instead, if we listened to the right cues we might avoid a lot of disagreements over the best way to approach a project.
You can't spoil a baby
Something you should hear a lot as a new parent — “You can’t spoil a baby”. Newborn babies need to know you hear their cries and will appear when you need them. In those early days they need as much reassurance and love as possible. This stays true for their childhood, teenage years, and beyond. Children need to know that you understand and accept their feelings, even if you don’t agree with them. This allows them to build better emotional understanding and therefore tools to manage their emotions later in life. I think this stays true for adults too, we need to approach conflict in life with love and understanding. Everyone in the room should want to achieve the best outcome and come together in good faith. By showing kindness to each other we make it so that people enjoy working with us, and in turn has the desire do good work.
No walking away
This kind of empathy takes an enormous amount of effort to pull off sometimes. Not every tantrum from a baby feels justified, and in a sleep-deprived state it stings even more. When a programming problem gets us down we can usually close our laptops and walk away. You can't say the same for a newborn baby, the task at hand still needs doing. We need to find the will to push through and achieve our goal, or find a compromise that works for the situation. Sometimes for me that means walking up and down the stairs until she falls asleep.
The software we build doesn't handle life and death most of the time. But it can handle high stakes decisions; payments taken, payments not taken, forms submitted, or deadlines missed. I think the best software design stays flexible. It should cope with all states (illegal or not), all inputs, and where possible all outputs too. We often throw exceptions or halt our execution flow when things go wrong. Instead, we could return sensible defaults, or define our state model with more flexibility.
Changing worlds
These days some people write their content with ChatGPT, I wrote this with a baby on my lap. She uses fewer emojis than ChatGPT and hasn't made a single useful suggestion yet! These AI agents have only just exploded into our lives, but for her, they will seem normal and common-place. In my lifetime we started with basic brick phones, before touchscreen smartphones became the new thing, and eventually became old too. Things that feel new and exciting to us now might pale compared to what comes next — something equally exciting and daunting to think about. Life will always keep changing around us, and I look forward to seeing it all through her eyes.
Right now, Edith the baby just learned to smile. She loves to stand (with Dad’s support) while smiling and dribbling everywhere. I return to the working world with a little resentment and a little excitement.