Improvement areas:
- Domain modeling - Improve OO programming
- Understand the requirements of a domain before starting
- Create the lowest-level (smallest, least powerful) domain model and start defining its properties and characteristics
- Work you way up (solving the main problems of the domain) and pushing the abstractions to the lowest layer possible
- Understanding tradeoffs of instance lifecycles - e.g. using a singleton vs. creating new instances
- Back-end development - Become familiar with Go, Java, and Python
- Understand backpressure
- Multithreaded vs. single threaded
- Mutex (mutual exclusion)
- Security & Auth -
- Learn more about OAuth
- Tokens - when do they expire? How do you revalidate / get new tokens once the old ones expire?
- Common security loopholes in webapp
- XSS (cross-site scripting)
- CSRF (cross site request forgery)
- DDOS (distributed denial of service)
-
Low-level development
- Memory management
- GC (ref. counting vs. mark and sweep)
- Heap vs. stack
- Javascript VM in the browser
- JIT, inline optimization
- Fundamentals of CSS / Sass - Understanding basic CSS / Sass concepts and being able to figure out advanced issues on my own:
- Box sizing model (e.g. border box)
- Floats (when you use them, why it's a hack)
- Specificity (is it !important, ID, class, element?)
- Inline styles are prioritized over linked stylesheets? Does last linked stylesheets win when the specificity is tied?
-
Production monitoring & health
- Understand what Elasticsearch, Logstash, and Kibana do
- Creating dashboards in Kibana / Grafana