Coaching Moment – Sharpen the Axe

Yesterday I was in a career planning meeting with a developer, who complained she didn’t have enough free time to learn all the stuff she needed to learn to move forward. She had too many meetings during the week, and too many too many tasks assigned to her on her project team. Even worse, the tasks she was getting that they all were the same ‘kind’ of tasks. She said “I’m not getting better. I’m stuck. <<Another developer on her team>> has already started working on <<a new technology>>, and I don’t have time to even look at it.”

That comment was an absolute heart-breaker for me.

I despise being stagnant. I am also distinctly competitive. That feeling of being stuck on a team and watching everyone else do bigger and newer things is one I have a lot of empathy for.

One of the telling moments of our conversation was how this particular developer was filling her time. In her mind, work hours meant she was working on her project, full stop. She had forty hours a week planned towards project work, and even basic administrative stuff like email, meetings, was designed to fit in to that time.

A long time ago, I heard this quote attributed to Abraham Lincoln.

“If I had six hours to chop down a tree, and I’d spend the first four sharpening the axe.”

Lincoln, maybe? I have no idea…

“We have tons of training options. What are you doing to train yourself?”

She mentioned a Pluralsight course she had started in her off-hours, but not finished. I told her I wanted her to add learning time to her week, and I wanted a bi-weekly status report on what she had done. She asked about fitting in her project work.

“Sharpening the axe IS project work, when the project is chopping down a tree.”

As someone in technology, maintaining a continual pattern of learning and training is a personal responsibility. Google made themselves well known with their advent of ‘20% time for personal projects’. Having never been a Googler, I couldn’t tell you if that’s true, but I do know staying up on the developments in the industry is crucial for personal fulfillment and job growth.

Take the time, and sharpen your axe.

Is Twitter Bullshit?

After reading Digital Minimalism and Get Your Sh*t Together, I pulled all my social media apps off my phone. I did not delete accounts or anything (except for Facebook, which I did delete.) I just removed the apps from my phone, figuring I would check Insta and Twitter from my computer directly, when I wanted to. The idea here was just to minimize the time not focused on doing something particularly.

My power usage on my phone went down drastically. I never thought of myself as a ‘power user’ of those applications, particularly, I just occasionally scrolled through and read while I sat on the (well, you know.) My Galaxy S10 would typically start at 5am at 99%, and make to 1 or 2pm, ending at around 20% when I would plug it in. With those applications removed, my phone would be around 55% battery at 430pm, when I would stop working for the day. By the end of the day I would recharge, with my phone sitting at or around 15%. I am not one of those ‘big brother’ folks, thinking that those applications are monitoring me terribly, but it is an interesting data point.

Fundamentally, my usage of those services hasn’t changed as much as I would like. My usage of Instagram is MUCH less than it used to be, but Twitter is still regular, I just use the browser to do so. Twitter pisses me off 90% of the time and it seems decidedly like its designed to do so. It’s always so rant-y and rage-inducing, and so short-term in terms of content to be meaningless in the long term. I do value the ability to navigate the social zeitgeist, but I have to wonder, is Twitter the right medium for me? I wish I had a good answer here, because I want to direct myself to deeper conversations, rather than quick hot takes on something that makes me feel a fleeting connection to a social peer group.

That’s the tricky thing of Twitter and social media. It democratizes minutiae. What do YOU think of Ivanka posting an advertisement for Goya black beans? What do YOU think of the Washington football team changing their name? What do YOU think about companies that say “Black Lives Matter” on their homepages but contribute to PAC’s that support candidates that don’t support it. And this goes on, and on, ad nauseum.

There is literally nothing I can do about Ivanka posting an advert for Goya. I have an opinion on it. One I actually spent time forming. I googled a little about laws about public officials, endorsements, and quid pro quo. Yet I repeat: There is NOTHING I can do about this, at all. But I can feel my feelings about it.

Since uninstalling had an interesting side effect on my phone battery, I wonder if the same effect can be had on my own. I’m going to try to recharge my batteries less often. It is time to drop the bullshit. Twitter, you have a target on you.

4 Simple Principles of Source Control

Different models for source control have many camps. I would rather have my software teams focus on principles of usage before worrying about the specifics or the ‘right way’ to do something. The principles I suggest below should be easy to follow, and share with new team members.

1. Prefer distributed to centralized source control.

Git is so ubiquitous now, that this is nearly a non-issue, but if your team is still using a centralized repository (SVN, or TFS), you should SERIOUSLY consider resetting that model, if for no other reason because it will become impossible to find modern developers with experience in the centralized model.

2. The main branch represents the latest version in ‘production’ at all times.

Invariably, a product will have features in flight when something immediate (a bug, a feature request, a security update) takes over priority. Maintaining a ‘hotfixable’ version of production code at all times is crucial element of product ownership. Teams should updating the main branch with the updated code immediately after a release to production.

3. Work must be visible from a distance.

Developers not embedded on the product team should be able to look at a source repository, and quickly assess what work is being done, by whom, and according to what priority. This is typically done through consistent branch naming. Consistent branch naming makes it easy for team members to quickly onboard, and for larger CI / CD processes to be built off of those processes.

