diff --git a/Profile/REPORT.md b/Profile/REPORT.md index e84bed6f..1912c5fd 100644 --- a/Profile/REPORT.md +++ b/Profile/REPORT.md @@ -1 +1,160 @@ ## Software engineering self assessment + +[![Skills](https://img.shields.io/badge/Self_Assessment-171 / 256 / 736-009933?style=flat-square)](https://github.com/seniaz/SelfAssessment/blob/main/Profile/REPORT.md) + +``` +[![Skills](https://img.shields.io/badge/Self_Assessment-171 / 256 / 736-009933?style=flat-square)](https://github.com/seniaz/SelfAssessment/blob/main/Profile/REPORT.md) +``` + +``` +Skills +``` + +## Assessment totals + +| Unit | Marked | Of | +| ---- | ------ | -- | +| [Programming](/Skills/Programming.md) | | | +|      Concepts | `8` | `30` | +|      Syntax and concepts | `23` | `33` | +|      Types | `0` | `14` | +|      Functions | `0` | `23` | +|      Data structures | `12` | `26` | +|      Networking | `0` | `9` | +|      Process and tools | `9` | `28` | +|      Antipatterns | `0` | `30` | +|      Runtimes and virtual machines | `0` | `5` | +|      Operating systems | `5` | `13` | +|      Standards | `0` | `15` | +| [JavaScript](/Skills/JavaScript.md) | | | +|      Language | `57` | `57` | +|      Statements | `18` | `19` | +|      Functions | `10` | `10` | +|      Data structures | `8` | `8` | +|      Standard classes and namespaces | `14` | `14` | +|      Infrastructure | `6` | `6` | +| [Async](/Skills/Async.md) | | | +|      Theory | `0` | `20` | +|      Async contracts | `0` | `18` | +|      Async adapters and utils | `0` | `5` | +|      Async abstractions interfaces | `0` | `11` | +|      JavaScript & Node.js specific | `0` | `17` | +|      Techniques | `0` | `10` | +| [NodeJS](/Skills/NodeJS.md) | | | +|      Internals and concepts | `0` | `9` | +|      Modularity, layers and dependencies | `0` | `14` | +|      Environment | `0` | `6` | +|      Internal API | `0` | `26` | +|      Network | `0` | `28` | +|      Technique and tools | `1` | `12` | +|      Data access | `0` | `7` | +|      Error handling and debugging | `0` | `14` | +|      Integrations and bindings | `0` | `16` | +| [Paradigms](/Skills/Paradigms.md) | | | +|      Theory | `0` | `25` | +|      OOP basics | `0` | `21` | +|      GRASP | `0` | `8` | +|      SOLID | `0` | `5` | +|      Patterns | `0` | `25` | +| [Architecture](/Skills/Architecture.md) | | | +|      Application structure | `0` | `27` | +|      Application architecture | `0` | `36` | +|      Solution architecture | `0` | `18` | +|      Enterprise architecture | `0` | `18` | + +## [JavaScript](/Skills/JavaScript.md) + + +| To start asynchronous programming | actual | ⟢ | required | +| --- | --- | --- | --- | +| `undefined` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `null` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `this` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `...spread` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `...rest` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `try..catch` | 🀷 unknown | ⟢ | πŸŽ“ known | +| `extends` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Mixins | πŸ‘‚ heard | ⟢ | πŸŽ“ known | + +Total: you have `64` of `72` skills, `8` to be upgraded, and `25` above needed + +| To start Node.js | actual | ⟢ | required | +| --- | --- | --- | --- | +| `BigInt` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `Infinity` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `NaN` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `undefined` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `null` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `this` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `...spread` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `...rest` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Generators | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Async generator | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Async iterator | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Async IIFE | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `global` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `globalThis` | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | +| `void` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `yield` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `await` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `static` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `export` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| `try..catch` | 🀷 unknown | ⟢ | πŸ–οΈ used | +| `extends` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Async function | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| Typed arrays | πŸ‘‚ heard | ⟢ | πŸŽ“ known | +| `Promise` | πŸŽ“ known | ⟢ | πŸ–οΈ used | +| V8 | πŸ‘‚ heard | ⟢ | πŸ–οΈ used | + +Total: you have `73` of `98` skills, `25` to be upgraded, and `19` above needed + +## [Async](/Skills/Async.md) + + +| For Node.js applied programming | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `50` skills, `50` to be upgraded, and `0` above needed + +| To start Node.js | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `37` skills, `37` to be upgraded, and `0` above needed + +| For Node.js platform/system programming | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `75` skills, `75` to be upgraded, and `0` above needed + +## [NodeJS](/Skills/NodeJS.md) + + +| API and domain logic developer | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `0` skills, `0` to be upgraded, and `1` above needed + +| Enterprise applications | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `0` skills, `0` to be upgraded, and `1` above needed + +| Real-Time, gamedev, messaging | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed + +| Web and Frontend | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `0` skills, `0` to be upgraded, and `1` above needed + +| Fullstack development | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `0` skills, `0` to be upgraded, and `1` above needed + +| Platform/system development | actual | ⟢ | required | +| --- | --- | --- | --- | + +Total: you have `0` of `0` skills, `0` to be upgraded, and `1` above needed diff --git a/README.md b/README.md index 239e6cd5..ed8a7e88 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## Software engineering self assessment - +[![Skills](https://img.shields.io/badge/Self_Assessment-171 / 256 / 736-009933?style=flat-square)](https://github.com/seniaz/SelfAssessment/blob/main/Profile/REPORT.md) This _knowledge assessment_ can be used as an automated tool for **tracking** and **analyzing** an engineer’s **microskills**, for personal use, for reference in your **CV** or profile (github, linkedin, etc.). After filling skills, the system generates a button in `html` and `md` with a link to your fork of the repo. The tool speeds up **interviews** and **certification** for both the applicant and the interviewer: you can check only part of the key knowledge and then sign a commit with a personal GPG key. If you periodically take an assessment, or do it before and after the start of _training_, and store branches or tags with the results of an inventory of microskills at a certain point in time, then it is very convenient to compare the _progress_ you have made during the period of _training_, reading a book, working on a project etc. Currently, assessment has more than **700 microskills** and will be constantly expanded in all areas, languages and technologies (for example `Proxy`, `Promise`, `Future`, `SRP`, `DI`, `Boxing`, `Cohesion`, `Tail call recursion`...) with automatic comparison of them with _roles_ (for example `Node.js API developer`, `Node.js gamedev`, `Frontend`...) the robot generates a report via `Github Actions CI` with recommendations on what needs to be improved. New roles and knowledge areas will be available soon, after which you can rebase your repo on the original one to receive the new report. diff --git a/Skills/Databases.md b/Skills/Databases.md index 612ee8e9..9f03578f 100644 --- a/Skills/Databases.md +++ b/Skills/Databases.md @@ -1,7 +1,7 @@ ## Databases - Theory and concepts - - Data types h + - Data types: πŸ‘‚ heard - Performance tuning - Migrations - Schema versioning diff --git a/Skills/JavaScript.md b/Skills/JavaScript.md index b05ec419..20b2e74a 100644 --- a/Skills/JavaScript.md +++ b/Skills/JavaScript.md @@ -1,122 +1,122 @@ ## JavaScript - Language - - `Object` u - - `Function` u - - `Boolean` u - - `Number` u - - `BigInt` k - - `String` u - - `Symbol` u - - `Infinity` k - - `NaN` k - - `undefined` k - - `null` k - - `this` k - - `instanceof` u - - `...spread` k - - `...rest` k - - `typeof` u - - Destructuring u - - Generators k - - Iterators u - - Async generator k - - Async iterator k - - Chaining u - - Optional chaining k - - IIFE u - - Async IIFE k - - `global` k - - `globalThis` h - - `window` k - - Getters and setters u - - `__proto__` k - - `prototype` k - - Equality operators u - - Logical operators u - - Logical Assignment u - - Bitwise operators u - - Ternary operator u - - `void` k - - `yield` k - - `await` k - - Template literal u - - Strict mode u - - Hoisting u - - `delete` u - - `in` u - - `super` u - - `eval` u - - `static` k - - `Number.parseInt` u - - `Number.parseFloat` u - - Property descriptors u - - Sealing properties u - - Freezing properties u - - Computed properties u - - Instance class fields k - - Static class fields u - - Private class fields u - - Private class methods k + - `Object`: πŸ–οΈ used + - `Function`: πŸ–οΈ used + - `Boolean`: πŸ–οΈ used + - `Number`: πŸ–οΈ used + - `BigInt`: πŸŽ“ known + - `String`: πŸ–οΈ used + - `Symbol`: πŸ–οΈ used + - `Infinity`: πŸŽ“ known + - `NaN`: πŸŽ“ known + - `undefined`: πŸŽ“ known + - `null`: πŸŽ“ known + - `this`: πŸŽ“ known + - `instanceof`: πŸ–οΈ used + - `...spread`: πŸŽ“ known + - `...rest`: πŸŽ“ known + - `typeof`: πŸ–οΈ used + - Destructuring: πŸ–οΈ used + - Generators: πŸŽ“ known + - Iterators: πŸ–οΈ used + - Async generator: πŸŽ“ known + - Async iterator: πŸŽ“ known + - Chaining: πŸ–οΈ used + - Optional chaining: πŸŽ“ known + - IIFE: πŸ–οΈ used + - Async IIFE: πŸŽ“ known + - `global`: πŸŽ“ known + - `globalThis`: πŸ‘‚ heard + - `window`: πŸŽ“ known + - Getters and setters: πŸ–οΈ used + - `__proto__`: πŸŽ“ known + - `prototype`: πŸŽ“ known + - Equality operators: πŸ–οΈ used + - Logical operators: πŸ–οΈ used + - Logical Assignment: πŸ–οΈ used + - Bitwise operators: πŸ–οΈ used + - Ternary operator: πŸ–οΈ used + - `void`: πŸŽ“ known + - `yield`: πŸŽ“ known + - `await`: πŸŽ“ known + - Template literal: πŸ–οΈ used + - Strict mode: πŸ–οΈ used + - Hoisting: πŸ–οΈ used + - `delete`: πŸ–οΈ used + - `in`: πŸ–οΈ used + - `super`: πŸ–οΈ used + - `eval`: πŸ–οΈ used + - `static`: πŸŽ“ known + - `Number.parseInt`: πŸ–οΈ used + - `Number.parseFloat`: πŸ–οΈ used + - Property descriptors: πŸ–οΈ used + - Sealing properties: πŸ–οΈ used + - Freezing properties: πŸ–οΈ used + - Computed properties: πŸ–οΈ used + - Instance class fields: πŸŽ“ known + - Static class fields: πŸ–οΈ used + - Private class fields: πŸ–οΈ used + - Private class methods: πŸŽ“ known - Statements - - `if` u - - `while` u - - `do..while` u - - `for` u - - `for..in` u - - `for..of` u - - `for await` u - - `throw` u - - `break` u - - `continue` u - - `import` u - - `export` k - - `label` u + - `if`: πŸ–οΈ used + - `while`: πŸ–οΈ used + - `do..while`: πŸ–οΈ used + - `for`: πŸ–οΈ used + - `for..in`: πŸ–οΈ used + - `for..of`: πŸ–οΈ used + - `for await`: πŸ–οΈ used + - `throw`: πŸ–οΈ used + - `break`: πŸ–οΈ used + - `continue`: πŸ–οΈ used + - `import`: πŸ–οΈ used + - `export`: πŸŽ“ known + - `label`: πŸ–οΈ used - `try..catch`k - - `switch` u - - `class` u - - `extends` k - - `with` u - - `new` u + - `switch`: πŸ–οΈ used + - `class`: πŸ–οΈ used + - `extends`: πŸŽ“ known + - `with`: πŸ–οΈ used + - `new`: πŸ–οΈ used - Functions - - Arrow function u - - Async function k - - Function declaration u - - Function expression u - - Default parameters u - - Functional object u - - `Function.prototype.call` k - - `Function.prototype.bind` k - - `Function.prototype.apply` k - - `return` u + - Arrow function: πŸ–οΈ used + - Async function: πŸŽ“ known + - Function declaration: πŸ–οΈ used + - Function expression: πŸ–οΈ used + - Default parameters: πŸ–οΈ used + - Functional object: πŸ–οΈ used + - `Function.prototype.call`: πŸŽ“ known + - `Function.prototype.bind`: πŸŽ“ known + - `Function.prototype.apply`: πŸŽ“ known + - `return`: πŸ–οΈ used - Data structures - - `Array` u - - `Map` u - - `Set` u - - `WeakMap` k - - `WeakSet` k - - Typed arrays h - - Mixins h - - `Object.assign` k + - `Array`: πŸ–οΈ used + - `Map`: πŸ–οΈ used + - `Set`: πŸ–οΈ used + - `WeakMap`: πŸŽ“ known + - `WeakSet`: πŸŽ“ known + - Typed arrays: πŸ‘‚ heard + - Mixins: πŸ‘‚ heard + - `Object.assign`: πŸŽ“ known - Standard classes and namespaces - - `Proxy` k - - `RegExp` k - - `Date` u - - `Math` u - - `Reflect` u - - `Error` u - - `Atomics` k - - `JSON` u - - `WeakRef` k - - `FinalizationRegistry` k - - `Intl` k - - `Promise` k - - `console` u - - Timers u + - `Proxy`: πŸŽ“ known + - `RegExp`: πŸŽ“ known + - `Date`: πŸ–οΈ used + - `Math`: πŸ–οΈ used + - `Reflect`: πŸ–οΈ used + - `Error`: πŸ–οΈ used + - `Atomics`: πŸŽ“ known + - `JSON`: πŸ–οΈ used + - `WeakRef`: πŸŽ“ known + - `FinalizationRegistry`: πŸŽ“ known + - `Intl`: πŸŽ“ known + - `Promise`: πŸŽ“ known + - `console`: πŸ–οΈ used + - Timers: πŸ–οΈ used - Infrastructure - - V8 h - - Node.js u - - npm u - - prettier u - - MDN u - - TC39 h + - V8: πŸ‘‚ heard + - Node.js: πŸ–οΈ used + - npm: πŸ–οΈ used + - prettier: πŸ–οΈ used + - MDN: πŸ–οΈ used + - TC39: πŸ‘‚ heard diff --git a/Skills/NodeJS.md b/Skills/NodeJS.md index 2de0843c..f116603c 100644 --- a/Skills/NodeJS.md +++ b/Skills/NodeJS.md @@ -99,7 +99,7 @@ - Transform - Back pressure - Buffer - - Console u + - Console: πŸ–οΈ used - Inspector - Data access - Data access layer diff --git a/Skills/Programming.md b/Skills/Programming.md index b0d13b79..e5863c29 100644 --- a/Skills/Programming.md +++ b/Skills/Programming.md @@ -4,26 +4,26 @@ - Model - Modeling - Subject domain - - Algorithm k - - Syntax k + - Algorithm: πŸŽ“ known + - Syntax: πŸŽ“ known - Semantics - Abstraction - Paradigm - - Programm k + - Programm: πŸŽ“ known - Programming paradigm - Programming language - Contract - Module - - Library u - - Package u - - Component u - - Framework h + - Library: πŸ–οΈ used + - Package: πŸ–οΈ used + - Component: πŸ–οΈ used + - Framework: πŸ‘‚ heard - Platform - Source code - Object code - Machine code - Microcode - - Software engineering k + - Software engineering: πŸŽ“ known - Decomposition - Control flow - Data flow @@ -32,36 +32,36 @@ - Don't repeat yourself (DRY) - KISS principle - Syntax and concepts - - Value u - - Identifier u - - Variable u - - Constant u - - Scalar u - - Literal u - - Expression u + - Value: πŸ–οΈ used + - Identifier: πŸ–οΈ used + - Variable: πŸ–οΈ used + - Constant: πŸ–οΈ used + - Scalar: πŸ–οΈ used + - Literal: πŸ–οΈ used + - Expression: πŸ–οΈ used - Heap - - Function u - - Procedure h - - Method k - - Class u - - Prototype h - - Event u - - Type u - - Flag u + - Function: πŸ–οΈ used + - Procedure: πŸ‘‚ heard + - Method: πŸŽ“ known + - Class: πŸ–οΈ used + - Prototype: πŸ‘‚ heard + - Event: πŸ–οΈ used + - Type: πŸ–οΈ used + - Flag: πŸ–οΈ used - Lexical scope - - Code block u - - Conditions u - - Loops u - - Assignment u + - Code block: πŸ–οΈ used + - Conditions: πŸ–οΈ used + - Loops: πŸ–οΈ used + - Assignment: πŸ–οΈ used - Regular expression - Interface - - Namespaces u + - Namespaces: πŸ–οΈ used - Call stack - Naming conventions - Coding conventions - - Camel case u - - Snake case u - - Kebab case u + - Camel case: πŸ–οΈ used + - Snake case: πŸ–οΈ used + - Kebab case: πŸ–οΈ used - Trailing commas - Return early - Fail-fast @@ -105,25 +105,25 @@ - Generator - Coroutine - Data structures - - Array u - - Structure h + - Array: πŸ–οΈ used + - Structure: πŸ‘‚ heard - Record - Enum - Instance - - Object u - - Collection u - - Set u - - Hash table k - - Linked list k - - Doubly list k - - Unrolled list h - - Circular list h + - Object: πŸ–οΈ used + - Collection: πŸ–οΈ used + - Set: πŸ–οΈ used + - Hash table: πŸŽ“ known + - Linked list: πŸŽ“ known + - Doubly list: πŸŽ“ known + - Unrolled list: πŸ‘‚ heard + - Circular list: πŸ‘‚ heard - Queue - Stack - Deque - - Tree h + - Tree: πŸ‘‚ heard - Graph - - Iterator u + - Iterator: πŸ–οΈ used - Mutable state - Immutable state - Serialization @@ -142,11 +142,11 @@ - URN - URI - Process and tools - - Compiler u + - Compiler: πŸ–οΈ used - Just-in-time compilation - Ahead-of-time compilation - Transpiler - - Linter h + - Linter: πŸ‘‚ heard - Polyfill - Interpreter - Linker @@ -157,18 +157,18 @@ - Register-based VM - Stack-based VM - Containerization - - Debugger u + - Debugger: πŸ–οΈ used - Tracing - Garbage collection - - Refactoring u - - Code review u + - Refactoring: πŸ–οΈ used + - Code review: πŸ–οΈ used - Exception - Unittesting - - git u - - Github u - - Docker h + - git: πŸ–οΈ used + - Github: πŸ–οΈ used + - Docker: πŸ‘‚ heard - Kubernetes - - GCC u + - GCC: πŸ–οΈ used - LLVM - Antipatterns - Magic numbers @@ -210,15 +210,15 @@ - Operating systems - Interrupts - Drivers - - Kernel k + - Kernel: πŸŽ“ known - Ring - Virtual memory - File system - - Linux k - - Unix k + - Linux: πŸŽ“ known + - Unix: πŸŽ“ known - BSD - - MacOS k - - Windows k + - MacOS: πŸŽ“ known + - Windows: πŸŽ“ known - Real-time OS - Embedded OS - Standards