Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
119 lines (80 sloc) 2.25 KB

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?
You can’t perform that action at this time.