Welcome to the seventh edition of The Catch Block!

GD4 2018 Spring
Where's that Escher dude? Photo by Esther Jiao / Unsplash

In this edition: invisible is not worthless, drawing, dogs, reusability, gaslighting, file uploads, Blazor, and Life.

Invisible Is Not Worthless

And now, a quick story about a backyard project, invisible work, fences, plants, and dogs.

Over the weekend, my wife K.C. and I completed a backyard project that has needed to be done for quite a while now, and it got me thinking about the nature of work that we programmers do. I swear this will make sense in about six paragraphs.

We have three big Labrador retriever dogs, and they like our backyard bushes a lot. So much that they've accidentally killed two of the big sage bushes that were in the yard when we bought the house. We have tried to replace them once before, only to have the new plants summarily destroyed a mere five days later.

And then, we discovered the obvious solution: fences.

Part of our project for this weekend was to dig holes, plant bushes, and place the new fencing around them to keep them from (hopefully) dying this time. We spent five hours in the hot Phoenix sun shoveling rocks and dirt, running sprinkler lines, hammering stakes, and unrolling fence wire. It was exhausting, but man, it is nice to see real, tangible results from your hard work. That's something we don't get a lot of as developers.

But what got me thinking was this: the majority of the work we did in those five hours is not visible in the picture. It doesn't take that long to dig two holes and make two fences, even for a desk jockey like me. No, the majority of our work was digging up a main irrigation line that waters our trees and plants and re-burying it in a new, deeper trench, so that our mischievous Labs wouldn't chew on it. But that work isn't visible. You can't see the trench in the picture, but it runs between the bushes and the grass.

As it is with so much of what us programmers do. The results of our collective labor is mostly invisible, and only a small portion, which we call the UI, is actually seen and appreciated. But, and this is important, that isn't to say the work put in is worthless! It's just not visible, and so it's very easy for someone (probably a manager not used to dealing with software development) to look at our months worth of work and say "that doesn't look so hard. What took you so long?"

It's one of the struggles we programmers face: a large part of our work is not tangible, not visible, not appreciable directly except by other programmers. But it is important. And in an age where a great deal of us are struggling to be more than mere words in a chat box or profiles on Twitter, and when many others are simply struggling to make ends meet in a time of quarantine, it's worth remembering that invisible doesn't mean worthless.

And, as a bonus, here's my doggos:

Left-to-right: Ghost, Hunter, Auggie. Dum-dums all, but we love them anyway.

Cool Reads

  • Are Boolean Flags on Methods a Code Smell? (Steve Smith) - As someone who is in charge of designing a readable, maintainable, understandable architecture for most of my apps, I am very interested in how code is written, not just what is written. The opinion Steve espouses here is one I've held myself for quite a while now, though he does a better job explaining why.
  • A Rant on Reusability (Joe Petrakovich) - There are two kinds of reusability, Joe argues. One on the macro scale, where libraries, frameworks, and other such things can be reused across systems; this kind of reusability is fine and perfectly valid. But the other kind, the one where developers chase some high-minded ideal of "reusable" and end up with nothing more than a bad implementation at solving many problems. That second one should be shot into the sun (my words). Read this article for why.

Previously Published on Exception Not Found

We're well underway in the longest series I've written that isn't a mega-series: a nine-part epic on drawing with FabricJS and TypeScript. Part 1 is our introduction, goals, and setup, Part 2 is how to draw straight lines, and Part 3 is drawing basic shapes, with Part 4 (about text and freeform lines) coming out tomorrow. I'd very much appreciate any feedback any of you have on this series!

Previews and Announcements

Other Neat Reads

Catch Up with the Previous Issue!

The Catch Block #6: Not Alone, CQRS, Life, a Strangler, and Refactoring
You are not alone! Plus: CQRS, Hexo, Conway, ASP.NET Core 5, and Refactoring.

Thanks for reading, and I'll see you next week! Happy Coding!