| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | IE6 _(level 1)_ | Safari _(level 2...)_ | FireFox | Chrome | ||||||||||||||||||||||
2 | **Javascript** | |||||||||||||||||||||||||
3 | ES6 | Can write es6 (let/const, arrow functions, class, etc.), can set up a .babelrc | Control-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 features | Contributes to babel or a babel plugin, contributes to discussions on the future of ES6 | ||||||||||||||||||||||
4 | Language Quirks | ES5 quirks: Hoisting, prototype, closures; basic browser/node compatability knowledge | ES6 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 | Performance | Is scared of closures, knows what garbage collection is, knows _when_ to optimize | Can inspect heap to isolate memory leaks, CPU profile to find cpu-intensive functions | Has optimized V8 performance by analyzing generated assembly (IRHydra2) | ||||||||||||||||||||||
6 | Tools | Console, elements tabs of devtools, sparsely configured editor | ternjs, eslint, nyc, well-configured editor, can use node in debug mode, network and sources tabs in devtools, devtools plugins | devtools profiling, device simulation, and network throttling; IRHydra2 | ||||||||||||||||||||||
7 | Browser APIs | Knows basic functions like setTimeout, parseInt | Well-versed in a more specific API (like audio or webworkers), can look up APIs as needed on MDN | Well-versed in multiple APIs, knowledge of what's available | ||||||||||||||||||||||
8 | ||||||||||||||||||||||||||
9 | **Frontend** | |||||||||||||||||||||||||
10 | React | Can write JSX, knows the lifecycle events | Knows 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 | CSS | CSS fundamentals, knows difference between inline and .css files | CSS3, browser-compatability awareness, basic compilation process, organizes properties nicely | CSS pre-processors, tradeoffs (SASS, CSS Modules, css-in-js), flexbox wizard | Has 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 Native | Can 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-hand | Can write Android AND iOS plugins, app runs through CI server, contributes to OSS or React Native repo | ||||||||||||||||||||||
13 | Webpack | Can write a basic config file | Can 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 | Design | Can follow a design language (Material Design) | Color, shape, grids, animation fundamentals, can suggest improvements to popular design languages | Psychological foundations of design (psychological biases), creator of design language | ||||||||||||||||||||||
15 | ||||||||||||||||||||||||||
16 | **Backend** | |||||||||||||||||||||||||
17 | Node | npm | Basic HTTP server (koa/express), aware of basic API methods, difference between sync and async functions, middleware, basic authentication, basic security | Integrations with other services, SSO, SSR, compilation/es6/async functions, security audits | ||||||||||||||||||||||
18 | Database | Can write basic read/write queries | ORM 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 | Security | Cleans requests from API | Defends against brute-force/DDoS attacks, defends against CSRF and XSS, can set up SSL certs | |||||||||||||||||||||||
20 | Continuous Deployment | Can build a script that compiles the code for production | Code is automatically built and tested through a CI server | Configuration AND environment (Docker) is managed, functional AND nonfunctional (capacity) tests are automatically run | N-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 Structures | Big O notation, knows basic ADTs (array vs hash vs stack vs queue), basic sort/search algorithms | More 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 assembly | Concrete 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 Programming | Immutability, .map and .reduce | Composition with higher-order function decorators, currying | Generators/co-routines, memoization, lazy evaluation | ||||||||||||||||||||||
25 | Code Construction | Basics (Code Complete): concise commenting, intermediate variables, no long functions, well-factored self-documenting code, eslint is setup | SOLID principals, knows popular eslint configs, and what eslint rules to break | TDD-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 | TDD | Unit testing, enzyme, sinon, tape/mocha | Separates unit and integration tests, can plug tests into CI server, always writes tests first, checks code coverage | Functional testing (selenium), nonfunctional testing (capacity tests), uses static analysis tools like cyclomatic complexity and afferent/efferent coupling checks | ||||||||||||||||||||||
27 | ||||||||||||||||||||||||||
28 | **Other** | |||||||||||||||||||||||||
29 | Source Control | GUI, command line basics (add, push, pull, fetch), reading from github | git command line (rebase, cherry-pick, reset/revert), writing to github (PRs, forks), has worked in an org with branching and PRs | git command depth (bisect, interactive rebase, submodules, multiple remotes, git push -f), commit hooks, Integration with other services (CI, Slack) | ||||||||||||||||||||||
30 | *nix | knows 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/Lean | Daily standup, track progress in ticket tracker | Code is deployed regularly through CI, at least 50% test coverage, basic user tracking and experiments | Code is deployed multiple times a day, run through ~100% code coverage including functional/nonfunctional tests, features are validated with split testing before deemed finished | Validates 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/Contributions | Collects cool things on Twitter, files issues in repos | Writes posts on Medium, *fixes* issues on github ;) | Actively maintains a popular OSS repo, teaches other programmers, has spoken at a conference | Has 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 |