Organization, Estimations & Methodology
- Complex problems might lead to over engineering
- Discovery requires time
- Premature optimization is procrastination
- Fully implementing unknown tasks can be bad
- Task stages can be known or unknown
- There are two types of work
- One can only estimate imagined work
- Cognitive complexity
- Aggressive timekeeping in meetings reduces meeting time
- Glue work
Software Design Philosophy & Simplicity
- Banana software
- Last responsible moment
- Software should be delightfully boring
- Frighteningly interesting software
- Micro services should not be the default
- Keeping things simple is a skill
- Duck Features
- Don’t strive for perfect
- Over engineering is bad for a project
- Cutting scope can ensures software quality
- Content history is a core feature
- Employability is mostly about your experiences
- Llms bring skill atrophy to programmers
- Schrödinger Backups
Growth work
- growth work
- growth work should not interfere with base work
- growth work broadens your experiences
- growth work is compounding
- growth work should be optional and be freeing
Incremental development
Product design & UX
- Button state vs Button action
- Be resilient against feature requests
- Cutting features can improve a product
- A product should be simple and easy to use
- Features are either valuable or waste
Observability
- Logs
- Traces
- Traces are sequences of logs
- Traces can slow down a program
- logs and traces can contain PII
Structured and unstructured logging
- Structured logging
- Semi structured logs
- Tools unleashes the power of structured logging
- structured logs are hard to read as a human
- Structured logs explode in size
Architectures
Data & Data structures
Devops
- A successful infrastructure is one you forget about
- Self documenting systems
- Basic documentation is a must for system administration