Test-Driven Development (TDD) for the Non-Developer

When I got hired at the Credit Union as the Principal Software Developer, one of the major elements of the job is to define how software development is to be done at our Credit Union.

One of the things I frequently mention is that ever since I took over the Principal role at the credit union, we became a TDD shop.

What if you’re not a developer, and don’t know what TDD is about? What about if you just learned what the acronym TDD means?

Test-Driven Development (aka TDD) is a model of writing software defined by a particular practice; specifically, writing automated tests before writing the software itself.

This model directly contrasts with the approach of testing the software after it’s written.

It’s a very low-level coding process, sometimes called ‘Red / Green / Refactor’ (as the tools that execute tests typically indicate failed tests in red and passed tests in green.)

An Example workflow:

  • I write a test, and it initially fails. (RED).
  • Then, I write code that causes the test to succeed (GREEN.)
  • I write another test, that initially fails (RED).
  • And once the feature is complete, I refactor the code, while maintaining green passing tests.

This creates two products. The software itself, and the tests that verify its functionality.

Software is a complex piece of machinery that is easily and regularly changed, and those regular changes can cause unexpected flaws. Those tests, when automated to be as a part of the build itself, can help prevent those unintended errors. Updates to dependent systems are made easier, as software typically talks to a database, or services, or libraries, and those updates can be tested quickly, with minimal human intervention.

They also enforce a level of rigor in the system design. Developers build systems that are designed to be ‘tested’.


So why does this affect you if you don’t write code? As written, this seems like mainly a developer function.

The thing is, the technique is entirely a developer technique, but the TDD mindset is the true switch

Start with the tests. Ask yourself: how do you know the software/thing/system will work?

Say you’re a Business Analyst or a Product Owner on the fence about a feature, how will you know your feature will work? How will you know it’s effective?

You know what the feature is. You know WHY the feature should exist, and that’s normally enough to prioritize it (or not) on the backlog.

Take the TDD approach and start with the tests.

  • How will you know that the feature works?
  • What is the test that will prove the feature is valuable, and useful?
  • What would be a test that would NEGATE that assertion?

Or say you’re the analyst working on the requirements for that feature, and you’ve fleshed out all the details of the fancy new automation your team is working on. How will you KNOW that automation is adding the value that you think it should?

If you’re automating a bad process that shouldn’t even exist in the first place, could you tell?

If you’re saving the company money, how much, and how will you tell?

For a more concrete example, say you’re a UX designer. Many UX elements are discretely testable, but what about the UX being “intuitive”, or aligned with our UX strategy?

Is the information you’re presenting easier to understand, or harder?

How do you know?

Say you’re an executive, a director or VP, or even a C whatever O. You have a vision for your organization, and where we are going.

How do you know it’s working? What is the test that drives your decisions?

What is the test that lets you know your vision is communicated well, and that everyone is marching to those orders in the same direction?

Would you know when to turn around if you’re making a mistake? Or would that mistake have to linger a bit for you to know it exists?

Like software, companies and organizations are complex machines that regularly change, and those regular changes can cause unexpected flaws.

These examples have been presented in a series of questions, as this is fundamental to the TDD process I described above. Designing a code snippet, function, feature, automation, UX, or company with the tests-first helps define your knowledge, and the information you’re trying to get.


To sum up: Define your tests first. Define what you want, and how you’ll determine that you’ve gotten what you want. Define how you’ll measure your effectiveness and measure how you’ve achieved it.

Write your tests first.

P.S. For further reading about TDD for the Non-Developer, take a looksee at this post from IExtendable.

Family Visits, Moms, and how AVG software is the worst

My mom had a huge impact on my technical career. My natural inclination to screw around with computers was well-nurtured but with a simple caveat.

“Everything better work by the time I get home.”


This past weekend I spent a few days in Pullman, visiting with my mom before she had to go back to school. My mom is a speech pathologist, and her school year started Monday.

Every time I visit, there’s always something she’s got waiting for my help with. Things too heavy to pick up. Things too tall to do without a ladder.

This time it was a question about her computer.


All tech people hate this, by the way.


“My computer seems to be slowing down pretty bad. Do you think it’s time for a new one?”

