I was looking at https://sijinjoseph.com/programmer-competency-matrix/ and I realized I’ve come a long way. Things I could work on:

  • Datastructures: “…Able to explain how hashtables can be implemented and can handle collisions, Priority queues and ways to implement them etc.” I do know how to implement a hashtables, a priority queue not so much.
  • Algorithms: “Tree, Graph, simple greedy and divide and conquer algorithms, is able to understand the relevance of the levels of this matrix.”
  • Systems programming: “Basic understanding of compilers, linker and interpreters. Understands what assembly code is and how things work at the hardware level. Some knowledge of virtual memory and paging. Understands kernel mode vs. user mode, multi-threading, synchronization primitives and how they’re implemented, able to read assembly code…”
  • Automated testing: “Has written automated unit tests and comes up with good unit test cases for the code that is being written Has written code in TDD manner”
  • Source tree organization: “No circular dependencies, binaries, libs, docs, builds, third-party code all organized into appropriate folders”
  • Defensive coding: “Doesn’t understand the concept. Checks all arguments and asserts critical assumptions in code. Makes sure to check return values and check for exceptions around code that can fail”. I didn’t know it was called defensive coding.
  • Error Handling: “Ensures that error/exceptions leave program in good state, resources, connections and memory is all cleaned up properly”
  • frameworks: “Has used more than one framework in a professional capacity and is well-versed with the idioms of the frameworks.”
  • DBs: “Able to design good and normalized database schemas keeping in mind the queries that’ll have to be run, proficient in use of views, stored procedures, triggers and user defined types. Knows difference between clustered and non-clustered indexes. Proficient in use of ORM tools.”
  • languages with prof. expereince: “…added bonus if they understand static vs dynamic typing, weak vs strong typing and static inferred types”
  • Books: “Code Complete, Don’t Make me Think, Mastering Regular Expressions, Design Patterns, Peopleware, Programming Pearls, Algorithm Design Manual, Pragmatic Programmer, Mythical Man month”

C++ vs GO

I don’t really see why I can’t use Go to build the server vs C++ when the devices we’re developing it for will not really be handling a lot of traffic. Or will it?