Skip to main content

Principles of sofware design

YAGNI - You Ain't Gonna Need It. (For new features)

"You aren't gonna need it" (YAGNI)is a principle of extreme programming(XP) that states a programmer should not add functionality until deemed necessary.

Others

  • KISS - Keep It Simple Stupid
  • DRY - Don't Repeat Yourself
  • DIE - Duplication Is Evil
  • SoC - Separation of Concerns
  • Research first code later

Objectives and Key Results (OKR / OKRs)

Used for setting, communicating and monitoring quarterly goals and results in organizations.

image

What Matters: How to grade OKRs like John Doerr and Google

https://soapboxhq.com/goal-examples/engineering

https://okrexamples.co/technology-engineering-rnd-okr-examples

https://hackernoon.com/the-mvp-is-dead-long-live-the-rat-233d5d16ab02

  • TPM - Total Productive Maintenance
  • MVP - Minimum Viable Products
  • RAT - Riskiest Assumption Test

Performance Management Platform Built for Business - 15Five

Yak Shaving

Yak shaving is programming lingo for the seemingly endless series of small tasks that have to be completed before the next step in a project can move forward.

Example

  • You start with the desire to wax your car.
  • To wax your car, you need a water hose. Only, your water hose is busted so you need to go down to the hardware store to get a new hose.
  • To get to the hardware store, you have to drive across a bridge. The bridge requires a pass or ticket. You can't find your pass, but you know your neighbor has one.
  • However, your neighbor won't lend you his pass until you return a pillow that you borrowed. The reason you haven't returned it is because the pillow is missing some stuffing.
  • The pillow was originally stuffed with yak hair. In order to re-stuff the pillow you need to get some new yak hair.
  • And that's how you end up shaving a yak, when all you really wanted to do was wax your car.

SLAP - Single Level of Abstraction Principle

image

Engineering Principles

ARCHITECTURE

  • Build Differentiators
  • Design for Emergent Reuse
  • Evolutionary Systems
  • Scale Horizontally
  • Small and Simple
  • Smarts in the Nodes not the Network

OPERATIONAL

  • Cloud Native
  • Data Stewardship
  • Production Ready

ORGANISATION

  • Keep Pace with Technological Change
  • Model the Business Domain

TECHNOLOGY & PRACTICES

  • Secure by Design
  • Automate by Default
  • Consistent Environments
  • Understandability
  • Performance Importance
  • Get Feedback Early and Often
  • Design for Testability

Home Page | John Lewis Partnership Engineering Principles

The problem with software engineering - YouTube