Personal profile of software engineering skills
⬜ Optional, 🟦 Required for all, 🟨 Required for js, 🟩 Learned, 🟥 Declined
Syntax
Statements
Functions
Data structures
Process & style
🟦 value
🟦 if
🟦 recursion
🟦 array
🟦 refactoring
🟦 identifier
🟦 loops
🟦 function
🟦 instance
🟦 code review
🟦 variable
🟦 assignment
🟦 return
🟦 object
🟦 antipatterns
🟦 constant
🟨 prototype
🟦 signature
🟦 collection
🟦 paradigm
🟦 scalar
🟦 class
🟦 argument
🟦 hash table
🟦 algorithm
🟦 literal
🟦 while
🟦 parameter
🟦 linked list
🟦 magic numbers
🟦 expression
🟦 do..while
🟦 pure function
🟦 queue
🟦 hardcode
🟦 heap
🟦 for
🟦 lambda
🟦 stack
🟦 complexity
🟦 type
🟨 for..in
🟦 side effects
🟦 deque
🟦 decomposition
🟦 primitive types
🟨 for..of
🟦 closure
🟦 serialization
⬜️ spaghetti
🟦 reference
🟨 for await
🟦 partial
🟦 mixin, extend
⬜️ silver bullet
🟦 flag
🟦 throw
⬜️ curry
🟨 iterator
⬜️ not invented here
🟦 lexical scope
🟦 try..catch
🟦 chaining
🟨 typed arrays
🟦 dead code
🟦 code block
🟦 equality operators
🟦 higher order
🟨 Map
🟦 unreachable code
🟨 Object
🟦 logical operators
🟦 callback
🟨 Set
🟦 duplicate code
🟨 this
🟦 bitwise operators
🟦 listener
⬜️ weak collections
🟦 exception
🟨 arrow function
🟦 break, continue
⬜️ pipe
⬜️ Proxy
🟦 return early
🟨 generator
🟦 switch
⬜ compose
⬜️ Symbol
🟦 linter
🟨 async function
🟨 new Error
⬜️ memoize
🟨 string parsing
⬜️ prettier
🟨 call, bind, apply
🟦 factory
🟨 timers
🟦 unittest
🟨 Array
🟦 pool
🟨 EventEmitter
🟦 git
🟨 instanceof
🟦 wrapper
🟨 RegExp
🟦 github
🟨 ...spread
🟨 default parameters
🟨 global
🟨 node.js
🟨 ...rest
🟨 undefined
🟨 npm
🟨 typeof
🟦 null
Multi-paradigm programming
Theory
OOP basics
Abstractions
Patterns
🟦 Procedural programming
🟦 constructor
⬜ struct, record
🟦 Singleton
🟦 Imperative programming
🟦 new
⬜ Mutable state
🟦 Structured programming
🟦 Static method
⬜ Immutable state
🟦 Non-structured programming
🟦 Method
⬜ Enum
🟦 Functional programming
🟦 Async method
🟦 Linked list
🟦 Prototype-based programming
🟦 Getters, Setters
🟦 Doubly list
🟦 Object-oriented programming
🟦 Public fields
🟦 Unrolled list
⬜ Object-based programming
🟦 Private fields
🟦 Circular list
🟦 Generic programming
🟦 Field declarations
🟦 Trees
🟦 Concurrent computing
🟦 Inheritance
🟦 Graphs
🟦 Asyncronous programming
🟦 Parent class
🟦 Functor
🟦 Parallel programming
🟦 Polymorphism
🟦 Functional object
🟦 Reactive programming
🟦 Abstract class
⬜ Monad
⬜ FRP (Functional-reactive)
🟦 Interface
🟦 Generator
🟦 Automata-based programming
🟦 Encapsulation
🟦 Iterator
🟦 Domain-specific languages
⬜ Hidden class
🟦 Async Iterator
🟦 Multi-paradigm programming
⬜ Object form
⬜ Metaprogramming
🟦 instance
⬜ Actor model
⬜ Introspection
⬜ Reflection
Async contracts
JavaScript & Node.js specific
Theory
Techniques
🟦 Callback-last
🟦 Timers
🟦 Event Loop
⬜ async.js library
🟦 Error-first
🟦 setImmediate
🟦 Async error
⬜ Async composition
🟦 Promise
🟦 nextTick
🟦 try..catch
⬜ Rx.js
🟦 Async function
🟦 AbortController
🟦 Non-blocking
🟦 Sequential async
🟦 await
🟦 Promise unhandled rejection
🟦 Async I/O
🟦 Parallel async
🟦 Generator
🟦 Promise double resolve
🟦 Pattern Reactor
🟦 Promise.all
🟦 Async Generator
🟦 child_process
⬜ CAS operations
🟦 Promise.allSettled
🟦 Async Iterator
🟦 worker_threads
⬜ epoll
🟦 Promise.race
🟦 Thenable
🟦 Atomics
⬜ kqueue
🟦 Promise.any
🟦 EventEmitter
🟦 Blockeing operations
⬜ Completion ports
⬜ Web Locks API
⬜ Cancelable callback
🟦 Non-blocking loop for Array
⬜ Event ports
⬜ Async Pool
⬜ Cancelable Promise
⬜ High resolution clock
🟦 libuv
⬜ Thread Pool
🟦 Asynchronous Queue
🟦 Callback hell
🟦 Race conditions
🟦 callbackify
⬜ Future
🟦 Promise hell
🟦 Dead locks
🟦 promisify
⬜ Deferred
🟦 Live locks
⬜ IPC
🟦 Observer
⬜ Actor Model
⬜ Channel API
⬜ Async Collector
⬜ Revealing Constructor
⬜ Coroutine
⬜ Goroutine
Internals
Theory
Network
Technique
Problems
🟦 Nonblocking I/O
🟦 I/O bound tasks
🟦 HTTP(S)
🟦 Logging
🟦 Memory leaks
🟦 Event Loop
🟦 CPU bound tasks
🟦 TCP/SSL
🟦 Testing
🟦 Resource leaks
🟦 commonjs
🟦 Memory bound tasks
🟦 UDP
⬜ CI/CD
🟦 Blocking code
🟦 ECMA modules
🟦 Multilayer approach
🟦 TLS
🟦 Readable
🟦 Data race
🟦 Network API
🟦 Separation of concerns
🟦 Websocket
🟦 Writable
🟦 Graceful Shutdown
⬜ Addons
🟦 Inversion of control
⬜ SSE
🟦 Transform
🟦 Dependencies
⬜ N-API
🟦 Dependency injection
⬜ HTTP/3 (QUIC)
⬜ back pressure
⬜ Webassembly
🟦 GRASP for JS and Node.js
⬜ Long polling
🟦 Buffer
🟦 npm
🟦 SOLID for JS and Node.js
🟦 REST
🟦 Console
🟦 node_modules
🟦 GoF for JS and Node.js
🟦 RPC
🟦 Inspector
🟦 package.json
⬜ Distributed systems
🟦 Routing
🟦 Reliability
🟦 vm isolation
⬜ Highload applications
🟦 IP sticky
🟦 Quality
🟦 command line args
🟦 DDD
🟦 DoS
🟦 Availability
⬜ Node.js CLI
🟦 Clean architecture
🟦 DDoS
🟦 Flexibility
🟦 Streams
🟦 Domain in the middle
🟦 XSS
🟦 Clustering
🟦 Message Queue
🟦 Path traversal
⬜ Load balancing
🟦 Transport-agnostic server
🟦 CSRF
⬜ Serverless clouds
🟦 Framework-agnostic app
🟦 DNS
⬜ FaaS clouds
⬜ Interactive applications
🟦 Fetch
🟦 Debugging node.js
⬜ Real-time applications
🟦 zlib
🟦 crypto
🟦 CQS and CQRS
⬜ SharedArrayBuffer
🟦 Event Sourcing
🟦 child_process
🟦 Shared memory
🟦 worker_threads
⬜ Cybersecurity
⬜ TDD
⬜ Quality
⬜ Mobile applications
⬜ High-performance computing
⬜ Edge computing
⬜ Data warehouse
⬜ Low-code and no-code platforms