Welcome to the seventh edition of The Catch Block!
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:
- 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
- See What's New in Visual Studio 2019 v16.6 Preview 3 (Jacqueline Widdis)
- Blazor WebAssembly 3.2.0 Preview 4 release now available (Daniel Roth)
Other Neat Reads
- Want to Know How to Get a Remote Job? I Asked 30 Remote Companies - This is What They Said (Rauno Metsa)
- Codd's Twelve Rules (Joe Celko) - An interesting look at a set of rules the define what a relational database should be.
- The Most Exciting Promise of .NET 5 (Heather Downing)
- Measuring effort gets you effort (Jessica Joy Kerr)
- Prepare for the Ultimate Gaslighting* (Julio Vincent Gambuto)
- Life, part 2 (Eric Lippert) - Eric continues his series on Conway's Game of Life
- Production Tips for ASP .NET Core 3.1 Web Apps (Shahed Chowdhuri)
- Upload a File Using ASP.NET Core (Khalid Abuhakmeh)
- C# 8.0 Nullable References: embrace the expressiveness (Ian Griffiths)
- Strategies for Migrating to TypeScript and How does TypeScript work? The bird’s eye view (Axel Rauschmayer)
- The 2020 Guide to Creating Quality Technical Screencasts, Presentations, and Remote Meetings (Scott Hanselman)
- 5 Tips for Working From Home with Children (Jared Spataro and Anne Michels)
Catch Up with the Previous Issue!
Thanks for reading, and I'll see you next week! Happy Coding!