Photo by Henry & Co. on Unsplash


It’s always out-dated

Most of us have been there — it’s almost a rite of passage: following a guide in Confluence that is horribly out-of-date. The person that wrote it took great pride in its detail at the time of creation, added plenty of screenshots, and maybe even some animated images. Unfortunately, the menu bar in the screenshot no longer exists, and the button required by one of the steps has been removed.

Confluence and wikis become out-of-date quickly

Developers work in code repositories, not Confluence. Unless they update documentation on every change, a single user story could make it stale. …

Sometimes finishing touches are not worth the time or money

hand using string to connect points on charts pinned to a bulletin
hand using string to connect points on charts pinned to a bulletin
Photo by Alvaro Reyes on Unsplash

While the examples below are limited, the following principles can be applied to almost any industry. The following questions are meant to challenge people to reframe their thinking regarding the value being added.

Does Your Customer Really Want the Bells and Whistles?

“80 percent of features in the average software product are rarely or never used. Publicly-traded cloud software companies collectively invested up to $29.5 billion developing these features, dollars that could have been spent on higher value features and unrealized customer value.” — Pendo’s 2019 Feature Adoption Report.

Focusing on people’s strengths can boost productivity and retention

I game piece standing opposite to a collection of eight game pieces.
I game piece standing opposite to a collection of eight game pieces.
Photo by Markus Spiske on Unsplash

There are many different types of skills. A person in tune with nature may become a gardener while someone with superior rhythm becomes a musician. Software developers tend to focus on learning code and algorithms — not so much management skills. Why are they promoted into positions that require interpersonal skills?

Use analytics to track missed opportunities your customers don’t report

404 Error Message
404 Error Message
Photo by Erik Mclean on Unsplash

Errors in software, services, or physical devices prevent a customer from experiencing the intended functionality. The 404 error in the image above represents a case that many non-technical users have grown accustomed to, where a broken link has led them to a page that does not exist.

The following sections show five real examples of how errors caused missed opportunities and solutions to prevent future occurrences (Names of people and businesses omitted).

1. A popular beauty website almost loses a customer to an ad-blocker

While shopping on the website, a customer shouted, “Ugh, [company]’s website sucks!” The exclamation was loud enough to turn heads and prompt inquiry from another person.

Clicking the…

Laptop with code
Laptop with code
Photo by Clément H on Unsplash

Code formatters prevent disputes around code styles, helping pull/merge requests be limited to meaningful code comments. Teams can either agree on a formatting configuration, or use highly-opinionated tools like prettier, which leaves few options open for interpretation.

While this article is focused on inline if statements, the same points can be applied to other missing rules.

Inline example

if (!isAllowed) throw new Error("You do not have permission!");

Nested example

if (!isAllowed) {
throw new Error("You do not have permission!");

Side effects

  • Placing a breakpoint is difficult or impossible in some debuggers. A developer could convert to a block statement (which may not always be possible…

Automation tests are not punishment. Their purpose is not to meet acceptance criteria, pass a code review, or satisfy code coverage tools. They improve code confidence by preventing regressions and reduce time spent manually testing. The following points illustrate how to use them more effectively.

Test behavior, not an implementation

Challenge: Write tests for functions using only its outputs and parameters (signature). This strategy is a key component of test-driven development and will produce simpler application code. If that proves challenging, consider splitting functions to reduce complexity and responsibility.

The fake function below will be used as an example. …

Some developers are following a trend of importing code by directory in NodeJS using the fs module.

Example file: src/models/index.js

Benefits of this approach:

  • Modules are imported simply by existing in a directory. They can be used as named exports.
import { users } = from "../models";orconst { users } = require('../models');
  • There is no need to update a giant index file. (Fewer lines of code; less boilerplate)
  • There may be a business or architectural requirement to do this, which will make the rest of the article a moot point.

Am I missing a benefit? Let me know…

Kevin Fawcett

Senior Full-stack Software Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store