Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Namegames: Solving the hardest parts of Computer Science

Andrew Hao
January 08, 2019

Namegames: Solving the hardest parts of Computer Science

The hardest problems in CS are in naming. Let's take a cue from communication studies and apply Semiotics to our software systems. Then we'll look at how DDD helps us develop modular software systems that are built to evolve with the business.

Andrew Hao

January 08, 2019

More Decks by Andrew Hao

Other Decks in Programming


  1. hi!

  2. “There are two hard things in computer science:

    cache invalidation, and off-by-one errors”
  3. A Glossary is a list of terms and definitions as

    thought about by the business
  4. the business pivots Old concepts need to be supported, but

    are no longer currently applicable. Draft up a plan to deprecate old classes, modules, concepts.
  5. another team joins the fray Not everyone has the same

    conceptual model; drift occurs in naming and concepts Consistently talk about naming in architecture meetings and code reviews
  6. an employee leaves She knows things about the system nobody

    else does Anticipate her departure and collaboratively update the glossary & other documentation
  7. Applying semiotics to software Meaning in software systems is constructed

    through a business- cultural lens Therefore: view your system as a federation of cultures. Develop an independent, documented vocabulary for each business context.
  8. Align software to the business Clean systems map directly to

    business contexts Therefore: Update systems to cleanly use domain language. Modularize systems to independently operate in each business unit.
  9. Proactively manage change Change threatens to topple systems by introducing

    ambiguity Therefore: develop practices of updating documentation, sharing information and continually having conversations