ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
IE6 _(level 1)_Safari _(level 2...)_FireFoxChrome
2
**Javascript**
3
ES6Can write es6 (let/const, arrow functions, class, etc.), can set up a .babelrcControl-flow: generators, async/await, knows how `class` transpiles to ES5 and when to use it vs functions, know popular .babelrc configs and when to use babel-register babel-node and babel-polyfill, aware of browser/node compatability, knowledge of upcoming featuresContributes to babel or a babel plugin, contributes to discussions on the future of ES6
4
Language QuirksES5 quirks: Hoisting, prototype, closures; basic browser/node compatability knowledgeES6 transpilation to ES5, memorized browser/node compatability, more in-depth quirks (like the difference between arrow functions and named functions, how .prototype might trip you up)How the event loop works, how browser APIs and webworkers work, how browser rendering happens, knowledge of V8 JIT compilation
5
PerformanceIs scared of closures, knows what garbage collection is, knows _when_ to optimizeCan inspect heap to isolate memory leaks, CPU profile to find cpu-intensive functionsHas optimized V8 performance by analyzing generated assembly (IRHydra2)
6
ToolsConsole, elements tabs of devtools, sparsely configured editorternjs, eslint, nyc, well-configured editor, can use node in debug mode, network and sources tabs in devtools, devtools pluginsdevtools profiling, device simulation, and network throttling; IRHydra2
7
Browser APIsKnows basic functions like setTimeout, parseIntWell-versed in a more specific API (like audio or webworkers), can look up APIs as needed on MDNWell-versed in multiple APIs, knowledge of what's available
8
9
**Frontend**
10
ReactCan write JSX, knows the lifecycle eventsKnows when to use stateless vs stateful components, aware of common patterns (smart/dumb components), state management with *x library, knows top-level API, knows how React renders and how to improve performance, knowledge of common sister libraries (react-router, redux, etc.), has built a basic, medium-sized app (could build their own boilerplate)Has used cutting edge techs (Relay, GraphQL), contributes to OSS, has shipped a project into production, well-versed in testing react apps (enzyme), has read or contributed to React/*x source, has written a higher-order component, knows most common patterns and pitfalls (for instance, why mixins and isMounted() are antipatterns), can write server-side-rendered apps if necessary
11
CSSCSS fundamentals, knows difference between inline and .css filesCSS3, browser-compatability awareness, basic compilation process, organizes properties nicelyCSS pre-processors, tradeoffs (SASS, CSS Modules, css-in-js), flexbox wizardHas tried CSS4 features, contributes to pre-processor OSS or CSS4 spec, in-depth off-hand knowledge of cross-browser quirks, browser render engines (stacking context), and CSS3 features
12
React NativeCan write a basic RN app, knows the primitives (View, Image, Text)Can write iOS or Android plugins, app on app store, has read some of the RN source, knows most of the APIs/Components off-handCan write Android AND iOS plugins, app runs through CI server, contributes to OSS or React Native repo
13
WebpackCan write a basic config fileCan configure hot loading, has good familiarity with common plugins, has set up a custom dev server (webpack-dev-middleware)Has configured multiple entry points, has used isomorphic-webpack, has written a webpack plugin
14
DesignCan follow a design language (Material Design)Color, shape, grids, animation fundamentals, can suggest improvements to popular design languagesPsychological foundations of design (psychological biases), creator of design language
15
16
**Backend**
17
NodenpmBasic HTTP server (koa/express), aware of basic API methods, difference between sync and async functions, middleware, basic authentication, basic securityIntegrations with other services, SSO, SSR, compilation/es6/async functions, security audits
18
DatabaseCan write basic read/write queriesORM or patterns, migrations, document vs relational, good relational design, uses transactions, can write more complex queries (joins, subqueries, etc.)Knows config file inside/out, in-depth knowledge of multiple techs (mongo, postgresql, elasticsearch, etc.), hot standby + automatic backups + rollbacks + ZDT deployments, has worked with large in-production databases
19
SecurityCleans requests from APIDefends against brute-force/DDoS attacks, defends against CSRF and XSS, can set up SSL certs
20
Continuous DeploymentCan build a script that compiles the code for productionCode is automatically built and tested through a CI serverConfiguration AND environment (Docker) is managed, functional AND nonfunctional (capacity) tests are automatically runN-tier archicture deployments are orchestrated (ansible, kubernetes) into a cloud-based environment, push-button deployment and other tools from an admin page
21
22
**Programming**
23
Algorithms/Data StructuresBig O notation, knows basic ADTs (array vs hash vs stack vs queue), basic sort/search algorithmsMore nuanced ADTs (directed vs nondirected graphs, trees, etc.), more nuanced algorithms (pathfinding, tree-traversal)Compiler basics (ASTs) (babel), can write transpiling plugins, basic mathematical proofs, basic assemblyConcrete mathematical evaluation of tradeoffs between algorithms and data structures, can improve node performance by examining generated assembly, has written transpiler or transpiling plugins
24
Functional ProgrammingImmutability, .map and .reduceComposition with higher-order function decorators, curryingGenerators/co-routines, memoization, lazy evaluation
25
Code ConstructionBasics (Code Complete): concise commenting, intermediate variables, no long functions, well-factored self-documenting code, eslint is setupSOLID principals, knows popular eslint configs, and what eslint rules to breakTDD-guided design, patterns (GoF and Fowler)Has worked on a project over a long period with multiple developers, to see common pitfalls and what is actually practical and maintainable
26
TDDUnit testing, enzyme, sinon, tape/mochaSeparates unit and integration tests, can plug tests into CI server, always writes tests first, checks code coverageFunctional testing (selenium), nonfunctional testing (capacity tests), uses static analysis tools like cyclomatic complexity and afferent/efferent coupling checks
27
28
**Other**
29
Source ControlGUI, command line basics (add, push, pull, fetch), reading from githubgit command line (rebase, cherry-pick, reset/revert), writing to github (PRs, forks), has worked in an org with branching and PRsgit command depth (bisect, interactive rebase, submodules, multiple remotes, git push -f), commit hooks, Integration with other services (CI, Slack)
30
*nixknows basic commands (rm -rf, ls, mkdir)vim/emacs wizard, knows FHS, can write makefiles or bash scripts, good with pipes, knows most commands offhand
31
Agile/LeanDaily standup, track progress in ticket trackerCode is deployed regularly through CI, at least 50% test coverage, basic user tracking and experimentsCode is deployed multiple times a day, run through ~100% code coverage including functional/nonfunctional tests, features are validated with split testing before deemed finishedValidates functionality quickly using marketing and prototypes before anything is built, multivariate testing (dozens) with statistical analysis, knows when to pivot/persevere and has experienced multiple pivots
32
OSS/ContributionsCollects cool things on Twitter, files issues in reposWrites posts on Medium, *fixes* issues on github ;)Actively maintains a popular OSS repo, teaches other programmers, has spoken at a conferenceHas reinvented software development in some way, created a major, popular framework
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100