Based on the EPAM Global Competency Framework 2021.
A2/B1
- Strict mode (knows that it exists, basic understanding of its influence)
- Variables, Values, Types (number, string, boolean, object, null, undefined), declaration (var, let, const, hoisting, temporary dead zone)
- Expressions (basic of auto type conversions, comparison), Operators, Statements (literals, conditions, loops)
- Objects (create, modify, built-in methods, Object static methods, calculated props, getter/setter)
- Arrays (create, modify, indexes, length, built-in methods: sorting, filtering, search, iterating; Array static methods)
- Functions (create, invoke, arrow functions, rest/spread operator, default parameters, scope, closure, recursion)
- This/Prototype (execution context, call/apply/bind methods, constructor functions, understanding of prototypes)
- Classes (constructors, static members)
- Basic Async JavaScript (Timers, Promise, async/await)
- JavaScript Errors (try..catch, throw, Error class)
- Global object window (location, history, navigator, screen, document, cookies)
- DOM Manipulation (selection, traversing, modification, live collections)
- Nodes Modification (node properties, attributes, data attributes, styling)
- Classes (constructors, static members)
- Event Handling (mouse, keyboard, event phases, event listeners, propagation)
- AJAX (fetch)
- Web Storage (sessionStorage, localStorage)
- HTML structural and semantic tags (body, headers, lists, links, and etc)
- Layout tags
- Text formatting tags: bold, italic
- HTML tag attributes
- Styles, Scripts:
- Add inline styles, include internal and external CSS
- Include internal and external Script
- Table, Form, Input Tags
- Table layout tags
- Table attributes
- Form tags and attributes
- Input types
- Specificity, inheritance, cascade rules, selector attributes
- Relative and Absolute Units (em, %, px, pt etc.)
- Standard and box block model
- Display property
- Transition, key frames, transformation, rotation, scaling
- Pseudo-class and pseudo-elements
- Media Queries (Syntax and declaration, types, usage)
- Visual effects (Shadows, rounded corners, gradients)
- Basics of Web Typography (fonts, font-face)
- Positioning (Document flow, Position properties, Overflow and z-index)
- Flexbox (Flex layout, axis, directions) or Grid
- CSS pre-/post-processor (LESS, SASS/SCSS, Stylus)
- Basics
- Types
- Utility Types
- Enums
- Generics
- Any, unknown
Basic understanding of:
- Basic operations: sort, map, filter, reduce
- Algorithms complexity basics (O(1), O(N), ...)
- Data structures: array, stack, queue, linked-list, tree, hash table (map), set
Basic understanding of OOP:
- Encapsulation
- Abstraction
- Inheritance
- Polymorphism
- Dependency injection
Basic FP notion:
- Pure functions
- Immutability
- Functions as first-class entities
- Functions composition
- High order functions
- Recursion
- Currying/Memoization
Basic understanding of:
- HTTP
- HTTPS
- WS
- RESTful API
Browser API:
- Browser API (Console, Fetch, Storage, History)
- DOM
- Basic knowledge of Webpack
- Basic knowledge of NPM, package.json configuration
- Basic knowledge of browser tools for project needs (Chrome DevTools: Elements, Console, Network, Sources)
At least basic understanding of git fundamentals
At least basic knowledge of:
- Node.js CLI (environment variables, command parameters, etc.)
- Module system (require, JS modules, import weight)
- Node.js Event Loop (basic observation, main stages)
- Buffer and Streams
- Events
- Node.js logging approaches
- Working with file system (difference between OS, sync/async/stream use cases)"
- Express.js
Basic knowledge of his/her project framework (React OR Angular), libraries and tools
- JSX
- Class and functional components
- Class lifecycle events, main hooks
- Controlled and uncontrolled components, forms
- State, props and context
- React event system
- Prop types
- Refs
- Basic understanding of virtual dom, components rendering system (when component re renders, shouldComponentUpdate, keys)
- React Router
- React Devtools
- Used any of state management library (Redux, Mobx, Reflux, etc)
- Basic understanding of TypeScript
- Basic understanding of RxJS
- Template Syntax
- Basic understanding of Dependency Injection
- Basic RouterModule configuration and Router directives
- main Attribute and Structural Directives
- Component
- Component structure (template, styling and etc)
- Component’s input and output
- main Lifecycle Hooks, basics of change detection
- Forms
- Template-driven Forms
- Reactive Forms
Nice to have:
- several design patterns (e.g Decorator, Singleton, Factory)
- best practices (KISS, DRY, YAGNI)
Able to follow and apply project code standards, guidelines.
Basic understanding of:
- linters
- code quality notion, good code vs bad code, immutabily, side effects
- code smells
Participates in code review process as a reviewer
Understanding of unit tests purpose and how to write them Nice to have:
- Practice with unit testing
Basic understanding of CI goals if used on a project
Basic understanding of:
- What is a Sprint?
- Who is a Scrum Master?
- How are user stories, epics, and tasks different?
- How is Estimation Done in a Scrum Project?
- What happens in Daily Stand-up sessions?
- Explain what is Kanban?
- Able to work effectively under supervision
- Ability to read, understand and clarify (if needed) task requirements
- Able to explain thoughts in English
- Able to present results of his/her work to teammates
- Understands when advice is needed, able to involve other team members in case of problems
- Able to plan his/her work time (Self-management, Time-management)