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
β¬οΈ memoize
β¬οΈ Symbol
π¦ linter
π¨ async function
π¨ new Error
π¦ factory
π¨ string parsing
β¬οΈ prettier
π¨ call, bind, apply
π¦ pool
π¨ timers
π¦ unittest
π¨ Array
π¦ wrapper
π¨ EventEmitter
π¦ git
π¨ instanceof
π¨ default parameters
π¨ RegExp
π¦ github
π¨ ...spread
π¨ 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