aizatto.com
  • aizatto.com
  • Table of Contents
  • Portfolio, Projects, Tools, Toys
  • Interview Guide
    • Choosing A Company
    • Job Boards
    • Practice
    • Technical Interview Cheatsheet
    • Interview Process
      • Questions to Ask
      • Coding
      • Soft Skills
      • Rejection
      • Negotiation / Deciding
      • Accepting, Joining
    • FAQ
  • Engineering Code
    • Communication
    • Different Types of Coding
    • Commit Messages
    • Reviewing Code
      • Requesting Changes
    • Writing Code
      • Consistency
      • Writing for a code base of 1,000,000+ Lines
      • Write Code Knowing It Will Be Refactored
      • Naming
        • Versioning
        • Create Searchable Names
      • Commenting
        • Don't commit commented code
      • Make It Easy To Reproduce
      • Scripts
      • 80 character limit
      • Exit Early
      • Be careful of enum in switch statements
      • Be careful about chaining conditions
      • Be careful of chaining ternary operators
      • Write Code Knowing You Will be Blamed
      • Hacks
      • Bad Practices
      • Logs
      • Time
      • Other rules
    • Engineering Code
    • Engineering Data
    • Pipelines
    • Configuration Files
    • Site Reliability Engineering (SRE)
    • Best Engineers
  • Engineering Management
    • Hiring
    • New Reports
    • 1:1s
      • Calibration
      • Expectations
      • Mentorship / Learning / Growing
      • Task Management
      • Teams
    • Interviewing Candidates
    • Messenger Groups
    • Resources
  • Why GitBook?
  • Getting into Tech
    • Terminology
  • Personal Goals
  • Daily Drivers
  • Contacting Me
  • Notes
    • JavaScript
      • Array
      • Async & Await / Promises
      • Booleans
      • Collections
      • Cons/Dislikes
      • fetch
      • Map
      • Modules
      • Object
      • Regex
      • Set
      • Style Guides
      • Versions
    • Node.js
      • Best Practices
      • DraftJS
      • eslint
      • GraphQL
      • Relay
      • Hapi
      • Knex
      • Koa
      • TypeScript
      • Webservers
    • Technical Due Diligence
    • Archive
      • Amazon Echo Dot (3rd Gen) with clock
      • Apple
        • AirPods Pro
        • Apple Notes
        • Apple Watch Series 4
        • iPad Pro 11" 2018
        • MacBook Pro 15" 2017
        • macOS
      • Audible
      • Balance
        • Growth vs Contentment
        • Leading vs Following
        • Mindful vs Mindless
        • New vs Old
      • Bags
      • Bandwidth Requirements
      • B2B/B2C
      • Blockchain
      • Board Games
        • Bang
      • Broadway
      • Cheap, Good, Fast
      • CLI
        • git
        • ufw
        • xargs
      • Cloud Providers
        • GCP
      • Communication
        • Asking Questions / Making Requests
        • Making Edits
        • Synchronous vs Asynchronous
        • Change Management
        • Problem Definition
      • Company
        • All Hands
        • The Problematic CTO
        • Organizational Structure
      • Content Creation
      • COVID 19/Corona Virus
      • Coworking Spaces
      • Daily Routine
      • Dating
      • Displays / Monitors
      • DNS
      • Domain Registrars
      • Driving
      • eCommerce
      • Empire Building
      • Facebook for Developers
      • Fever
      • Fiverr
      • Flights
      • Gaming Tablet
      • GitHub
      • GTD
      • Go Lang
      • Headsets
      • Hiking
        • Chamang Waterfalls
        • Kanching Waterfalls
        • Kota Damansara Community Forest Reserve
        • Sungai Chilling
      • Home Device Calling
      • iCalendar
      • Keyboards
        • Ergodox Ez
      • Malaysia Insurance
      • Mental Health Malaysia
      • Multiroom Wireless Speaker System
      • Musicals
      • Mouse
      • Movies
      • Password Managers
      • Phabricator
      • Physical Health
        • Cardio
      • Podcasts
      • Programming Bootcamps
      • Property
      • Productivity
        • Note Taking
      • Redang
      • Relationships
      • Referral Codes
      • Remote Calls
      • Remote Work
        • Comparison
      • Road Trips
      • Ruby / Ruby on Rails
      • Scraping
      • Slack
      • Stripe
      • Singapore
      • UX
      • Venture Builder
      • Video Games
      • Virtual Personal Assistant
      • VPN
      • WebDAV / CalDAV
      • WebSocket
      • Withings
      • Xiaomi Roborock Mijia
      • Old Hardware
        • Netgear R7000P
      • Web Development
        • React
        • SSO Providers
      • Software Engineering
        • Software Architectures
          • Monolithic
          • Non-Monolithic
            • Microservice
            • FaaS (Functions as a Service) or Serverless
        • Repository Management
  • More on Notion
Powered by GitBook
On this page
  • Balance
  • Code Longevity
  • Maintainability
  • What benefits Short Term
  • What benefits Long Term
  • Product Engineering
  • Digital Agency Engineer

Was this helpful?

  1. Engineering Code

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

PreviousCommunicationNextCommit Messages

Last updated 5 years ago

Was this helpful?

From :

Forbes