4. Leave nothing behind.

Keeping a tidy repository will avoid confusion, and ensure that only what is current and open is worked on. Branches left open can be committed and pushed to accidentally, leading to work missed, and potential breaks in CI and CD processes.

Vacation in times of COVID, part 2

My wife and children have been at the beach house in Long Beach for over a week now, while I go down on the weekends. This last weekend proved wonderful. Bright and sunny, but cool, as only a Washington Beach can be.

Walking on Friday night before sunset.

Nothing like a bright sunny day on the beach that requires a light jacket.

Are there really teenagers if they aren’t fighting for no goddamn reason?

The funny thing about a beach town like Long Beach is the quirky weirdness that exists in that place. I have never, ever, seen a kite store in my life before visiting Long Beach. A store, wholly dedicated to kites and kiting enthusiasts.

Sunset behind a few clouds.

Yet, I still had to come back to the house. We have furniture deliveries, and homeowners-association installs of safety equipment that someone has to be here for. That, and my desire to work is literally nil when I’m down at the beach. I instead re-read Jack London’s Call of the Wild in the course of 3 hours, while my shih-tzu and terrier ran all over the beach, barking at gulls, digging holes in the sand and rubbing the scent of molted Dungeness Crabs into themselves.

A message to my work brain: Locust tests hosted through to Azure Containers will get done, I promise. Maybe a little later than I planned.

Vacation, in times of COVID

Long Beach, Washington is my favorite place to be on the 4th of July. I’m a fireworks hound; I love them, and I will not apologize for it. However, my desire to do them safely makes me ADORE doing them on a wet sandy beach. We get all the boom-y fun without the risk of setting someone’s house on fire.

The family at Long Beach

After the holiday, I had to come back home. We had appointments at the house and the car needed some work, and the reality is, Long Beach isn’t (for me, anyway) the best location for me to expect to spend a lot of time working. I came back and largely spent my time working. My wife and kids stayed down there, and the plan is for her to remain there until the end of July, and potentially August, if COVID takes a larger toll on our August plans.

Short post, but this is where I am right now.

The Life Changing Magic of Tidying Up Your Calendar

In prior posts, I’ve talked about my obsession with focusing on the important things, and getting things done. As someone with a meetings-heavy calendar, it’s very easy to end up with a done pile that doesn’t include a lot of concretes.

But I’m a developer first, so no matter how many coaching sessions or conversations I have on the calendar, what I absolutely have to do is get something produced. Coding is not a spectator sport, you can lose the the muscle memory if you do not actually write any code, so getting the work on the calendar is precisely necessary.

Actually use your calendar.

Most folks minimize usage of their calendar to just the meetings. Block time off for stuff that you need to do. Put stuff on the calendar you need to do. If coding is your job, put ‘write code’ on your calendar. With a “busy” flag.

An example: My boss lives on a small farm. He has “Move the Sheep” as a calendar item. Because its blocked off, I know not to schedule my one-on-one during his sheep-moving.

Don’t auto-accept meetings. Mark them as tentative, or decline.

The problem with meeting Accept is it’s ease. It is MUCH easier to respond Accept to a meeting, than it is to respond “Tentative” with a reasonable answer. Here are a few simple canned responses you can use:

  1. Tentative: “I’ll try to make it, but my calendar is crazy.”
  2. Decline: “I’ll catch up via email.”
  3. Tentative: “Can we do this virtually instead? Like a Slack thread?”
  4. Decline: “I don’t have an educated opinion here. If you need something from me, let me know and I’ll get it to you ahead of this.”

The Harsh Truth: You don’t need to be present on most meetings. A LOT of them don’t directly involve you, and are really just time sucks because people don’t like having to read / write email.

Caveat: Show up to meetings appropriate for your Team Norms. If your team has a daily stand-up, be there. Planning every 3 weeks? Be there. But focus on the time and agenda at hand, and move on.

Be brutal clearing out your calendar.

OK, so your calendar is full of ‘tentative meetings’. Now it’s time to filter those out. Cleaning out the calendar is an exercise in willpower. The fear of missing out will be powerful here, so be strong.

Personal note: I love having my opinion asked about things. If I’m honest, probably 25% of my motivation to blog is precisely caused by this. The fear of missing out on a chance to expound on a topic is SO hard to pull from, precisely because it flatters my ego.

Target those things you MUST do on the day, and the things can deeply impact. Focusing on those few things will allow that impact to be felt more strongly.

It is your calendar. Own it.

Fidelitas : Magna Club!

I checked my email last night, and a 2-year wait was finally over. We have been members of the my favorite winery, Fidelitas Wines, for over 10 years. We started in 2009 as members of their 8-bottle club, then bumped to their 16-bottle club (‘OPTU’) in 2014. The bumped membership was a gift to my wife. As of this morning, we officially made it into the 24-bottle club, called ‘MAGNA’.

It feels a little silly to be so excited by this, but I absolutely cannot help it.

