What I don't know

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