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

Balance

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

Code Longevity

Short Lived

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

Long Lived

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

Maintainability

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

What benefits Short Term

    Shortcuts
    Speed
    Reusing abstractions or existing frameworks

What benefits Long Term

    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

Product Engineering

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?

Digital Agency Engineer

    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
Last modified 1yr ago