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?

Weekly Focus 2018: 9.9-9.16

  • LSQ
    • Plan 2018-2019
    • Write Editor’s Ephemera
  • Storybin
    • Sprint work – Testing
  • Studying
    • Rails Guides
    • Topic lists
  • Enrichment
    • Stirring
    • PPY updates
    • Skyrim post
    • Debugger cards

Last week’s focus list was ridiculous in hindsight. It listed all the things I wanted to do rather than the actual focus themes for the week. So I’ve adjusted this week. A lot more streamlined and, well, focused.

Did a lot of LSQ planning over the weekend and that will continue. Dates for things may change, but I need to know the shape of the thing so I can hopefully avoid crunches and make informed changes if things go off the rails.

I also have my monthly column to write and would love to get a month ahead. It always sneaks up on me.

Storybin had no progress, instead I worked on the LSQ website rebuild, but that can’t happen again this week. There is some learning that needs to happen around that work in order to do it, so that will be done as well. Which leads me to…

Studying is being reduced to reading the Rails Guides and working on a list of topics to review. I’ll jot things down as I encounter them and start doing some targeted studying. I’m functional but I want more fluency. This will help as I start seeing what I don’t know as gaps in a structure rather than one big gaping hole of ignorance.

Enrichment is the same as las week, but with an addition, unlike the other areas of focus. I came up with an idea for a useful set of cards for debugging and will work on those prompts on and off as they come to me.

Commonplace Book 9.4.2018

Hello my friends! This one is gonna be as concise as I can make it, but I’m giving you the best of the stuff I’ve jotted down since February, so it may be a little long. Fear not! It will be worth it and you won’t be waiting for near as long for the next installment.

This monthly entry is available as a newsletter, if you like that kind of thing.


“When I was a boy and I would see scary things in the news, my mother would say to me, “Look for the helpers. You will always find people who are helping.” ― Fred Rogers


Don’t Think Outside the Box—Find the Box. When faced with an impossible problem, identify the real constraints. Ask yourself: ‘Does it have to be done this way? Does it have to be done at all?’ https://pragprog.com/


Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius – and a lot of courage to move in the opposite direction. – E. F. Schumacher


Three questions to ask yourself:

  • What have I been obsessed with that feels unreachable?
  • What is my biggest fear if I stop reaching?
  • What would it look like to surrender?

Watching tech talks is great. Watching talks that are beyond what you understand is better. Rewatching those talks six months later is the best.


“Worry is inverted faith, faith in evil/harm instead of faith in good” – Florence Scovel Shinn


This is usually a quote about the definition of insanity, but I’ve been applying it to failure, particularly while I’m debugging: “Failure is doing the same exact thing over and over again and expecting different results”


The Steps
step 1: strike the word ‘productive’ from your vocabulary. it is evil.
step 2: always do your best. your best will change from day to day.
step 3: know what works and what doesn’t. know when you have energy and when you need to rest. learning this will take time, attention, and discernment.
step 4: drink a glass of water.
step 5: when you feel like you are getting nothing done, go back to step 1.


The 3 principles of software security according to Tara Lindsey
1. put a good lock on it
2. hire big burly men to stand on either side of it
3. put it under the bed


“A rule to live by: Don’t replace people with abstractions.- They’re not users, they’re people using tools to do a job.- The web is not made of content, it’s a collection of human ideas.- You don’t have a personal brand, you have a reputation.What are other examples?” Practicing Developer


“girls don’t want boys girls want single-player story-driven RPG’s with in-depth character creators and romance options.” –


 “PERFECT is the ENEMY of GOING THE FUCK TO BED” – daiyi!


if you stood in your own two boots, where would you stand? if you said it fully, strongly, clearly, with your chest, what would you roar? if you believed that you would always take care of you, that you could survive anything, where would you place your hands? and if you placed your hands there, could you do it with a smile? strength. (& a leo szn gift)


NEW NEXT
We outlived the future.
This is a good thing. I like it. I’ve outlived (space) 1999 and 2000AD and 2001 and next year I clear BLADE RUNNER’s 2019 and the rest. We’re barely two feet into the 21st Century and it’s all a blank sheet of paper from here. No maps for these territories. I like it. It’s freeing. Now we’ve gotten used to the speed of the 21C, we can all quit complaining about how near-future SF gets overtaken by the times so quickly and just swing crazily from here to 2101. I hope for, and fully expect, futures scenarios to get weirder and wilder, hyperlocal and supermodernglobal, very quickly. 2001 to 2018 has been the training ground for the New Next.
I’m looking forward to the New Next. I outlived the old future. Give me a new one to live for. Orbital Operations