It also feels pretty darned fantastic to support the best winemakers in the state.

Our first foray into Fidelitas was in 2009. Heather’s father had won a silent auction for charity for a day-trip guided tasting in the Yakima Valley by Bob Woehler, a wine journalist in the Tri-Cities area of Washington State. Bob was in his late 70s, and his wife in her 80s, but still both active in the local charities and wine scene. Since Heather’s dad wasn’t much of a wine fan, he let Heather and I take the trip for him.

We met Bob and his wife, and they took us to 8 different wineries in the area, a good selection to be sure. His wife had packed a picnic lunch for us, and we went from place to place while Bob lauded over local winemakers. We had two favorites, Fidelitas and Chinook Wines. If Chinook had a wine club, we’d be members there too. Try her Cab Franc Rose, if you happen to go to a PCC and find it there.

Heather’s appreciation for a good Malbec was alive and well back in 2009, so after Bob gauged her tasting notes, we drove up to the Benton City tasting room. The wine hit us like a ton of bricks. Red Mountain is a well known AVA, but at the time, was still breaking out of the Yakima Valley mold. It was just so much more full and vibrant than so many wines we had tasted that day. We joined that day, and brought several bottles with us. I remember Bob’s wife winking at her “that’s a good choice for a first club, but a hard one to live up to.”

Bob’s wife was entirely right. We had only joined a second club almost eight years later, after our palettes learned to appreciate the variety.

Coaching Moment – Why Won’t They Give Me Permission?

I had an impromptu conversation this afternoon with a system engineer. He wasn’t looking for ‘coaching’, in the same vein that my developers are inclined to do, but a conversation about how to integrate a new technology into the credit union’s mechanisms. I am a poor network engineer. My understanding of network sophistication is pretty slim, and my ignorance was exposed, repeatedly, throughout this conversation.

However, as we discussed the problem, and came to a series of potential solutions, a common thread came up in my colleague’s responses to a solution.

“Yeah, that probably could work, but it will be nearly impossible to get this through…”

“This would work, and would be kinda fun. But moving the CU toward this is like turning a ship around…”

I checked in here. There wasn’t a technical reason these solutions weren’t reasonable. They were just too ‘new’. I queried further, and it became very clear a lot these ideas were things my peer had thought of. He just never got permission to move forward.

And just like that, it became a coaching moment.

Aside: One of my old managers used to hate complaints. Hated them. His personal stake in what we had built attached a personal note to anything technical complained about. If you came to him with a complaint, and an expectation that he would ‘fix it’ for you, you came away rebuffed, and in no unclear terms. But if you came to him with a complaint, and a well-thought out fix for it?

That nearly always ended up differently.

I coached this particular engineer about feeling welcome to take that next step, and propose a ‘fix.’ This is common to the Pull-Request model of open source software. An lone issue and complaint is reasonably ignored, but an issue with a well-thought-out pull request, correcting the flaw? That is something worth paying attention to. Even if the correction is inaccurate, it is worth paying more attention to someone willing to put in the work to correct it. In your own life and work, put some skin in the game.

Avoid being a complainer that is not willing to own the problem or the solution. Get in there, find out what’s hard about the problem, and take the chance to own the solution. Will it always work? Of course not, but the effort you take learning about the problem will likely lead to a better solution down the line.

Pay Yourself First : The Dirty Secret of a Morning Person

One thing I have learned about myself is that I am, without apology, a morning person. I get a walk in with the dogs, a cup of coffee or two, and a protein-rich breakfast (greek yogurt with berries and egg whites) everyday, and still have an hour or two before work. There are others who try a different tack, as described by the following tweet:

Tweet with text, "Learned a very relatable term today: “報復性熬夜” (revenge bedtime procrastination), a phenomenon in which people who don’t have much control over their daytime life refuse to sleep early in order to regain some sense of freedom during late night hours."
A tweet describing exactly the opposite approach.

I would like to tell you about an easy way to get up in the morning and how much better, but the dirty little secret is this ‘revenge bedtime procrastination’ is precisely what I’m doing.

I just do it in the morning.

Knowing I am at my most chipper and best in the morning gives me license to enjoy my morning first. I choose not to wake up to immediately work, but to wake up to spend a few moments for myself. I don’t feel too bad about playing 20 minutes of Pinball Action at 5:30 in the morning.

A screenshot from a pinball video game.
Yay Pinball!

I take a great deal of pride in my work, and what I do every day, but spending 2-3 hours every morning taking care of me, the dogs, and my family first make it exactly worth that effort. If you feel like you are ‘stealing back’ time for yourself in the middle of the night, only to wake up miserable, you might do better taking that time first thing in the morning.

Pay yourself first. Especially with your time.

Presentation: Introducing F#

Alright, you are like me, so you you’ve talked up F# in your office, and folks are interested! You need to introduce F#, and quick! Well, I have got some help for you!

I have a slide deck for you to use, and a YouTube video for ya to share if you aren’t the presenting sort. Feel free to clone the repository and use as you need to.