Skip to content

Instantly share code, notes, and snippets.

  • Star 19 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
3 things I've learned in 5 years of JavaScript Software Development

3 things I've learned in 5 years of JavaScript Software Development

Code should lead with the higher-level concepts. The lower-level pieces should follow

Don't force the reader of your code to scroll past the minutiae.

function makeBreakfast() {
  const ingredients = fetchIngredients();
  const friedBacon = fryBacon(ingredients.bacon);
  const cookedScrambledEggs = whiskEggsAndFryThem(ingredients.eggs);
  const preparedMeal = plateAndSeasonMeal(friedBacon, cookedScrambledEggs);
  return preparedMeal;

function fetchIngredients() {
  return {
    bacon: 'got some bacon',
    eggs: 'got some eggs',

function fryBacon(bacon) {
  // return some fried bacon

function whiskEggsAndFryThem(eggs) {
  // return some cooked scrambled eggs

function plateAndSeasonMeal(friedBacon, cookedScrambledEggs) {
  // Transfer fried bacon onto the plate
  // Transfer cookedScrambledEggs onto the plate
  // Season what's on the plate
  // return the meal

Tooling will make – or break – a project

Good tooling will provide a delightful developer experience that motivates further work. Bad tooling will promote demotivation, leading to the death of the project.

It should be easy to clone a project and get it up-and-running.

A developer should be able to change a piece of the project and have the tooling respond almost instantaneously with the results of their change.

Fight tooth-and-nail for every microsecond you can save on build execution time. If a dependency introduces tooling head-aches and longer waiting periods, alarm bells should be ringing.

Code is a blueprint. No user ever cared about the blueprint. They cared about what was created from the blueprint

Delightful code does not lead to a delighted customer. What the customer experiences with the running software is all that really matters.

However, if a developer is not delighted when they work on the blueprint, it will be a challenge for them to delight their customer.

Copy link

chooie commented Jan 22, 2020

Good spot. One of the lines was missing. Thanks for the heads up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment