Different Types of Coding
The first thing to recognize about coding is that there are different kinds of coding.
Personally to me, the most important to trade off when writing code is to find the write balance between:
  • How long the code will live
  • How fast do you need to write the code
Different kinds of coding (but not limited to):
  • Software Engineering
  • Product Engineering
  • Architecture
  • Hacking
  • Scripts
  • Programming competitions
  • Exploits
  • Infrastructure
  • Networking
  • Servers
  • Serverless / faas / functions as a service
  • Full Stack Engineer
    • Backend engineer
    • Frontend engineer
  • "Mobile" Engineer
  • Game engineering

Properties you should balance when writing code:
  • Code Longevity
  • Time to write code
  • Maintainability
  • Code complexity
  • Short term vs long term

Short lived code can be more inconsistent.
Properties:
  • Fast to write
  • Generally "throw away" code
Includes:
  • Scripts

The longer a code is supposed to live the more readable and maintainable it should be
Requires:
  • Clarity
  • Consistency
  • Maintainability
  • Readability
Includes:
  • Architecture

Pros:
  • Better for long term
Cons:
  • Reduces speed
Notes:
  • Speed can be improved with proper testing

  • Shortcuts
  • Speed
  • Reusing abstractions or existing frameworks

  • Reduced complexity
  • Easy to read code
    • Consistent styling
    • Stylized with a prettier
  • Tests
    • Unittesting
    • Continuous integration
  • Documentation
    • Design documentation, why certain design decisions were made
  • Tooling
  • Refactoring, or rebuilding as needed

From Forbes:
"full stack" focuses on an engineer's pure execution capability across the stack
"product engineering" focuses on an engineer's capability to deliver the end goal: a product.
Needed for an early stage startup.
  • Delivers "good enough" solutions
  • Less focused on technical numbers questions:
    • For example: Design a cache that can support 10TB.
      • How many machines?
      • How many queries can each machine handle?

  • Continually starts projects from scratch
  • May have surface level experience with lots of different technologies
  • Most likely to have breadth over depth
  • Most likely not used to firefighting in a product company
  • Because they always start on new code, they dont have the ability to inherit code from others, and thus dont know how to share code to be handed over
Cons:
  • No experience with dealing with technical debt, or reducing it
  • No experience with scaling
Copy link
On this page
Balance
Code Longevity
Maintainability
What benefits Short Term
What benefits Long Term
Product Engineering
Digital Agency Engineer