From 337386967286e42fbf1c200f7727f51dcdcd070d Mon Sep 17 00:00:00 2001 From: Timur Shemsedinov Date: Sat, 27 Jan 2024 07:21:23 +0200 Subject: [PATCH 1/2] Add paradigm-related skills --- Skills/Paradigms.md | 18 ++++++++++++++++++ Skills/Programming.md | 11 ++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/Skills/Paradigms.md b/Skills/Paradigms.md index 8858f3588..109740fb9 100644 --- a/Skills/Paradigms.md +++ b/Skills/Paradigms.md @@ -24,6 +24,8 @@ - Black box - Information hiding - Aspect-oriented programming + - Anemic domain model + - Class composition - OOP basics - Constructor - Operator `new` @@ -46,6 +48,22 @@ - Introspection - Reflection - The diamond problem +- GRASP + - Information expert + - Creator + - Controller + - Indirection + - Low coupling + - High cohesion + - Polymorphism + - Protected variations + - Pure fabrication +- SOLID + - Single-responsibility principle (SRP) + - Open–closed principle (OCP) + - Liskov substitution principle (LSP) + - Interface segregation principle (ISP) + - Dependency inversion principle (DIP) - Patterns - Singleton - Factory Method diff --git a/Skills/Programming.md b/Skills/Programming.md index c758e86c7..c7ff40af2 100644 --- a/Skills/Programming.md +++ b/Skills/Programming.md @@ -7,9 +7,16 @@ - Algorithm - Syntax - Semantics + - Abstraction + - Paradigm - Programm - Programming paradigm - Programming language + - Contract + - Module + - Library + - Package + - Component - Framework - Platform - Source code @@ -48,8 +55,7 @@ - Assignment - Regular expression - Interface - - Contract - - Module + - Namespaces - Call stack - Naming conventions - Coding conventions @@ -156,7 +162,6 @@ - Garbage collection - Refactoring - Code review - - Paradigm - Exception - Unittesting - git From a056412369fedb5e52da9218a252fde393411a0f Mon Sep 17 00:00:00 2001 From: Metarhia skill bot Date: Sat, 27 Jan 2024 13:19:11 +0000 Subject: [PATCH 2/2] Automated skill analysis and report --- Profile/REPORT.md | 422 ++++++++++++++++++++++++++++++++++++++++++++ README.md | 19 +- Skills/Paradigms.md | 1 - 3 files changed, 428 insertions(+), 14 deletions(-) diff --git a/Profile/REPORT.md b/Profile/REPORT.md index e84bed6f0..72dcb28fb 100644 --- a/Profile/REPORT.md +++ b/Profile/REPORT.md @@ -1 +1,423 @@ ## Software engineering self assessment + +[![Skills](https://img.shields.io/badge/Self_Assessment-skills-009933?style=flat-square)](https://github.com/HowProgrammingWorks/SelfAssessment) + +``` +[![Skills](https://img.shields.io/badge/Self_Assessment-skills-009933?style=flat-square)](https://github.com/HowProgrammingWorks/SelfAssessment) +``` + +``` +Skills +``` + +## Assessment totals + +- Programming + - Concepts: `0` of `30` + - Syntax and concepts: `0` of `33` + - Types: `0` of `14` + - Functions: `0` of `23` + - Data structures: `0` of `26` + - Networking: `0` of `9` + - Process and tools: `0` of `28` + - Antipatterns: `0` of `30` + - Runtimes and virtual machines: `0` of `5` + - Operation systems: `0` of `13` + - Standards: `0` of `15` +- JavaScript + - Language: `0` of `57` + - Statements: `0` of `19` + - Functions: `0` of `10` + - Data structures: `0` of `7` + - Standard classes and namespaces: `0` of `14` + - Infrastructure: `0` of `6` +- Async + - Theory: `0` of `20` + - Async contracts: `0` of `18` + - Async adapters and utils: `0` of `5` + - Async abstractions interfaces: `0` of `11` + - JavaScript & Node.js specific: `0` of `17` + - Techniques: `0` of `10` +- NodeJS + - Internals and concepts: `0` of `9` + - Modularity, layers and dependencies: `0` of `14` + - Environment: `0` of `6` + - Internal API: `0` of `26` + - Network: `0` of `28` + - Technique and tools: `0` of `12` + - Data access: `0` of `7` + - Error handling and debugging: `0` of `14` + - Integrations and bindings: `0` of `16` +- Paradigms + - Theory: `0` of `25` + - OOP basics: `0` of `21` + - GRASP: `0` of `8` + - SOLID: `0` of `5` + - Patterns: `0` of `25` +- Architecture + - Application structure: `0` of `22` + - Application architecture: `0` of `36` + - Solution architecture: `0` of `18` + - Enterprise architecture: `0` of `18` + +## JavaScript + +- To start asynchronous programming + - `Object`: 🀷 unknown ⟢ πŸ–οΈ used + - `Function`: 🀷 unknown ⟢ πŸ–οΈ used + - `Boolean`: 🀷 unknown ⟢ πŸ–οΈ used + - `Number`: 🀷 unknown ⟢ πŸ–οΈ used + - `Symbol`: 🀷 unknown ⟢ πŸŽ“ known + - `undefined`: 🀷 unknown ⟢ πŸ–οΈ used + - `null`: 🀷 unknown ⟢ πŸ–οΈ used + - `this`: 🀷 unknown ⟢ πŸ–οΈ used + - `instanceof`: 🀷 unknown ⟢ πŸ–οΈ used + - `...spread`: 🀷 unknown ⟢ πŸ–οΈ used + - `...rest`: 🀷 unknown ⟢ πŸ–οΈ used + - `typeof`: 🀷 unknown ⟢ πŸ–οΈ used + - Destructuring: 🀷 unknown ⟢ πŸ–οΈ used + - Generators: 🀷 unknown ⟢ πŸ‘‚ heard + - Iterators: 🀷 unknown ⟢ πŸ‘‚ heard + - Async generator: 🀷 unknown ⟢ πŸ‘‚ heard + - Async iterator: 🀷 unknown ⟢ πŸ‘‚ heard + - Chaining: 🀷 unknown ⟢ πŸ‘‚ heard + - Optional chaining: 🀷 unknown ⟢ πŸ‘‚ heard + - IIFE: 🀷 unknown ⟢ πŸ‘‚ heard + - Async IIFE: 🀷 unknown ⟢ πŸ‘‚ heard + - `global`: 🀷 unknown ⟢ πŸŽ“ known + - `globalThis`: 🀷 unknown ⟢ πŸ‘‚ heard + - Getters and setters: 🀷 unknown ⟢ πŸ‘‚ heard + - `prototype`: 🀷 unknown ⟢ πŸ‘‚ heard + - Equality operators: 🀷 unknown ⟢ πŸ–οΈ used + - Logical operators: 🀷 unknown ⟢ πŸ–οΈ used + - Ternary operator: 🀷 unknown ⟢ πŸ–οΈ used + - `yield`: 🀷 unknown ⟢ πŸ‘‚ heard + - `await`: 🀷 unknown ⟢ πŸ‘‚ heard + - Template literal: 🀷 unknown ⟢ πŸ–οΈ used + - Strict mode: 🀷 unknown ⟢ πŸ–οΈ used + - `super`: 🀷 unknown ⟢ πŸ–οΈ used + - `static`: 🀷 unknown ⟢ πŸ‘‚ heard + - Private class fields: 🀷 unknown ⟢ πŸŽ“ known + - Private class methods: 🀷 unknown ⟢ πŸŽ“ known + - `if`: 🀷 unknown ⟢ πŸ–οΈ used + - `while`: 🀷 unknown ⟢ πŸ–οΈ used + - `do..while`: 🀷 unknown ⟢ πŸŽ“ known + - `for`: 🀷 unknown ⟢ πŸ–οΈ used + - `for..of`: 🀷 unknown ⟢ πŸ–οΈ used + - `for await`: 🀷 unknown ⟢ πŸ‘‚ heard + - `throw`: 🀷 unknown ⟢ πŸ–οΈ used + - `break`: 🀷 unknown ⟢ πŸŽ“ known + - `continue`: 🀷 unknown ⟢ πŸŽ“ known + - `import`: 🀷 unknown ⟢ πŸŽ“ known + - `export`: 🀷 unknown ⟢ πŸŽ“ known + - `try..catch`: 🀷 unknown ⟢ πŸŽ“ known + - `class`: 🀷 unknown ⟢ πŸ–οΈ used + - `extends`: 🀷 unknown ⟢ πŸ–οΈ used + - `new`: 🀷 unknown ⟢ πŸ–οΈ used + - Arrow function: 🀷 unknown ⟢ πŸ–οΈ used + - Async function: 🀷 unknown ⟢ πŸŽ“ known + - Function declaration: 🀷 unknown ⟢ πŸ–οΈ used + - Function expression: 🀷 unknown ⟢ πŸ–οΈ used + - Default parameters: 🀷 unknown ⟢ πŸ–οΈ used + - Functional object: 🀷 unknown ⟢ πŸ‘‚ heard + - `return`: 🀷 unknown ⟢ πŸ–οΈ used + - `Array`: 🀷 unknown ⟢ πŸ–οΈ used + - `Map`: 🀷 unknown ⟢ πŸ–οΈ used + - `Set`: 🀷 unknown ⟢ πŸ–οΈ used + - Mixins: 🀷 unknown ⟢ πŸŽ“ known + - `Object.assign`: 🀷 unknown ⟢ πŸŽ“ known + - `Proxy`: 🀷 unknown ⟢ πŸŽ“ known + - `Error`: 🀷 unknown ⟢ πŸ–οΈ used + - `WeakRef`: 🀷 unknown ⟢ πŸ‘‚ heard + - `FinalizationRegistry`: 🀷 unknown ⟢ πŸ‘‚ heard + - `Promise`: 🀷 unknown ⟢ πŸ‘‚ heard + - `console`: 🀷 unknown ⟢ πŸ–οΈ used + - Timers: 🀷 unknown ⟢ πŸ–οΈ used + - V8: 🀷 unknown ⟢ πŸ‘‚ heard + - prettier: 🀷 unknown ⟢ πŸŽ“ known + - Total: you have `0` of `72` skills, `72` to be upgraded, and `0` above needed +- To start Node.js + - `Object`: 🀷 unknown ⟢ πŸ–οΈ used + - `Function`: 🀷 unknown ⟢ πŸ–οΈ used + - `Boolean`: 🀷 unknown ⟢ πŸ–οΈ used + - `Number`: 🀷 unknown ⟢ πŸ–οΈ used + - `BigInt`: 🀷 unknown ⟢ πŸ–οΈ used + - `String`: 🀷 unknown ⟢ πŸ–οΈ used + - `Symbol`: 🀷 unknown ⟢ πŸ–οΈ used + - `Infinity`: 🀷 unknown ⟢ πŸ–οΈ used + - `NaN`: 🀷 unknown ⟢ πŸ–οΈ used + - `undefined`: 🀷 unknown ⟢ πŸ–οΈ used + - `null`: 🀷 unknown ⟢ πŸ–οΈ used + - `this`: 🀷 unknown ⟢ πŸ–οΈ used + - `instanceof`: 🀷 unknown ⟢ πŸ–οΈ used + - `...spread`: 🀷 unknown ⟢ πŸ–οΈ used + - `...rest`: 🀷 unknown ⟢ πŸ–οΈ used + - `typeof`: 🀷 unknown ⟢ πŸ–οΈ used + - Destructuring: 🀷 unknown ⟢ πŸ–οΈ used + - Generators: 🀷 unknown ⟢ πŸ–οΈ used + - Iterators: 🀷 unknown ⟢ πŸ–οΈ used + - Async generator: 🀷 unknown ⟢ πŸ–οΈ used + - Async iterator: 🀷 unknown ⟢ πŸ–οΈ used + - Chaining: 🀷 unknown ⟢ πŸ–οΈ used + - IIFE: 🀷 unknown ⟢ πŸ–οΈ used + - Async IIFE: 🀷 unknown ⟢ πŸ–οΈ used + - `global`: 🀷 unknown ⟢ πŸ–οΈ used + - `globalThis`: 🀷 unknown ⟢ πŸ–οΈ used + - Getters and setters: 🀷 unknown ⟢ πŸ–οΈ used + - Equality operators: 🀷 unknown ⟢ πŸ–οΈ used + - Logical operators: 🀷 unknown ⟢ πŸ–οΈ used + - Ternary operator: 🀷 unknown ⟢ πŸ–οΈ used + - `void`: 🀷 unknown ⟢ πŸ–οΈ used + - `yield`: 🀷 unknown ⟢ πŸ–οΈ used + - `await`: 🀷 unknown ⟢ πŸ–οΈ used + - Template literal: 🀷 unknown ⟢ πŸ–οΈ used + - Strict mode: 🀷 unknown ⟢ πŸ–οΈ used + - `delete`: 🀷 unknown ⟢ πŸ–οΈ used + - `in`: 🀷 unknown ⟢ πŸ‘‚ heard + - `super`: 🀷 unknown ⟢ πŸ–οΈ used + - `eval`: 🀷 unknown ⟢ πŸŽ“ known + - `static`: 🀷 unknown ⟢ πŸ–οΈ used + - `Number.parseInt`: 🀷 unknown ⟢ πŸ–οΈ used + - `Number.parseFloat`: 🀷 unknown ⟢ πŸ–οΈ used + - Property descriptors: 🀷 unknown ⟢ πŸŽ“ known + - Sealing properties: 🀷 unknown ⟢ πŸŽ“ known + - Freezing properties: 🀷 unknown ⟢ πŸŽ“ known + - Computed properties: 🀷 unknown ⟢ πŸŽ“ known + - Instance class fields: 🀷 unknown ⟢ πŸŽ“ known + - Static class fields: 🀷 unknown ⟢ πŸŽ“ known + - Private class fields: 🀷 unknown ⟢ πŸŽ“ known + - Private class methods: 🀷 unknown ⟢ πŸŽ“ known + - `if`: 🀷 unknown ⟢ πŸ–οΈ used + - `while`: 🀷 unknown ⟢ πŸ–οΈ used + - `do..while`: 🀷 unknown ⟢ πŸ–οΈ used + - `for`: 🀷 unknown ⟢ πŸ–οΈ used + - `for..in`: 🀷 unknown ⟢ πŸŽ“ known + - `for..of`: 🀷 unknown ⟢ πŸ–οΈ used + - `for await`: 🀷 unknown ⟢ πŸ–οΈ used + - `throw`: 🀷 unknown ⟢ πŸ–οΈ used + - `break`: 🀷 unknown ⟢ πŸ–οΈ used + - `continue`: 🀷 unknown ⟢ πŸ–οΈ used + - `import`: 🀷 unknown ⟢ πŸ–οΈ used + - `export`: 🀷 unknown ⟢ πŸ–οΈ used + - `try..catch`: 🀷 unknown ⟢ πŸ–οΈ used + - `class`: 🀷 unknown ⟢ πŸ–οΈ used + - `extends`: 🀷 unknown ⟢ πŸ–οΈ used + - `new`: 🀷 unknown ⟢ πŸ–οΈ used + - Arrow function: 🀷 unknown ⟢ πŸ–οΈ used + - Async function: 🀷 unknown ⟢ πŸ–οΈ used + - Function declaration: 🀷 unknown ⟢ πŸ–οΈ used + - Function expression: 🀷 unknown ⟢ πŸ–οΈ used + - Default parameters: 🀷 unknown ⟢ πŸ–οΈ used + - Functional object: 🀷 unknown ⟢ πŸ‘‚ heard + - `return`: 🀷 unknown ⟢ πŸ–οΈ used + - `Array`: 🀷 unknown ⟢ πŸ–οΈ used + - `Map`: 🀷 unknown ⟢ πŸ–οΈ used + - `Set`: 🀷 unknown ⟢ πŸ–οΈ used + - Weak collections: 🀷 unknown ⟢ πŸŽ“ known + - Typed arrays: 🀷 unknown ⟢ πŸŽ“ known + - Mixins: 🀷 unknown ⟢ πŸ‘‚ heard + - `Object.assign`: 🀷 unknown ⟢ πŸŽ“ known + - `Proxy`: 🀷 unknown ⟢ πŸŽ“ known + - `RegExp`: 🀷 unknown ⟢ πŸŽ“ known + - `Date`: 🀷 unknown ⟢ πŸŽ“ known + - `Math`: 🀷 unknown ⟢ πŸŽ“ known + - `Reflect`: 🀷 unknown ⟢ πŸŽ“ known + - `Error`: 🀷 unknown ⟢ πŸ–οΈ used + - `Atomics`: 🀷 unknown ⟢ πŸ‘‚ heard + - `JSON`: 🀷 unknown ⟢ πŸ–οΈ used + - `WeakRef`: 🀷 unknown ⟢ πŸ‘‚ heard + - `FinalizationRegistry`: 🀷 unknown ⟢ πŸ‘‚ heard + - `Promise`: 🀷 unknown ⟢ πŸ–οΈ used + - `console`: 🀷 unknown ⟢ πŸ–οΈ used + - Timers: 🀷 unknown ⟢ πŸ–οΈ used + - V8: 🀷 unknown ⟢ πŸ–οΈ used + - Node.js: 🀷 unknown ⟢ πŸ‘‚ heard + - npm: 🀷 unknown ⟢ πŸŽ“ known + - prettier: 🀷 unknown ⟢ πŸŽ“ known + - Total: you have `0` of `97` skills, `97` to be upgraded, and `0` above needed + +## Async + +- For Node.js applied programming + - Event loop: 🀷 unknown ⟢ πŸ‘‚ heard + - `try..catch`: 🀷 unknown ⟢ πŸ–οΈ used + - Non-blocking: 🀷 unknown ⟢ πŸ‘‚ heard + - Async I/O: 🀷 unknown ⟢ πŸ‘‚ heard + - Race conditions: 🀷 unknown ⟢ πŸŽ“ known + - Thread: 🀷 unknown ⟢ πŸ‘‚ heard + - Process: 🀷 unknown ⟢ πŸ‘‚ heard + - Callbacks: 🀷 unknown ⟢ πŸ–οΈ used + - Callback-last-error-first: 🀷 unknown ⟢ πŸ–οΈ used + - Promise: 🀷 unknown ⟢ πŸ–οΈ used + - Async/await: 🀷 unknown ⟢ πŸ–οΈ used + - Sync generator: 🀷 unknown ⟢ πŸŽ“ known + - Async Generator: 🀷 unknown ⟢ πŸŽ“ known + - Async Iterator: 🀷 unknown ⟢ πŸŽ“ known + - Event: 🀷 unknown ⟢ πŸ–οΈ used + - Signal: 🀷 unknown ⟢ πŸ–οΈ used + - Stream: 🀷 unknown ⟢ πŸ–οΈ used + - Locks: 🀷 unknown ⟢ πŸŽ“ known + - callbackify: 🀷 unknown ⟢ πŸŽ“ known + - promisify: 🀷 unknown ⟢ πŸŽ“ known + - asyncify: 🀷 unknown ⟢ πŸŽ“ known + - EventEmitter: 🀷 unknown ⟢ πŸ–οΈ used + - Observable/Observer: 🀷 unknown ⟢ πŸ‘‚ heard + - Readable: 🀷 unknown ⟢ πŸ–οΈ used + - Writable: 🀷 unknown ⟢ πŸ–οΈ used + - Transform: 🀷 unknown ⟢ πŸ–οΈ used + - Async Pool: 🀷 unknown ⟢ πŸŽ“ known + - Async Queue: 🀷 unknown ⟢ πŸŽ“ known + - Async Collector: 🀷 unknown ⟢ πŸŽ“ known + - Semaphore: 🀷 unknown ⟢ πŸ‘‚ heard + - Timers: 🀷 unknown ⟢ πŸ–οΈ used + - `setImmediate`: 🀷 unknown ⟢ πŸ–οΈ used + - `nextTick`: 🀷 unknown ⟢ πŸ–οΈ used + - AbortController: 🀷 unknown ⟢ πŸ–οΈ used + - AbortSignal: 🀷 unknown ⟢ πŸŽ“ known + - Callback hell: 🀷 unknown ⟢ πŸŽ“ known + - Promise hell: 🀷 unknown ⟢ πŸŽ“ known + - ref() and unref(): 🀷 unknown ⟢ πŸ‘‚ heard + - Error handling in async code: 🀷 unknown ⟢ πŸ–οΈ used + - Better stack traces with return await: 🀷 unknown ⟢ πŸ–οΈ used + - JSON streaming serialization: 🀷 unknown ⟢ πŸ‘‚ heard + - AsyncLocalStorage: 🀷 unknown ⟢ πŸ‘‚ heard + - AsyncResource: 🀷 unknown ⟢ πŸ‘‚ heard + - RxJS library: 🀷 unknown ⟢ πŸ‘‚ heard + - Promise.all: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.allSettled: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.race: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.any: 🀷 unknown ⟢ πŸ–οΈ used + - Web Locks API: 🀷 unknown ⟢ πŸ‘‚ heard + - Revealing constructor: 🀷 unknown ⟢ πŸŽ“ known + - Total: you have `0` of `50` skills, `50` to be upgraded, and `0` above needed +- To start Node.js + - `try..catch`: 🀷 unknown ⟢ πŸ–οΈ used + - Callbacks: 🀷 unknown ⟢ πŸ–οΈ used + - Callback-last-error-first: 🀷 unknown ⟢ πŸ‘‚ heard + - Promise: 🀷 unknown ⟢ πŸ–οΈ used + - Async/await: 🀷 unknown ⟢ πŸ–οΈ used + - Async Iterator: 🀷 unknown ⟢ πŸŽ“ known + - Event: 🀷 unknown ⟢ πŸ–οΈ used + - Signal: 🀷 unknown ⟢ πŸŽ“ known + - Stream: 🀷 unknown ⟢ πŸŽ“ known + - Chain of responsibility: 🀷 unknown ⟢ πŸ‘‚ heard + - Middleware: 🀷 unknown ⟢ πŸ‘‚ heard + - Locks: 🀷 unknown ⟢ πŸ‘‚ heard + - callbackify: 🀷 unknown ⟢ πŸŽ“ known + - promisify: 🀷 unknown ⟢ πŸŽ“ known + - asyncify: 🀷 unknown ⟢ πŸŽ“ known + - EventEmitter: 🀷 unknown ⟢ πŸ–οΈ used + - Readable: 🀷 unknown ⟢ πŸŽ“ known + - Writable: 🀷 unknown ⟢ πŸŽ“ known + - Transform: 🀷 unknown ⟢ πŸŽ“ known + - Async Pool: 🀷 unknown ⟢ πŸŽ“ known + - Async Queue: 🀷 unknown ⟢ πŸŽ“ known + - Async Collector: 🀷 unknown ⟢ πŸŽ“ known + - Timers: 🀷 unknown ⟢ πŸ–οΈ used + - `setImmediate`: 🀷 unknown ⟢ πŸ–οΈ used + - `nextTick`: 🀷 unknown ⟢ πŸ‘‚ heard + - AbortController: 🀷 unknown ⟢ πŸ–οΈ used + - AbortSignal: 🀷 unknown ⟢ πŸŽ“ known + - Callback hell: 🀷 unknown ⟢ πŸŽ“ known + - Promise hell: 🀷 unknown ⟢ πŸŽ“ known + - Error handling in async code: 🀷 unknown ⟢ πŸ–οΈ used + - Better stack traces with return await: 🀷 unknown ⟢ πŸ–οΈ used + - JSON streaming serialization: 🀷 unknown ⟢ πŸ‘‚ heard + - Promise.all: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.allSettled: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.race: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.any: 🀷 unknown ⟢ πŸ–οΈ used + - Revealing constructor: 🀷 unknown ⟢ πŸ‘‚ heard + - Total: you have `0` of `37` skills, `37` to be upgraded, and `0` above needed +- For Node.js platform/system programming + - Event loop: 🀷 unknown ⟢ πŸŽ“ known + - `try..catch`: 🀷 unknown ⟢ πŸ–οΈ used + - Non-blocking: 🀷 unknown ⟢ πŸŽ“ known + - Async I/O: 🀷 unknown ⟢ πŸŽ“ known + - Thread pool: 🀷 unknown ⟢ πŸŽ“ known + - Pattern Reactor: 🀷 unknown ⟢ πŸŽ“ known + - CAS operations: 🀷 unknown ⟢ πŸ‘‚ heard + - libuv: 🀷 unknown ⟢ πŸŽ“ known + - Race conditions: 🀷 unknown ⟢ πŸ–οΈ used + - Dead locks: 🀷 unknown ⟢ πŸ–οΈ used + - Live locks: 🀷 unknown ⟢ πŸ–οΈ used + - Concurrent programming: 🀷 unknown ⟢ πŸŽ“ known + - Parallel programming: 🀷 unknown ⟢ πŸŽ“ known + - Actor Model: 🀷 unknown ⟢ πŸŽ“ known + - Thread: 🀷 unknown ⟢ πŸ–οΈ used + - Process: 🀷 unknown ⟢ πŸ–οΈ used + - Callbacks: 🀷 unknown ⟢ πŸ–οΈ used + - Callback-last-error-first: 🀷 unknown ⟢ πŸ–οΈ used + - Thenable: 🀷 unknown ⟢ πŸ–οΈ used + - Promise: 🀷 unknown ⟢ πŸ–οΈ used + - Async/await: 🀷 unknown ⟢ πŸ–οΈ used + - Future: 🀷 unknown ⟢ πŸ‘‚ heard + - Deferred: 🀷 unknown ⟢ πŸ‘‚ heard + - Sync generator: 🀷 unknown ⟢ πŸ–οΈ used + - Async Generator: 🀷 unknown ⟢ πŸ–οΈ used + - Async Iterator: 🀷 unknown ⟢ πŸ–οΈ used + - Event: 🀷 unknown ⟢ πŸ–οΈ used + - Coroutine: 🀷 unknown ⟢ πŸ‘‚ heard + - Goroutine: 🀷 unknown ⟢ πŸ‘‚ heard + - Signal: 🀷 unknown ⟢ πŸ–οΈ used + - Stream: 🀷 unknown ⟢ πŸ–οΈ used + - Chain of responsibility: 🀷 unknown ⟢ πŸ–οΈ used + - Middleware: 🀷 unknown ⟢ πŸ–οΈ used + - Locks: 🀷 unknown ⟢ πŸ–οΈ used + - callbackify: 🀷 unknown ⟢ πŸ–οΈ used + - promisify: 🀷 unknown ⟢ πŸ–οΈ used + - asyncify: 🀷 unknown ⟢ πŸ–οΈ used + - EventEmitter: 🀷 unknown ⟢ πŸ–οΈ used + - Observable/Observer: 🀷 unknown ⟢ πŸ–οΈ used + - Readable: 🀷 unknown ⟢ πŸ–οΈ used + - Writable: 🀷 unknown ⟢ πŸ–οΈ used + - Transform: 🀷 unknown ⟢ πŸ–οΈ used + - Async Pool: 🀷 unknown ⟢ πŸ–οΈ used + - Async Queue: 🀷 unknown ⟢ πŸ–οΈ used + - Async Collector: 🀷 unknown ⟢ πŸ–οΈ used + - Semaphore: 🀷 unknown ⟢ πŸ–οΈ used + - Mutex: 🀷 unknown ⟢ πŸŽ“ known + - Spin Lock: 🀷 unknown ⟢ πŸŽ“ known + - Timers: 🀷 unknown ⟢ πŸ–οΈ used + - `setImmediate`: 🀷 unknown ⟢ πŸ–οΈ used + - `nextTick`: 🀷 unknown ⟢ πŸ–οΈ used + - AbortController: 🀷 unknown ⟢ πŸ–οΈ used + - AbortSignal: 🀷 unknown ⟢ πŸ–οΈ used + - Promise unhandled rejection: 🀷 unknown ⟢ πŸ–οΈ used + - Promise double resolve: 🀷 unknown ⟢ πŸ–οΈ used + - Atomics: 🀷 unknown ⟢ πŸŽ“ known + - High resolution clock: 🀷 unknown ⟢ πŸŽ“ known + - Callback hell: 🀷 unknown ⟢ πŸ–οΈ used + - Promise hell: 🀷 unknown ⟢ πŸ–οΈ used + - ref() and unref(): 🀷 unknown ⟢ πŸ–οΈ used + - Error handling in async code: 🀷 unknown ⟢ πŸ–οΈ used + - Better stack traces with return await: 🀷 unknown ⟢ πŸ–οΈ used + - JSON streaming serialization: 🀷 unknown ⟢ πŸ–οΈ used + - AsyncLocalStorage: 🀷 unknown ⟢ πŸ–οΈ used + - AsyncResource: 🀷 unknown ⟢ πŸ–οΈ used + - Async.js library: 🀷 unknown ⟢ πŸ‘‚ heard + - RxJS library: 🀷 unknown ⟢ πŸ‘‚ heard + - Promise.all: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.allSettled: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.race: 🀷 unknown ⟢ πŸ–οΈ used + - Promise.any: 🀷 unknown ⟢ πŸ–οΈ used + - Web Locks API: 🀷 unknown ⟢ πŸŽ“ known + - IPC: 🀷 unknown ⟢ πŸŽ“ known + - Channel API: 🀷 unknown ⟢ πŸŽ“ known + - Revealing constructor: 🀷 unknown ⟢ πŸ–οΈ used + - Total: you have `0` of `75` skills, `75` to be upgraded, and `0` above needed + +## NodeJS + +- API and domain logic developer + - Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed +- Enterprise applications + - Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed +- Real-Time, gamedev, messaging + - Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed +- Web and Frontend + - Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed +- Fullstack development + - Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed +- Platform/system development + - Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed diff --git a/README.md b/README.md index 23b9aa23e..dbcffda8e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ## Software engineering self assessment +[![Skills](https://img.shields.io/badge/Self_Assessment-skills-009933?style=flat-square)](https://github.com/HowProgrammingWorks/SelfAssessment) + ## Skills - [Programming fundamentals](Skills/Programming.md) @@ -7,26 +9,17 @@ - [Asynchronous programming](Skills/Async.md) - [Node.js and Backend](Skills/NodeJS.md) - [Multi-paradigm programming](Skills/Paradigms.md) -- [Databases](Skills/Databases.md) - [Architecture](Skills/Architecture.md) ## How to use - Fork repository -- Enable Githib Actions workflows at tab `Actions` of your fork - Create branch, for example: `2024-winter` - In new branch add following levels or leave line untouched in each file: - -| | Level | Shorthand | Description | -| ---- | ------------- | ----------:| ------------------------------------------------------ | -| `πŸ‘‚` | `heard` | `~` or `h` | Heard or have some idea | -| `πŸŽ“` | `known` | `+` or `k` | Learned, read, but didn’t use | -| `πŸ–οΈ` | `used` | `*` or `u` | Used in work or real project | -| `πŸ™‹` | `explained` | `!` or `e` | Explained to colleagues or can freely explain | -| `πŸ“’` | `talked` | `t` | Gave a public speech or lecture on a topic | -| `πŸ”¬` | `researched` | `r` | Deep research, measurements, comparisons, read sources | -| `πŸš€` | `constructed` | `c` | Developed an implementation or equivalent | - + - `πŸ‘‚ heard`, `πŸŽ“ known`, `πŸ–οΈ used`, `πŸ™‹ explained`, `πŸ“’ talked`, `πŸ”¬ researched`, `πŸš€ constructed` + - You can use just emojis: `πŸ‘‚`, `πŸŽ“`, `πŸ–οΈ`, `πŸ™‹`, `πŸ“’`, `πŸ”¬`, `πŸš€` + - or just text levels: `heard`, `known`, `used`, `explained`, `talked`, `researched`, `constructed` + - or just shorthands: `~` for `heard`, `+` for `known`, `*` for `used`, `!` for `explained` - Now you can create pull request and merge this to main branch of your fork (not to original repo) - Pull request will fire Github Actions CI processing which will generate new commit with `Profile/REPORT.md` file with skill analisis and role matching report - CI processing will fix all simple mistakes in filling and replace shorthands diff --git a/Skills/Paradigms.md b/Skills/Paradigms.md index 109740fb9..6787b7a14 100644 --- a/Skills/Paradigms.md +++ b/Skills/Paradigms.md @@ -55,7 +55,6 @@ - Indirection - Low coupling - High cohesion - - Polymorphism - Protected variations - Pure fabrication - SOLID