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
"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 updated
Was this helpful?