Developer Rules of Thumb

 https://ae01.alicdn.com/kf/HTB1eBcJd7fb_uJjSsrbq6z6bVXa0/10pcs-American-Thumb-Tip-Large-Size-Magician-Trick-Magic-Gimmick.jpg

  1. K.I.S.S. - Keep It Simple Silly
  2. "A Place for Everything and Everything in its place"
    1. Eliminate Redundancy aka Orthogonalization
      1. In human process design
      2. In system, process, and database design
      3. In code
      4. In communication - Speak Concisely
    2. Eliminate Waste/Noise
      1. In human process design - toil
      2. In system, process, and database design
        1. Unused features
        2. Levels of indirection
      3. In code
        1. Unnecessary code
        2. Unreachable code
      4. In communication
        1. Digression & change of topic
        2. Pedantry
        3. Filler words
  3. Minimize Cognitive Load
  4. Always be working yourself out of a job
    1. Identify and formalize/eliminate repeating manual work
    2. Automate/eliminate formalized manual processes with software
    3. Design, write, document software so that an uninitiated, junior developer can quickly own it
    4. Train team to replace you
  5. Foster a Personal Sense of Urgency
    1. Engineers are seldom if ever the ones holding the purse strings.  Throughout your career, you'll likely be beholden to someone who isn't technical.  They hire you to solve a problem they have.
    2. There's an assumed (or explicit) return on investment for solving that problem.  If you take too long, the cost of solving the problem may exceed the benefit.
    3. You need to solve the problem in such a way that the future cost to maintain, support, or expand the solution doesn't hamstring your employer.  The business often won't fully appreciate this.  The incentives of the employment market run contrary to it.
    4. Speed and Quality are necessarily at conflict.  To improve, you must simultaneously push on both fronts.

Comments

Popular posts from this blog

Engineering Truisms

The Telescoping Constructor (Anti-Pattern)

A Strategic Approach to Precision Process Automation