November 29, 2014

My mother is a very organized and tidy woman. Growing up in post war eastern Germany my grandparents had little money and made ends meet with manual labor in post war factories producing things like pots, pans, nails, screws, etc. Efficiency and organization was necessary to provide for 2 children.

Certain chores were done on certain days and at certain times. That’s just how it was. Chores weren’t as easy as taking out the trash. You wanted hot water? You better get the coals and light the boiler. Oh, you forgot to do that this morning, then you better go now, in the dark. Things couldn’t be done as last minute as today. We can now decide to take a shower at any time of the day or order food on our smart phone and have it arrive within 15min. Back then you had to create workflows that would eliminate burdens later when you really needed to do something unplanned.

Growing up, a lot of the friction between my mother and me came from this difference in mentalities. I expected reasons and explanations why I needed to do something on a regular basis and as a single mom working full-time she often didn’t have the patience to explain. I rebelled by not embracing her processes and workflows.

Late 20s me is starting to see where my mom was coming from and how applicable these concepts are to the work I do. Technology is often just an abstraction around a workflow that the end user doesn’t have to worry about anymore. Think hot water or dishwashers. We’ve been spoiled with a last-minute lifestyle where we can consume anything at anytime with ease.

While I program I often have to fight “teenage me”. The fool who wants to wait until the last minute and the one who forgets to take his dish to the kitchen when getting up from the table. It’s odd to hear my mom in the back of my head when refactoring a class or cleaning up a test suite but hearing her voice has made me better at my craft. “Eh, I’ll just re-render that next time.” “No, child, do it now”. (or in German “Mach es gleich!”)

She was and is an avid gardener and growing up I would play in the garden while she plucked weeds from flower beds and diligently applied different amounts of water to different plants. I spent so much time in the garden that I got to see the impact that our incremental improvements had. Our garden was one of the more beautiful and well kept in the neighborhood.

That lesson is more real than ever now that I work on large code bases where I’m the “gardner” and can watch my incremental improvements impact overall quality.

In conclusion…

Useful abstractions are built by diligently applying sound processes until we figure out how to automate them. Once automated, it comes down to watering them, plucking weeds, and keeping the bugs out. Every abstraction is just waiting to be wrapped in yet another abstraction but on the path there the same principles of diligently applying processes applies. That’s the business we’re in. We are tech gardeners whose lives could be much easier if we listened to our moms more :)

Say hi [@bweidlich](www.twitter.com/bweidlich)

Now we get along great:



42 Kudos