Programmer Competences List

Junior

  1. Desire to learn and improve
  2. Using functions, variables, if statements, and loops – any language
  3. Basic data structures: array, linked list, hash map, set, graph, tree
  4. Basic OOP concepts: object, class, inheritance, polymorphism – any language
  5. Hashing functions (message digest)
  6. Highschool-level math + limits, derivatives, and basic calculus
  7. Git
  8. 2 x effort

Normal/Mid

  1. Desire to learn and improve
  2. Algorithms: big O notation, sorting, hash functions
  3. Data structures: vector (aka array list), red–black tree
  4. Security basics: password hashing, TLS
  5. Typecasting
  6. Networking basics: IP, masks, gateways, packets, UDP, TCP
  7. Concurrency: dirty reads, non-repeatable reads, locking, races, synchronization, communication
  8. Virtualization
  9. Containerization
  10. Date and Time concepts

Senior

  1. Desire to learn and improve
  2. Computer architecture: instructions stream, branching, registers, cache lines
  3. Cloud architecture: VMs, containers, cloud functions, serverless
  4. AI: machine learning, models, neural networks
  5. At least basic principles of UI design and UX + ARIA
  6. Garbage Collectors

Resources

https://docs.oracle.com/javase/tutorial/datetime/TOC.html
https://hpbn.co/
https://asciidoctor.org/docs/
https://en.wikipedia.org/wiki/Hash_function
https://blog.cloudflare.com/the-history-of-the-url/
https://www.usertesting.com/blog/gestalt-principles
https://www.w3.org/TR/wai-aria-practices-1.1/#intro
https://tls.ulfheim.net/
https://blog.prototypr.io/the-most-important-rule-in-ux-design-that-everyone-breaks-1c1cb188931
http://tutorials.jenkov.com/java-nio/non-blocking-server.html
http://tutorials.jenkov.com/java-performance/modern-hardware.html
https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/

https://nipafx.dev/junit-5-architecture-jupiter#
http://tutorials.jenkov.com/java-performance/jmh.html

Fast Inverse Square Root — A Quake III Algorithm