Top 5 opportunities for growth in software

I am a software engineering newbie. I thought that I knew a lot about it after I coded my first BASIC program on a TRS-100 way back in the before time, but now I see that the creation of software is a vast landscape of unexplored country and I have tender feet.

Here are my top five opportunities for growth in software engineering:

1. Over caffeinated coworkers

Engineering groups aren't known for health. Be it a selection bias towards sickly kids or an environmental poison, there are a lot of engineers who ignore their meat-selves and use coffee to dial in their attitude. When PARC was pushed out of the nest by Xerox and cost cutting measures started to pare away the luxuries which had accumulated over three decades, they left the coffee service alone. When I asked the Computer Science Lab director, Richard Bruce, why they didn't cut the coffee he said "I don't mess with people's drugs."

Growth opportunity: I can pay attention to where my coworkers are in their drug cycle and craft my messages appropriately. Right after a hit they can hear expansive and forward looking statements. When they're running on empty it's time to break out the hugs and the kudos.

2. Bug reports

If you look in any bug report database, at least 80% of the bugs will be completely useless for the purposes of finding and then fixing a bug. By the time someone using my software has had a problem, found out how to report it, and then jumped through all of the hoops, they've lost the will to write a single sentence. I reduce those hoops to the bare minimum but I've yet to use a reporting system in which people would write a coherent chunk of text.

Growth opportunity: I can practice relaxing into the moment and staying human while sending the "Thank you so much for reporting this bug! Could you tell me X Y and Z?" emails.

3. Metrics

In one of my coding gigs I had six systems tracking my work: The code repository generated statistics about my work. The shared to-do list app charted and graphed my work. I wrote weekly OKRs which my managers read to track my work. The daily standups notes tracked my work. The customer support system tracked my customer facing work. After all of that automated tracking, I also had two levels of managers stop by my desk every couple of days to review my work.

Growth opportunity: I can empathise with managers' desire to avoid surprises and I can sympathise with the team's resulting lack of agency and motivation.

4. Gnarly problems

If a project is challenging then I run into unexpected problems once a week. Just as no plan survives contact with the enemy, no design survives contact with a compiler.

Growth opportunity: To prepare, I can read widely so that I'm pulling from a diverse tool chest. To react, I can use both my waking and my background mind to work through the gnarls. I can treat each as an opportunity to explore a new solution space.

5. Smooth exits

There comes a time in every project when it's time to leave: I've done what I came to do, the remaining work can be better handled by someone else, the project's in a good state to hand off. Whether the project flamed out or rocketed to success, there's a moment when it is retooled for maintenance and it's time to go.

Growth opportunity: I can unclench and acknowledge that I rarely know in the moment whether a change is good or bad. Whether I've chosen the change or it has chosen me, I can let go of the project's many plans and responsibilities and open up to what's waiting on the far side. Also, I can take a vacation already.

Mark Twain wrote, "I was seldom able to see an opportunity until it had ceased to be one," but I think it's the other way around. Being a newbie makes all of software engineering an opportunity so I'm glad that I was wrong when I thought I knew it all.

More posts

Recent posts

  • What is PotassiumES?

    This is a post about PotassiumES, an ECMAScript library that enables browser-side development for the wider web. If you're not sure about the wider web, click that link because otherwise the rest of this post won't make a lick of sense.

  • Wider Web Lingo

    People sling around a lot of lingo when talking about the wider web, and even the term "wider web" is lingo!

    So, I wrote a series of short posts defining words and phrases ...

  • Wider Web Lingo: Voice

    There's a lot of lingo around the wider web so this is one of a series of short definition posts.

    Voice: Phrases or other vocal noises that can be recognized and used as input

    Computers are getting pretty good at understanding ...

  • Wider Web Lingo: Gesture

    There's a lot of lingo around the wider web so this is one of a series of short definition posts.

    Gesture: A body motion that can be recognized and used as input

    Computers are getting better at watching how we position ...

  • Wider Web Lingo: More Hugs, Fewer Thugs

    There's a lot of lingo around the wider web so this is one of a series of short definition posts.

    More hugs, fewer thugs

    The wider web is inherently more intimate than the flat web that you hold in your hand ...

  • Wider Web Lingo: Spatial Controls

    There's a lot of lingo around the wider web so this is one of a series of short definition posts.

    Spatial controls: Interactive visual elements that are placed in the real or virtual environment

    Unlike page controls or overlay controls (the ...

  • Wider Web Lingo: Overlay Controls

    There's a lot of lingo around the wider web so this is one of a series of short definition posts.

    Overlay controls: Visual elements that seem to sit on top of a portal display

    Overlay controls on the wider web float ...

  • Wider Web Lingo: Page Controls

    There's a lot of lingo around the wider web so this is one of a series of short definition posts.

    Page controls: Visual elements that you're used to on the web like buttons, images, text fields, and blocks of text ...

  • Wider Web Lingo: Wand

    There's a lot of lingo around the wider web (which is itself lingo) so this is one of a series of short definition posts.

    Wand: A handheld device with tracked orientation and position, often with touchpads, thumbsticks, buttons, or other controls ...

  • Wider Web Lingo: Immersive Display

    There's a lot of lingo around the wider web (which is itself lingo) so this is one of a series of short definition posts.

    Immersive display: A display into a real or virtual environment that covers most of your field of ...