Her computer is 10-years old. Athlon II. 4GB of RAM.

Me – “Probably, but let’s take a look.”

Looking around, there were half a dozen programs that she’d stopped using 5 years ago, and a bunch of pictures from 2013. Aside from Zoom meetings and the the occasional Excel (Excel 2007 by the way) she didn’t actually touch much. But it was SLOW. Get up a go get a cup of coffee after you clicked a shortcut slow.

Me – “Show me how you normally start this up.”

She did. Turned off the box and after a few seconds, turned it on again. First thing she did was an AVG ‘scan.’

That ‘scan’ did something? And then her computer took multiple minutes for even starting up a notepad window.

Her – “See that? Seems like the computers giving up the ghost huh.”


Turns out AVG appeared to have a nasty bug that was opening hundreds of threads and leaving them open.

Hundreds of open threads hanging out, while AVG’s “Tune Up” application suggested she close OneDrive.


Funny thing happens when you shutdown down AVG software. It comes back. You can shut off services (they’ll come back on), uninstall the products (services stay on the machine, and start running again after a reboot), and change registry entries. AVG will still come back and try to convince you to let it ‘inspect’ things.

Frankly, for an ‘anti-virus’ software, AVG has a lot of ‘virus-y’ features.


Fortunately, Windows 10 has a pretty nice feature. Resetting to a clean install. Worked like a charm.

I did convince mom to buy the newest version of Office, but once that was done, she had everything working swimmingly. Faster than it had been in years.

Not fast by my standards, but extremely fast by hers.

Her – “Wow, it’s like I have a whole new computer!”


My professional opinion: AVG makes terrible software, and I recommend that you never install anything from them.


The photo is from my drive into town. It’s right on the 270, just as 195 splits off on Davis Way.

The credit union I work for put up the sign. Folks were there taking pictures of their kids being dropped off at school, which will be a great memory they’ll appreciate for a long time.

Crummy Paintings

Back ~20 years ago, I took up painting. Fun hobby.

The problem with taking up painting is that you sorta end up with a lot of paintings you can’t use. I mean, you hang up a dozen paintings and eventually you run out of wall space.

So I started selling ’em. The town I lived in had a pretty great farmers market, and they let near anyone in there, so I set up a small table and for a few weekends, I was pitching my “If Bob Ross had cataracts” style of paintings.

Vivian. Tall lady, with a huge hat that made her look massive. Sparkly thick pink glasses. Had a hoarse laugh and deep laugh lines like she had laughed for years. Sparse red hair and equally sparse teeth. Talked with me for an hour about her kids, her grandkids, her dead husband, and her deadbeat brother. 

To this day, she is only person to this day I’ve ever heard say the word “deadbeat” out loud. 

She really liked this ONE painting that I had not been able to even GIVE away. And I really wanted this sale.

She held the painting and stared at it for what felt like an hour. Told me about her daughter who came by on Thursdays to do laundry with her who’d have loved it. Told me about how it reminded her of Mount Si (a mountain here in Washington) and how she used to pick blackberries by the coffee-can full near the river there, and the river in the picture looked just like it, so much you could hear the constant rush and gurgling of quickly-moving water.

She was going on so much, I thought she was milking me a bit to try to get me to lower the price.

It was one of my last paintings, and the market was gonna close, so it was kind of working too.

“Well, I’ve got to pack up. Did you want to take it with you?”

“Oh no. Wouldn’t match the bathroom at all. Totally wrong colors. My bathroom’s pink.”

And then she walked away. Just smiled and turned away. I was left packing up with a table, my cashbox and the remaining 3 paintings.

2 of ’em I scraped the canvas and painted over. You can do that once the oil dries.

But I kept the one with the wrong colors.


And when you attach a lot of your self worth to what you do, that ‘not fitting’ can hurt. And when you’re not able to see folks in your day to day, that ‘not fitting’ can hurt. And when you’re the only person on your team that can do what you do, ‘not fitting’ can hurt.

Vivian loved the painting for about an hour.

But did it fit? Nope. Didn’t match her bathroom colors. Vivian was right. It’d look terrible on a pink wall.

I kinda like it on mine though. I’ve gotten pretty used to it.

Moving The Goalposts

