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.
Developers work in code repositories, not Confluence. Unless they update documentation on every change, a single user story could make it stale. …
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.
“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.
Don’t spend time adding low-value features backed by assumptions. Perfectionists often tailor products to their ideal image, not necessarily the customer’s. …
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?
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).
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 checkout button took the shopper to a partially blank white screen, with no course of action. Advanced troubleshooting steps from a bystander, which non-technical people would not be capable of, revealed the issue. Ad-blocking software had blocked a portion of the page, leaving the header and main menu intact. Fortunately, the bystander recovered the sale, but how many shoppers did not have that support? …
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.
if (!isAllowed) throw new Error("You do not have permission!");
if (!isAllowed) {
throw new Error("You do not have permission!");
}
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.
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.
Benefits of this approach:
import { users } = from "../models";orconst { users } = require('../models');
Am I missing a benefit? Let me know and I’ll add it. I’m not trying to mislead by leaving out facts. …
About