Software Engineer Intermediate

Definition

Has enough experience to deliver tasks defined by Tech Leads.

Gains technical and business domain experience.

Learns how to become a go-to expert in certain project areas.

Understands the reasoning behind the business priorities.

Influences architecture, technical decisions and delivery process used on the project.

Is self-accountable, has a conscious and mature approach in problem solving and communication.

Intermediate English

My Journey To Mastery

Technology Specific - JavaScript stack

Tech Agnostic

Frontend

Backend

JavaScript Core/Lang

Architecture and Design

Continuous Integration and Continuous Delivery

Troubleshooting

Computer Science

Application Infrastructure

Technical Documentation

Information Security

Toolchain

People Skills

ECMA-262 (ES11)

Advanced Scoping

Nested Functions

Lexical Scoping

Immediately Invoked Function Expressions

Closures

Currying

this

Implicit Binding

Explicit Binding

New Binding

Lexical Binding

Default Binding

OOP/Inheritance

Prototype

Prototypal Inheritance

Functional Programming

Classes

Iterator

Generator

Event Loop

Asynchronous JS

setTimeout/setInterval

callbacks

Promises

async/await

CommonJS

ES Modules

Import/Export

Default and Named Exports

Web APIs

Document Object Model

XHR & Fetch

Storage

Video and Audio

Drawing Graphics

Linters

Code Formatters

Bundlers

TypeScript

UI Frameworks and libs

Observables (RxJS)

Libs

lodash

Testing My Code

Jasmine/Chai

Mocha/Karma

Jest

D3/C3

jQuery

Packages Management Tools

Angular

React

VueJS

Svelte

Fundamentals

Angular CLI

NgModules

Template Syntax

Interpolation

Property Binding

Event Binding

Two Way Binding

Pipes

Template Reference Variables

Directives

Async Error Handling

Components

Class

Template

Metadata

Structural

ngIf

ngSwitch

ngFor

Attribute

NgClass

NgStyle

Component Styling

Class Binding

Style Binding

Components Interaction

Input

Output

Lifecycle Methods

NodeJS

Deno

Advanced

Services

Dependency Injection

Providing Services

Observables

Creating Observables

Subscribing to Observables

Executing Observables

Disposing Observables

Operators

HTTP Client

HttpClient

HTTP Methods: GET, POST, PUT & DELETE

Typed Response

Error Handling

Interceptors

Forms

Template-Driven Forms

Forms Module

NgForm

NgModel

NgModelGroup

Tracking State & Validity

Validation & Error messages

ngSubmit

Reactive Forms

ReactiveFormsModule

FormControl

FormGroup

setValue & patchValue

FormBuilder service

Validator Functions

FormArray

ngSubmit

Routing

RouterModule

Configuring Routes

RouterOutlet

routerLink

Wildcard Routes

Redirecting Routes

Route Parameters

Nested Routes

Relative Paths

Lazy Loading Routes

Route Guards

Animations

Ecosystem

State Management

ngRx

UI Libraries

AGGrid

Angular Material

Server Side Rendering

Angular Universal

Protractor

Miscellaneous

i18n

Accessibility

Persistent Layer

Caches

Data Bases

Soft Skills

Accountability, commitment and result ownership

Communication and Teamwork

Personal Characteristics and Work Attitude

Sticks to given commitment

Copes with the flexible scope of technical uncertainty

Seeks no excuses if the result does not match the expectation

"Success of the group is more important than personal result" attitude

Alligns one's work with the team priorities

Motivates teams and colleagues by acting in a positive way

Shows openness to advice from colleagues and welcomes other points of view

Continuously invests time and efforts in the team development, both as a group and as a set of individuals

"Mentors team members and less experienced colleagues.

Is proactive in their evolving professional development to improve soft and hard skills"

If in conflict, is driven toward a resolution

Solves issues with customers and stakeholders and prepares enough background/arguments to support the team’s or the company’s position

Productively collaborates with colleagues from other projects/departments

Communication style is polite, respectful, and concise

Is accurate, attentive to details

Controls his/her own time allocation, estimates, and actual time spent

Learns from his/her own mistakes

Takes initiative

Easily adapts to change

Fits the values and the culture of the company

Is result-oriented

Acts objectively rather than impulsively or emotionally

Works under pressure effectively, staying stress-resistant

Perceives and understands the feelings and the attitudes of others (emotional intelligence)

Goes an extra mile when performing a task

Meta Skills

Problem-Solving

Self-Management

Working With People

Technology Use and Development

analytical thinking and innovation

Complex problem-solving

Critical thinking and analysis

Creativity, originality and initiative

Reasoning, problem-solving and ideation

Active learning and learning strategies

Self-Reflection

Resilience, stress tolerance and flexibility

Leadership and social influence

Technology use, monitoring and control

Technology design and programming

Relational

NoSQL

Search Engines

Managed (Cloud) DBs

ElasticSearch

Solr

Sphinx

Microsoft SQL Server

PostgreSQL

MySQL

MongoDB

REDIS (as persistent storage)

Apache Cassandra

CouchDB

Azure CosmosDB

Amazon DynamoDB

Google Bigtable

node-cache

Distributed Cache

In-Memory Cache

Logging

Structured Logging Approach

Logging Management Systems

Sentry.io

Loggly.com

Splunk

AWS CloudWatch

Logging Frameworks

Winston

pino

bunyan

Node's Architecture

V8 and libuv

NodeJS CLI

NodeJS REPL (Read, Eval, Print Loop)

Global Object, Process and Buffer

How require() actually works

JSON and C++ Addons

Web Frameworks

Koa.js

Express.js

Loopback.js

Programming Techniques

Error Handling

Asynchronous Programming

Parallel Programming

Meta programming

Template Engines

marko

handlebars

ejs

jade

mustache

API Clients

Typed Superset

Flow

TypeScript

Web sockets. (Real-Time Communication)

Socket.IO

GraphQL

REST

Axios

Request

node-rest-client

Testing

E2E Testing

Selenium

Puppeteer

Integration Testing

Super Test

Mocha

Chai

Behaviour Testing

Mocha

Chai

Jasmine

Unit Testing

Mocking

Sinon

Jasmine

Enzyme

Frameworks/Assertion

jest

chai

Mocha

Jasmine

Microservices

Task Schedulers

Agenda

Cronicle

node-schedule

Message Brokerage

RabbitMQ

AWS SQS

Apache Kafka

Azure Service Bus

Message Bus

Distribus

BusMQ

Design Patterns

Command Query Responsibility Segregation (CQRS)

Pub/Sub

Factory

Prototype

Strategy

Observer

Midleware

State

Singletone

Open Web Application Security Protocol (OWASP) Top 10

Payment Card Industry Data Security Standard (PCI DSS)

Health Insurance Portability and Accountability Act (HIPPA)

Code Complexity and big O(n) notation

Data Structures: Lists, Trees, Queues, Hashtable, Hashmap, Linked Lists, Binary Trees, State Machines, etc.

Algorithms: Classification, Complexity and Practical Appliance

Docker

Service Registry Design Pattern