Goalposts that move are a pain. They feel unfair, like you’ve been duped into working toward one thing, when you should have been working toward something else entirely.

Or worse… that the progress you made wasn’t really progress at all. It was some larger step that you didn’t realize you signed up for.

Here’s the dirty secret though: Moving your goalposts is precisely what you have to do to keep growing.

As you improve, the goals you set will not really be challenging enough for you to keep.

As you learn, you realize the goal you set isn’t really what you actually want.

As you try new things, you realize and say “this isn’t as important to me right now.”


Weight Loss – My ‘I Improved’ Story.

I mentioned having a goal around fitness in a couple prior posts. Check ’em out: Post #1 and Post #2

Specifically, I wanted to lose a fair amount of weight at the end of year 1, with a slowly downward push in 10 years. My goal was to get to 230-235 by the end of the year.

After the annual ‘Fitness Challenge’ contest weigh-in from my CrossFit gym we do every January-March, I weighed in at a whopping 257.7lbs! The next day, I joined Noom.

As of March 6th, I was down to 234lbs!!!

Here’s my Noom referral link, if you wanna try it. I’m really happy with it.

I have already met my ‘annual goal’. Since it was only early March the goalposts had to move.

New goalpost: 220lbs, and once I get there, maintain it for 5-6 months while slowly adding more calories back into the mix.


Retirement Funding – My ‘I Learned’ Story

My retirement funding goals were mentioned same posts as my weight (from above). I was targeting a simple approach: fully fund my 401k and my IRA.

However, after watching a few lectures about retirement on my Great Courses Plus subscription, I learned there might be a better choice.

The speaker in those videos talked about 401k plans, and mentioned how some 401k plans also offer a ROTH option. I decided to check, and it turned out that yes, my 401K did allow for ROTH funds to be contributed, just as easily as I set the contribution for my regular 401K.

All I had to do was to put in a percentage and voila, the next pay cycle, I’ve got money going into the ROTH option.

So with the new learning, I decided move the goal posts. Instead of ‘fully fund both plans’, I moved to a new goal: Fully fund the 401K, with a mix of pre and post-tax dollars, then fund the regular investing goal, and finally do the IRA with leftovers at the end of the month.

Doing it this way, I mix up my taxable and non-taxable accounts, so that I have more tax options in retirement. Options are nearly always good, especially when it comes to sources of money in retirement.

Do I miss out on the tax write off on fully funding the IRA? Maybe a little, but assuming I don’t fall completely off the savings wagon, I should be good for at least a portion of that tax benefit.


Guitar Lessons – My ‘I Tried’ Story

This one hurts a bit. My uncle made these guitars, and they’re beautiful.

The thing is, the more I looked at it, me taking guitar lessons NOW or LATER doesn’t really have much of a difference in terms of my happiness.

I love my guitars. I play on them often.

I just don’t really care about taking lessons right now.

So, I’m moving the goalposts. For now, I’m calling ‘guitar lessons’ as a within 10 years goal, rather than a ‘do this in 2021’ goal. For now, self taught is good enough.


To recap, moving goalposts is a necessary part of goals. As you improve, learn and try, your goals must change with your new abilities and knowledge.

That’s just life. It moves from out from under you.

When it does, move your goalposts.

A Stupid Little Story

Back in 2011, a friend of mine from high school was trying to push his music career. His band had a local following, and was playing gigs in Seattle bars every weekend.

He wanted to fund some studio time, and that’s expensive as hell, but he didn’t want to beg a-la “GoFundMe”, so he put up a post on his bands’ Facebook page, offering to write and sing custom songs for donations to his band’s studio time fund.

Most of his friends are weirdos, so some crazy ideas came out of it. I remember a great acoustic version of ‘Safety Dance’ he did (soulful as hell). The dude is crazy talented and has been forever, so I had to get in on it, and I sent him a couple bucks.

Here’s the MP3 he sent me (OneDrive share link). A 22 second song called ‘Christopher Brown is the greatest guy ever.” I asked him to do something that I could use as a professional wrestler theme. The horns at the end represents me taking a steel chair to the face (my interpretation.)


