Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update report generation #161

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions .github/src/check.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ if (!REPO) {
const OUT = cp.execSync('git config --get remote.origin.url').toString();
REPO = metautil.between(OUT, ':', '.');
}
const LINK = 'https://github.com/' + REPO + '/Profile/REPORT.md';
const LINK = 'https://github.com/' + REPO + '/blob/main/Profile/REPORT.md';

const BASE = 'https://img.shields.io/badge/Self_Assessment';
const STYLE = `style=flat-square`;
Expand Down Expand Up @@ -231,7 +231,8 @@ const loadDir = async (place, options = {}) => {
const match = (expected, answered) => {
const todo = [];
for (const section in expected.sections) {
todo.push(`- ${section}`);
todo.push(`\n| ${section} | actual | ⟶ | required |`);
todo.push(`| --- | --- | --- | --- |`);
const needed = expected.sections[section];
let count = 0;
let have = 0;
Expand All @@ -246,19 +247,21 @@ const match = (expected, answered) => {
const levelIndex = LEVEL_LABELS.indexOf(level || '🤷 unknown');
if (actualIndex < levelIndex) {
upgrade++;
propose.push(` - ${skill}: ${actual} ⟶ ${level}`);
propose.push(`| ${skill} | ${actual} | | ${level} |`);
}
if (actualIndex > levelIndex) above++;
if (actualIndex >= levelIndex && levelIndex !== 0) have++;
}
if (have) todo.push(...propose);
const total = `you have \`${have}\` of \`${count}\` skills`;
const ext = `\`${upgrade}\` to be upgraded, and \`${above}\` above needed`;
todo.push(` - Total: ${total}, ${ext}`);
todo.push(`\nTotal: ${total}, ${ext}`);
}
return todo;
};

const NBSP = '&nbsp;&nbsp;&nbsp;&nbsp;';

const getTotal = (answered) => {
const total = [];
for (const section in answered.sections) {
Expand All @@ -268,7 +271,7 @@ const getTotal = (answered) => {
for (const level of entries) {
if (level) count++;
}
total.push(` - ${section}: \`${count}\` of \`${entries.length}\``);
total.push(`| ${NBSP} ${section} | \`${count}\` | \`${entries.length}\` |`);
if (count > 0) {
overall.count += count;
overall.total += entries.length;
Expand All @@ -291,6 +294,8 @@ const getTotal = (answered) => {
console.log(caption`Match profiles`);
const todos = [];
const totals = ['## Assessment totals\n'];
totals.push(`| Unit | Marked | Of |`);
totals.push(`| ---- | ------ | -- |`);
for (const unit of UNITS) {
console.log(chapter` Unit: ${unit}`);
const expected = roles[unit];
Expand All @@ -300,7 +305,7 @@ const getTotal = (answered) => {
todos.push(`\n## [${unit}](/Skills/${unit}.md)\n`);
todos.push(...todo);
}
totals.push(`- [${unit}](/Skills/${unit}.md)`);
totals.push(`| [${unit}](/Skills/${unit}.md) | | |`);
const total = getTotal(answered);
totals.push(...total);
}
Expand Down
126 changes: 126 additions & 0 deletions Profile/REPORT.md
Original file line number Diff line number Diff line change
@@ -1 +1,127 @@
## Software engineering self assessment

[![Skills](https://img.shields.io/badge/Self_Assessment-0/0/730-009933?style=flat-square)](https://github.com/HowProgrammingWorks/SelfAssessment/blob/main/Profile/REPORT.md)

```
[![Skills](https://img.shields.io/badge/Self_Assessment-0/0/730-009933?style=flat-square)](https://github.com/HowProgrammingWorks/SelfAssessment/blob/main/Profile/REPORT.md)
```

```
<a href="https://github.com/HowProgrammingWorks/SelfAssessment/blob/main/Profile/REPORT.md"><img alt="Skills" src="https://img.shields.io/badge/Self_Assessment-0/0/730-009933?style=flat-square"></a>
```

## Assessment totals

| Unit | Marked | Of |
| ---- | ------ | -- |
| [Programming](/Skills/Programming.md) | | |
| &nbsp;&nbsp;&nbsp;&nbsp; Concepts | `0` | `30` |
| &nbsp;&nbsp;&nbsp;&nbsp; Syntax and concepts | `0` | `33` |
| &nbsp;&nbsp;&nbsp;&nbsp; Types | `0` | `14` |
| &nbsp;&nbsp;&nbsp;&nbsp; Functions | `0` | `23` |
| &nbsp;&nbsp;&nbsp;&nbsp; Data structures | `0` | `26` |
| &nbsp;&nbsp;&nbsp;&nbsp; Networking | `0` | `9` |
| &nbsp;&nbsp;&nbsp;&nbsp; Process and tools | `0` | `28` |
| &nbsp;&nbsp;&nbsp;&nbsp; Antipatterns | `0` | `30` |
| &nbsp;&nbsp;&nbsp;&nbsp; Runtimes and virtual machines | `0` | `5` |
| &nbsp;&nbsp;&nbsp;&nbsp; Operation systems | `0` | `13` |
| &nbsp;&nbsp;&nbsp;&nbsp; Standards | `0` | `15` |
| [JavaScript](/Skills/JavaScript.md) | | |
| &nbsp;&nbsp;&nbsp;&nbsp; Language | `0` | `57` |
| &nbsp;&nbsp;&nbsp;&nbsp; Statements | `0` | `19` |
| &nbsp;&nbsp;&nbsp;&nbsp; Functions | `0` | `10` |
| &nbsp;&nbsp;&nbsp;&nbsp; Data structures | `0` | `7` |
| &nbsp;&nbsp;&nbsp;&nbsp; Standard classes and namespaces | `0` | `14` |
| &nbsp;&nbsp;&nbsp;&nbsp; Infrastructure | `0` | `6` |
| [Async](/Skills/Async.md) | | |
| &nbsp;&nbsp;&nbsp;&nbsp; Theory | `0` | `20` |
| &nbsp;&nbsp;&nbsp;&nbsp; Async contracts | `0` | `18` |
| &nbsp;&nbsp;&nbsp;&nbsp; Async adapters and utils | `0` | `5` |
| &nbsp;&nbsp;&nbsp;&nbsp; Async abstractions interfaces | `0` | `11` |
| &nbsp;&nbsp;&nbsp;&nbsp; JavaScript & Node.js specific | `0` | `17` |
| &nbsp;&nbsp;&nbsp;&nbsp; Techniques | `0` | `10` |
| [NodeJS](/Skills/NodeJS.md) | | |
| &nbsp;&nbsp;&nbsp;&nbsp; Internals and concepts | `0` | `9` |
| &nbsp;&nbsp;&nbsp;&nbsp; Modularity, layers and dependencies | `0` | `14` |
| &nbsp;&nbsp;&nbsp;&nbsp; Environment | `0` | `6` |
| &nbsp;&nbsp;&nbsp;&nbsp; Internal API | `0` | `26` |
| &nbsp;&nbsp;&nbsp;&nbsp; Network | `0` | `28` |
| &nbsp;&nbsp;&nbsp;&nbsp; Technique and tools | `0` | `12` |
| &nbsp;&nbsp;&nbsp;&nbsp; Data access | `0` | `7` |
| &nbsp;&nbsp;&nbsp;&nbsp; Error handling and debugging | `0` | `14` |
| &nbsp;&nbsp;&nbsp;&nbsp; Integrations and bindings | `0` | `16` |
| [Paradigms](/Skills/Paradigms.md) | | |
| &nbsp;&nbsp;&nbsp;&nbsp; Theory | `0` | `25` |
| &nbsp;&nbsp;&nbsp;&nbsp; OOP basics | `0` | `21` |
| &nbsp;&nbsp;&nbsp;&nbsp; GRASP | `0` | `8` |
| &nbsp;&nbsp;&nbsp;&nbsp; SOLID | `0` | `5` |
| &nbsp;&nbsp;&nbsp;&nbsp; Patterns | `0` | `25` |
| [Architecture](/Skills/Architecture.md) | | |
| &nbsp;&nbsp;&nbsp;&nbsp; Application structure | `0` | `22` |
| &nbsp;&nbsp;&nbsp;&nbsp; Application architecture | `0` | `36` |
| &nbsp;&nbsp;&nbsp;&nbsp; Solution architecture | `0` | `18` |
| &nbsp;&nbsp;&nbsp;&nbsp; Enterprise architecture | `0` | `18` |

## [JavaScript](/Skills/JavaScript.md)


| To start asynchronous programming | actual | ⟶ | required |
| --- | --- | --- | --- |

Total: you have `0` of `72` skills, `72` to be upgraded, and `0` above needed

| To start Node.js | actual | ⟶ | required |
| --- | --- | --- | --- |

Total: you have `0` of `97` skills, `97` to be upgraded, and `0` 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 `0` above needed

| Enterprise applications | actual | ⟶ | required |
| --- | --- | --- | --- |

Total: you have `0` of `0` skills, `0` to be upgraded, and `0` 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 `0` above needed

| Fullstack development | actual | ⟶ | required |
| --- | --- | --- | --- |

Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed

| Platform/system development | actual | ⟶ | required |
| --- | --- | --- | --- |

Total: you have `0` of `0` skills, `0` to be upgraded, and `0` above needed
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Software engineering self assessment

<!--- $BADGE -->
[![Skills](https://img.shields.io/badge/Self_Assessment-0/0/730-009933?style=flat-square)](https://github.com/HowProgrammingWorks/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.

Expand Down
1 change: 0 additions & 1 deletion Skills/Paradigms.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
- Indirection
- Low coupling
- High cohesion
- Polymorphism
- Protected variations
- Pure fabrication
- SOLID
Expand Down