Welcome to the eight edition of The Catch Block! In this edition: outlets, a tester, handoffs, GameBoy, ducks, Pi, previews, strategy, and GraphQL.
Electrical Outlets and Inner Workings
The changes in the real world that we discussed in the last edition continue! This past week saw the completion of another house project that we've been meaning to do for a while, and again got me thinking about the nature of our work as software developers.
Twenty-two years ago, in 1998, our house was built. The electrical sockets in it when we bought it were probably original, installed around that time. Most of them simply wouldn't hold a plug safely now (they would fall halfway out and present a fire hazard) and we've been needing for a year to replace them. A handyman we contacted about doing this work quoted us around $3000 US to complete the job, and given the current worldwide circumstances, we thought this was way too much.
Two years ago, I was gifted an electrical tool set (one designed to work with electrical components) by my father-in-law, which included wire caps, zip ties, a wiring multitool, and a voltage tester. To be perfectly honest, up until this week I hadn't used anything in the kit. But this week, the multitool and the tester proved to be invaluable to my home project.
A week and a half ago, my wife K.C. and I decided that since we were homebound anyway due to quarantine, we should make some improvements to the house. She wanted to do some serious spring cleaning, throwing out a bunch of old ratty clothes and unused trinkets, while I wanted to fix the outlets. So I took on the job of replacing all the electrical sockets myself. We went to the local home improvement store, bought around $200 of electrical sockets and covers, and got to work.
And finally, this past Sunday, after becoming intimately familiar with the house's electrical board and the difference between the white, hot, and ground wires, the job of replacing 37 standard two-plug outlets throughout our house was complete.
I gotta tell you, dear reader, it felt good to do something tangible with my hands. It's an experience I personally do not get often: seeing something you did exist in the physical world. But looking at the finished product, outlets similar to the one above, felt strangely melancholic. All my work was hidden behind thirty-seven blank white plates. Nobody, besides my wife, would even know I had done it. All they saw was the socket itself, six oddly-shaped holes and two flathead screws that define an electrical outlet.
All they saw was the interface. And yet I was familiar with what lay behind it, and naively wanted them to see and understand.
But they won't, and that's not a bad thing. They won't know the work I put into it, not like I do. But they will know that now, all the outlets work, they hold plugs snugly, they aren't a fire hazard anymore. They know the results, not the inner workings, not the sweat and tender thumbs and scraped palms it took to get there because as it turns out, wires are sharp.
I have to settle for that. It's the same for software. The user sees the interface and believes that that is the app. They don't see the weeks of coding, testing, designing, bug fixing, acceptance meetings, and documentation that go into making the final product. They only see what they can use, and it's hard to blame them for it. We as developers must reckon with knowing our users will only see 10% of the work, and not know and not feel the amount of effort that goes into making a modern, working software product.
Part of being a developer is knowing that your users will never recognize the totality of the work you do. We need to be okay with that. Getting to that point is difficult, but once you arrive, you find that you didn't really need that approval anyway.
Cool Reads
- Developer's Guide to Tech Strategy (Shawn "Swyx" Wang) - It pays to be aware of the business you're in, and Shawn's long article is an attempt to prove this point. Some of this is more oriented at business-level decision makers, but it's still well worth a read, if for nothing else than the second paragraph: "It goes without saying that your coding does not have independent value; it must be applied usefully on some economic problem to have sustainable real world impact."
- Handing off a software project (Justin Etheredge) - I cannot tell you the number of times I've been asked to take over a software project without proper access to the things I need to make it work, including but not limited to access to the prior engineers. Justin's article talks about what kinds of thing we need to have a successful handoff of a software project, including tests, a good Readme, and others. If you've ever had to hand off a project to another team, read this (and if you haven't, read it anyway, because it's only a matter of time).
Yeah, do we?
- Do we have an obsession with ducks in software development? (Steve J Gordon) - Duck typing and rubber ducking, explained!
Previews and Announcements
- Announcing .NET 5.0 Preview 3 (Rich Lander) - The closer .NET 5.0 gets, the more I wish it would just get here already.
- ASP.NET Core updates in .NET 5 Preview 3 (Sourabh Shirhatti)
- Announcing Entity Framework Core 5.0 Preview 3 (Jeremy Likness)
- Blazor WebAssembly 3.2.0 Preview 5 release now available (Daniel Roth)
Other Neat Reads
- Quarantine Work is Not Remote Work (Scott Hanselman)
- C# 9 - Positional or Nominal Creation (Christian Nagel)
- Preventing mass assignment or over posting with Razor Pages in ASP.NET Core (Andrew Lock)
- Limiting input type=”color” to a certain palette (from an image) (Christian Heilmann)
- The first modern pandemic (Bill Gates)
- The big 5 benefits of automated deployment (Chris Smith)
- CoreBoy is a cross platform GameBoy Emulator written in C# that even does ASCII (Scott Hanselman)
- Are You A Learner Or Performer? How To Excel Based On Your Mindset Type (Kat Boogaard)
- Stored Procedures, ORMs, and GraphQL (Steve "Ardalis" Smith)
- Running Azure SQL Database Edge on a Raspberry Pi (Andrew Pruski)
- Life, part 3 and Life, part 4 (Eric Lippert)
Catch Up with the Previous Issue!
Thanks for reading, and we'll see you next week!