10 years later. A podcast I listen to sort of fell off the map. A young couple posting a weekly finance and goals podcast while living an adventure in an Airstream sort of stopped posting for a bit. After about 2 months of seeing/hearing nothing, I sent them a note.

(What follows is the general gist of the note, because I don’t have it anymore.)
(Yes, I delete emails once I’m done with them now.)
(After going through 15 years of Gmails that I kept, 99.996% were minutiae that I should never have archived.)
(They were stupid, and only served to have Gmail send me more and more personalized ads.)
(I stole this multiple parenthesis thing from the opening essay in Shea Serrano’s 10 essays about Scrubs.)
(I know it’s weird but it’s charming and I love it.)

Hey, your stuff is awesome, but you’ve fallen off the map. I wanted to let you know that if you think nobody’s listening, I am. I know it’s lame for someone to complain about something free, but I’m risking looking lame because you’re doing a great job and it’d be a shame for you to stop. If you’re running out of ideas for topics, here are a few:

1) Houses are a ton more work than an Airstream
2) How to separate your money from your feelings of self-worth.
3) Christopher Brown is the greatest guy ever.

(The topics are sort of inside for the podcast listeners, but now that you’re reading this, you get to be the inside on the last one.)

It took another month, but episode 39 came out in March… and you’ll never guess who’s mentioned in the first 2 minutes. And again at the end near minute 32.


I’m trying to make a point here. Two, as a matter of fact.

First one, I’m awesome. The greatest guy ever. Multiple people confirmed, including a soon-to-be nationally awarded podcast. I have like 25 Twitter followers and everything. Total up and comer.

Second, don’t be afraid to put your stuff out there. The fact that you are trying counts, even if you don’t make a mint. You are learning by doing, and learning and doing are the best things a human can do. Even if what you make isn’t for everyone. Even if it’s just a blog that only a dozen folks read.

The Imposter

I have teenagers. I hear about how much I suck on a regular basis.

But when my teenagers tell me I suck, it’s usually for something I’m pretty proud of: making them eat vegetables, do homework, save up their own money to buy something rather than buying it for them, ad parental nauseum.

The problem is, it isn’t usually the teenagers that have my ear.

Imposter syndrome is a helluva thing.


Imposter syndrome is what they call the feeling that you don’t belong or deserve the things you have. That your social status, your job, and anything else you have is completely and unequivocally unearned.

The feeling that you don’t deserve it.

That if the rest of the world only knew, they’d call you out as a fraud.

What if they knew that I pass off feelings and intuition for facts, like constantly. (You now know this, so read on with a critical eye.)

What if they knew I was a hick from nowhere. (Palouse region nowhere, thank you!)

That my “knowledge” was all off-hand bullshit I got from having not enough to do, and mostly came from being too lazy to get up from the computer.

Some say the best way to deal with imposter syndrome is to remember your empathy. That ALL people have similar self-doubts.

Frankly, it has never been a comfort for me to know that.


That only way I know how to combat imposter syndrome is to admit what I don’t do well, and hold myself to task on it. To shit, or get off the pot. Decide the priority on fixing it, and then get busy fixing it, or let it be.

Fundamentally, it comes down to giving myself permission. It’s perfectly acceptable to suck at some things. But the things I don’t want to suck at, I’ll work to improve.

A peach is a terrible apple, but both make wonderful pie.


In that vein of holding myself accountable, here’s a list of things I suck at.

I have a degree in English, with a concentration in creative writing from Western Washington University. With said degree, I have published nearly nothing. I don’t even blog all that often.

I still have pages I wrote twenty years ago. I recently read some, and it all sucked. It was preachy and self-important and one time, rather than using the world “mental” to describe a process happening in the mind, I made up a word.

“Mindic”.

In my word processor, there’s a red squiggly line that shows me that even my personal dictionary doesn’t include “Mindic” quite yet.


In tech, I suck at just about everything. Nearly all networking stuff. Kubernetes. Go and Ruby. Most programming languages that aren’t in my standard wheelhouse. Certificates. A lot of security stuff. Game development.

I do CrossFit five times a week, and after three years of doing it, I still suck at the following: double-unders, a pull up without a band, running faster than a 10 minute mile, Turkish Getups, Snatches, and pistols.

