The Imbalanced Programmer
There are three big categories important to being a skilled programmer. Your hat as a mathematician, an engineer, and an author.
The Mathematician Hat
- Choosing proper data structures (and algorithms) that allow easily modeling the problem at hand.
- Decomposing things into building blocks. In math, these are vectors, number systems, algebras, and more.
- Modeling relations between things.
- The occasional back of napkin Big-O analysis.
The imbalanced mathematician programmer-
- Uses terse math symbols and abbreviations in code.
- Wants to write everything in lesser supported functional programming languages.
- Turns everything into category theory.
- Makes code too abstract.
- Wastes too much time deciding which type of
treedata structure to use.
- Is great at leetcode but falls flat on their face when confronted with real life problems.
The Engineer Hat
- Trade-offs between theory and reality.
- Glueing things together.
- Infrastructure concerns, logging, monitoring, stability, etc.
- Understanding of technology concepts, frameworks, and how it all fits together.
- Picking tech stacks.
The imbalanced engineer programmer-
- Spends too much time on shiny technologies.
- Uses a piece of tech simply for the sake of using it.
- Is prone to premature scaling / worrying about scale.
- Is prone to premature optimization.
- Wants to use the latest things for little reason other than newness.
- All of the principles one has to keep in mind when writing code. SOLID, DRY, KISS, YAGNI, Consistency, Coupling and Cohesion, "write readable code", "write testable code", "write code that's easy to delete". There is a never ending supply of these.
- Naming. One of the hardest things in programming.
- Maintaining conceptual integrity.
- Creating Good Abstractions.
The imbalanced author programmer-
- Spends too much time coming up with a variable name that's lifetime is only 3 lines of code.
- Spends too much time coming up with a perfect interface for rarely used or throw away code.
- Nitpicks too much instead of focusing on the big picture.
- Writes long variable names that have too much context, aka over communicates.
- Worried about the wrong kinds of consistency.
The Hidden Hat; Entrepreneur
- Spending time solving the right problems.
- Building things people actually want.
- Verbal communication.
- Deeply understanding the domain they're working in.
- 23 toasts