On “Software Engineering”

There was an xkcd comic going around a couple weeks ago. It was funny in a disturbingly “it’s funny because it’s true” way. Further driving the point home was this article on writing software tests I read this morning, where Process Engineering practices used in industrial planning is compared with Software Engineering practices for building applications.

Much of software built today is created with some level of testing applied, at least on the back end. The front end has been slower to integrate testing, though the tools are just as strong. But in both the front and back end, testing is seen as a necessary evil at best, and an unnecessary burden at worst. A lot of this sentiment, from my experience, comes from a couple different sources.

First, is simple ignorance. The way many of us have entered the industry, through various levels of self-teaching, means there are gaps in understanding of best practices. As someone who came in this way, I’m hyper aware of these gaps and work to fill them. Testing is one of the most difficult skills to learn for a newcomer, especially if you’re learning on your own. I can’t speak for the bootcamps, having never attended one. I like to think they teach BDD or TDD as a matter of course.

Second is cost. Testing takes time. In the startup world of “move fast and break things” the things that break are supposed to be the old ways of doing things, opening up the opportunity for more efficiency and a better ways. When testing is sidelined in favor of pushing out a minimum-viable product, what often ends up broken instead is the code base, the application itself and the bread and butter of the business being built.

Third is, quite frankly, laziness on the side of the developers. Testing takes time. It means having planning in place. It means thought processes must be applied to ensure the functions being written do their job properly. This means that you can’t just dive in and start writing code, something most developers will tell you is the “fun” part. So there’s a big avoidance factor at play as well.

Mechanical engineers like my father chuckle about our industry’s use of the term “engineer”, and rightfully so. While there are many folks who work hard to plan and test, there are many more who prefer to dive in and start writing code without those practices. When the software does not work as expected, or becomes more and more difficult to maintain as the bug list grows, none of us should be surprised.

If we are to model ourselves after the aircraft designers and the building engineers mentioned in that xkcd comic, then we need to embrace their practices of testing and planning as well.

The software we write infects and effects the world around us. Algorithms rule everyone who touches the internet now. Software is dangerous, it’s a tool that can and is used as a weapon, a subtle knife used to stab more often than not. We have a duty to everyone on the planet to get our shit together as an industry. Otherwise, what the hell are we doing calling ourselves Engineers?

Pruning

I was thinking about my phone today. Eventually it will need replacing, but with what? Do I want to stay with the iOS ecosystem? Is there some better option out there?

I went through a little thought experiment where maybe I would purchase a basic, non-smart phone and get an iPod Touch for the stuff I use my current phone for. Getting away from iTunes (which I only use for organizing my music library) is a massive challenge and I’ve got quite a few games I’m pretty attached to.

In the end what I realized is that I needed to declutter my phone, make sure the notifications I get are minimal, and find a better option for a bedside clock.

I dumped most of the games I kept on there “just in case” I wanted to play them (I game a fair bit on my iPad, those games will be there instead). I moved my social media apps (Twitter and Mastodon, I don’t have a Facebook account) deep into a folder. I like the option of posting to them as needed, but burying them makes me less likely to read the feeds on there.

Everything on the homepage is daily use. Apps on the middle page are stuff I use pretty often but not daily, and utilities it would be a pain to have to download (the retail apps particularly) the few times a year I need them. The games I’ve left on their I use daily for brain breaks and I like variety in them.

All in all, I’m glad I went through this process. I feel like my phone is more of a tool again and will help me keep my daily practices more consistent and distract me just a bit less.

Career thoughts and being honest with myself

I seem to persistently waffle on my career. Yesterday it all felt so clear. A path from Individual Contributor to Tech Lead to Engineering Manager. Do it with Rails and JS. Be there in the next five years. I already have 8 years in the industry, this isn’t unreasonable.

Why does it feel so impossible and like the wrong track for me today? I had a lot of trouble focusing yesterday and that’s the likely culprit for my hesitation today. If I feel like I’m being productive, then I feel like I’m succeeding and getting somewhere. But by who’s definition of success and productivity?

For me, success in the day-to-day looks like flow. I’m feeling most productive and successful when I get a flow going. But that’s near impossible to come by with programming because of all the stopping and thinking and logic involved.

I need to recouch what success means here, without flow. Is it acquiring knowledge? Is it gaining understanding and facility with the language or framework? I think that may be a key. If that’s the key to getting good and being productive, by my personal standard, then how do I acquire that? How do I fit in that work along with everything else on my plate?

More importantly, how do I do so consistently and with joy?

Why is this site here?

Weblog. Remember that word? It’s a bit old, at least in internet terms. It used to refer to a place where one would write their thoughts, opinions, or share informative articles on their specialty. Eventually it shortened to “blog”, and then Twitter came along and many people forgot about it entirely. This site is here to bring it back, even if it’s just for myself.

I’m going to share a bit of my process (okay, I like to talk about process a fair bit, as a warning) and how I put the site together. These are the notes and lists I wrote when I sat down and thought through how this was all going to work.

WebLOG

A place for logging things in my life. I’ve been thinking about this idea for the last couple of weeks. As I pull back a bit from social media, I find myself wanting to write more and also wanting to consolidate that writing someplace where it’s not subject to the whims of advertisers. I started my first blog in 2002, so this concept feels a bit like coming home again.

Why?

For myself: So I can go back over the year and see what I read, watched, thought, learned, etc.

For others: So someone else may find some use for the things I’ve uncovered.

Consolidating myself to one place, leveraging IndieWeb technology for sending my writings elsewhere.

Places I already post my stuff

  • My commonplace books (Bear Writer, Boostnote)
  • Newsletters (commonplacebook, cool shit)
  • Twitter
  • Mastodon
  • Tumblr
  • Pinboard
  • 8tracks
  • My developer blog
  • Dev.to
  • Medium

This weblog idea transforms the point of origin for most of that stuff to a single place that’s under my control, disseminating it elsewhere as desired.

Logistics

Where to host? I have a few domain names, so which one makes the most sense? pixelpaperyarn.rocks works. I didn’t have anything else going on here of note.

CMS of choice: WordPress! With IndieWeb-oriented plugins plus a syntax formatter for my code-related posts. This is as low friction as I can get and it allows me to post from anywhere. I’m going with the nice, built-in TwentyFifteen theme.

DEFAULTS ARE GOOD ENOUGH TO GET STARTED!!!

What am I posting here?

Make this a website of me and my stuff

  • Newsletters get written here and then sent out through Tinyletter
  • Medium and dev blog posts start here and get copied over
  • Pinboard records my reading and goes over to Evernote so I can grab it weekly as a post here
  • Editor’s Ephemera and my editorials for LSQ will be ported here
  • Current comic book subscription list
  • Movies I watch
  • Video games I’m playing
  • Books I’m reading