I am not a great boss. I’ve had many people report to me, and only a scant few of them are happy for it. Most simply tolerated it. Some had marked contempt for it.

I have 2 guitars that my uncle custom-made. I still can’t play anything beyond Mother from Danzig, or a slow version of Blind Melon’s No Rain.

I suck at cars, beyond checking the oil.

My wife rechecks the dishes after I wash them, to make sure they’re clean.

I’ve been told I need better aim in the bathroom.


See, the thing is, even after writing all that stuff out, it really isn’t all that bad. It ain’t my best work, but it’s honest.

If my boss (Hi Brian!) reads this blog and notices I’m not great at Kubernetes, well, I can work on that.

If my wife reads this and notices how the bathroom and dishes stuff was relegated to the bottom of the list, I’m sorry, and I’m working on it.

If my teenagers read this: Get back to your freaking homework! Eat more vegetables! And for the love of god stop begging for things and save up your allowance if you need it so damned much!

Photo Credit: Bobby McKay from Flickr
Used with permissions from the Creative Commons License 2.0

Coaching Moment – The Ivory Tower Slash Dungeon or You Are Not Your Product

I had a recent conversation with an engineer. He initially asked for feedback on a presentation he’d done during our SDETs meeting. He presented the data loading tool he and his teammate had created, and he did a great job in that demo.

I do love a demo.

I asked him about next steps though, trying to lean into some higher level discussions I’d had with others about his team. This particular engineer is part of a two man crew dedicated to load testing system at the Credit Union, and has been for a long time.

The system is written using a load testing framework that the vendor is deprecating. His partner and him are considered ‘the experts’ at using that framework at our organization, and are entirely siloed from everyone else.

Even if they could convince management to cough up to add heads to the team, that added body wouldn’t add value until a year or more of working in the framework they’ve created.

I described his silo as an “Ivory Tower.”

He responded “It doesn’t feel like a tower… more like a dungeon”


Engineers design systems to do a job within the constraints provided.

Give engineers a tough technical requirement and add the expectation they’ll run it with no help, and you end up with a monster.

A monster that’s scary as hell to everyone else, but entices you to stick around with:

  1. Job security in a volatile field.
  2. A sense of expertise in a tech environment that’s constantly changing.
  3. A sense of ownership in what you’re doing and building.

The monster might say: “It’s not really a dungeon. It’s a gated community.”

I’d say it’s an abusive relationship.


I recall my time at {Redacted} here. One of the developers there has been working on the same product there for well over 8 years.

He’s good at his job. A highly capable developer. He likes the company, and likes the people there.

They can’t risk having him do anything new at all though. He’s stuck.

When I left, he was leading two teams (mostly by example), both working on the same product, doing the same thing he was doing 8 years ago.

Worst still, the product is largely a commodity nowadays.

There are major platforms written here that will do what his product does, and do it faster, and with an actual support model if something goes sideways.

He forgot that his value was in the expertise, rather than the product.

{Redacted} is a good company, but it’s damned hard to see where he’ll go from there.


“Just try to keep an idea that load testing should be a product… rather than a person.”

That was the message I gave my Credit Union engineer, and I find it true about all engineers. It’s a message that engineers specifically need to know.

You are not your product.

Your value is not connected to your product’s value.

You’re more important than that.

Make sure you treat yourself accordingly, and more specifically, make sure you design systems to treat you accordingly.

Things That Require Zero Talent and Other Garbage

Have you ever seen a meme like this?

10 Things That Require Zero Talent
‘It’s YOUR fault you aren’t good enough!’

It’s absolutely a lie.

Every one of those things requires a great deal of talent.

However, it is not that magical ‘talent’ that makes you say “I just will never be as good at <<something>> as <<someone famous>>.”

The truth is: talent is not natural aptitude or skill. Talent is the result of a great deal of work that appears natural to the outside world.

That’s the trick. Talent LOOKS natural, but it isn’t.

Everyone of those listed “no talent required” items relies on a great deal of work with a massive support structure. They require preparation, support, and unseen (and often underappreciated) work.

Example: Being on time

  • Someone had to get your kids out of bed, and logged onto school.
  • Your commute needs to be reliable.
  • Your home needs to be stable.