Weekly Focus 2018: 9.2-9.8

    • LSQ
      • Issue production
      • Plan 2018-2019
      • Organize my posts to write
    • Storybin
      • New sprint
    • Studying
      • Rails Guides
      • Rspec testing book
      • Technical leadership book
    • Enrichment
      • PPY updates
      • Skyrim immersion post
      • Reading A Stirring in the Bones

The focus this week is on mostly the same stuff as last week, but with some adjustments and more clarity.

LSQ issue is done on Wednesday, so by the end of the week that will be fully put to bed. That opens up mental space for planning the next year.

Finally finished the dirt simple sprint for Storybin and now I can get more tests written. Changing to a 2 week sprint cycle will help me actually finish what I outline to do.

Along with that I have some formal Rails studying to do. The Guides are straightforward and I need to sit and read them and take notes, possibly with an eye to creating quizzes for myself and others.

The testing book and a book on technical leadership go hand in hand with that stuff and I hope the latter will also help me with LSQ management stuff too.

Last but not least is what I’m calling Enrichment. That’s the stuff that’s just for me and my own enjoyment and development. Reading Stirring so I can get my thoughts together for a short story. Writing my immersive Skyrim post. Getting all my “stuff” over here so the site feels more robust and lived in.

Of course as life goes on, I’ll be happy if I get half of all this finished.

Weekly Reads 2018: 8.26-9.1

FATFREE: The Low Fat Vegetarian Recipe Archive
Oh goodness. I just rediscovered the fat free vegetarian recipe archive. 1993-2007. There is zero site design, but this is a treasure trove of recipes. pardon me while I trip down nostalgia lane to 20 years ago when it was so much harder to be a vegetarian and this site was a life safer.

Is It Okay to Say “Hey Guys”? – The Atlantic
Sums up the struggle with the term and yeah, I’ve mostly removed the phrase from my vocabulary because it makes me uncomfortable at this point.

Katharine Hepburn: Leading Man
Oh wow. This gives me a whole new spin (and even more adoration) for Kate the Great.

Unethical programming – DEV Community 👩‍💻👨‍💻

Is Rails still relevant in 2018 ?
More than just an “Is Rails dead?” article, the author backs up their statement with a nice reasoning why Rails is still valid. A few philosophical points about developer lifestyle I disagree with heartily, but a good take otherwise on the current Rails/Elixir/JS pros and cons.

What Makes a Superhero a Superhero? | Luna Station Quarterly

A neuroscientist explains what tech does to the reading brain – The Verge
I pretty much want everyone I know to read this interview. The internet really is fucking up our ability to hold attention and view things critically. This is why I’m trying to read more articles, more long form pieces and spend less time on social media and its hot takes.

Design documents: maybe the only record of what the hell you were thinking — No Idea Blog
I’m a sucker for clear communication on projects. Design docs feel like an extension of, or preliminary to, writing tickets. Similar to a spike.

Stop future proofing software – George – Medium
Mostly agree with this article. Reducing future-proofing, but keep things flexible. I only disagree with the idea of designing for current and next year, as part of the reason for designing for present and last year is to make sure everyone gets to come along for the ride, not just those with the latest and greatest.

What would cities look like if they were designed by mothers? | Christine Murray | Opinion | The Guardian
A call for architects to think more diversely when designing public (and private) spaces that should accommodate folks who aren’t all able-bodied and without children.

4 practices for better code – DEV Community 👩‍💻👨‍💻
A succinct overview of some basic best practices.

Opinion | The Gift of Menopause – The New York Times
An outstanding piece on growing older, passing menopause, and letting go of a lot of the garbage we carry with us every day.

How I learned to love unit testing – DEV Community 👩‍💻👨‍💻
Because I’m still trying to learn to love unit testing. I am on board with its power, but learning to actually write tests is still challenging.

Logged off: meet the teens who refuse to use social media | Society | The Guardian
I don’t even have anywhere near the pressure these kids do to be on social media and I feel this kind of grind anyway. More and more I consider closing it all down. LSQ and losing touch with the tech world I need to engage with for work are the only things holding me back at this point.

Techie to tech lead: My five biggest mistakes | ThoughtWorks
This was a helpful piece for me as I’m thinking about working toward this kind of role in the future. Some good insights and I can see mistakes I’ve made in the past myself.