Did all that happen by itself? Magically?

Example: Making an effort or being high energy and having a positive attitude?

Someone had to give you direction, so you know what you’re trying to do. Someone had to make you feel like your efforts would matter.

Where’s all this work accounted for in the ‘no talent required’ posters?

The being coachable one enrages me because it absolutely requires a great deal of effort. I posted specifically about how to do it. It ain’t easy!


Consider some of the most talented folks you know, whether or not you’re talking about music, athletics, or software development. How many of them sit around and not actively practice their “talent”?

Stephen King is one of the most talented and prolific writers on the planet. He told us how he does it in his book On Writing: A Memoir of the Craft. It’s a wonderful and inspiring book.

Wanna know the secret about how he stayed so prolific? He wrote a lot. He needed a support structure for his writing: a teaching job early in his life, a very patient spouse, and in the end he wrote a lot. That’s all it was.

From a distance though, he’s looks talented.


Talent is the result of a great deal of work, combined with a great support structure. Remember to nurture both.

Goals Check-in, and a Streak broken.

Well, it’s been about a week, and some major items have happened on the goals front. From my one year goals, I have added a new column: Where I’m At. You don’t know how long it takes to get somewhere, unless you know where you’re starting.

1 Year / January 2022

CategoryGoalWhere I’m At
CareerCredit Union.
Principal Software Dev. Knowing what I’m trying to do, and who I’m helping.
XXK a year? *
96%.
Blog, 200 Followers21
HomeCondo: Owe $236K on it. Kitchen remodel completed.Refi complete.
HealthWeight 230-235, 20% body fat? Maybe down to 2 blood pressure pills?
Check if this is possible?
253lbs. (I wear it well? Ugh.)
5x a week Xfit
occasional weightlifting, running for 4-5 miles weekly
biking for 15+ miles biweekly.
5x Xfit.
Weightlifting on Sundays.
Biking for 10 miles
< Redacted > *Dr. Scheduled
TravelWalla Walla for a wine visit
Long Beach a few times.
FinanceRetirement accounts funded to legal maximum401K 85%.
IRA, 75%
Investing $250 per month$75
Full 2 months ahead in YNAB.1.25
FamilyHappy + Healthy.
Zoe should be driving (Sasha, most of the time.)
Generally.
PersonalGuitar LessonsUdemy courses purchased.
StuffNew PC, Downstairs wine fridgeNew PC achieved!
New TraegerSpec’d out!
KayaksSpec’d out!
* I redacted as none-of-ya-bizness.

The big thing so far is the new PC. That had been on my list for quite a while, and I was 90% of the way there when I had made the list up, but I wanted a quick win.

Built it up myself. I’ll wait for the 3070 to come out to upgrade the video card.

Funnily enough, one of the best features of adding this column is finding out the stuff I DON’T know. I don’t know my current percent body fat. Last I had it checked (near the beginning of the year), it was 23.9%. I’ll have to get another test on the books.

The weight will be the biggest test. Trying to drop 20 lbs while maintaining and upgrading the muscle mass is going to be a big challenge. Fortunately, I have about 15 months to do it.


Unfortunately, I did break the streak. On 9/7, I took the dogs to the park first thing in the morning, and completely forgot about my hand release push ups. Streak ended up at 48 days.

Oh well. I’ve got the streak back to 6 days, and I’m doing 3×18 now, so very much passing the 50 push ups a day milestone!

Checking In : Don’t Break the Streak

Well, since the don’t break the streak post, I have continued on my streak of hand release push ups. I’m currently on 40 days.

In order to move the chain up a bit, I’ve been adding one rep every 8 days or so. Today I did 3 x 16, and tomorrow should be a level up day.

It still takes about 5 minutes. The first two sets go fairly quickly.


One thing that keeps this one up is it’s time scale. 5 minutes, maybe a few more if I pad the rest session. Knowing ‘alright, it’s only 5 minutes’ makes it easy to quickly get through.

It’s certainly had some positive benefits as well. Push ups in WODs in CrossFit classes are SO MUCH EASIER right now.

The kids make a bit of a show out of it too. Nothing like being in the middle of a push up, and have a 120lb 12-year-old boy sit on your back and say “Keep going Dad!”