Big ol' checklist of things to know to become a webdeveloper. Mostly for my wife whom wants to get into programming, but could be for anyone entering. This is mostly focused on a web developer role. Here is a skill legend, if these are not on line items they are on headers of sections - :no_entry_sign: You shouldn't have to know this, but its worth knowing about - :star: Something you should know of, and its basic applications - :sparkles: You should know how this works for most use cases, and be able to execute with only minimal bingling - :dizzy: You should be a **master** of this topic # Lingo :dizzy: - [ ] API - [ ] Refactor - [ ] Bug - [ ] CMS - [ ] DevOps - [ ] "Batteries Included" - [ ] "Time box" - [ ] Continuous Intergraton - [ ] Continuous Delivery - [ ] SCM - [ ] VCS # Frameworks and Technologies ## Tools - [ ] Souce Control :sparkles: - [ ] git :sparkles: - [ ] The command line :star: - [ ] grep, sed, awk, tmux, vim, htop :star: - [ ] Package managers :sparkles: - [ ] Compilers :sparkles: - [ ] REPL :star: - [ ] Debuggers :sparkles: - [ ] linters :sparkles: ## Front end - [ ] HTML :dizzy: - [ ] CSS :dizzy: - [ ] CSS Selectors :dizzy: - [ ] LESS or SCSS :sparkles: - [ ] The DOM :star: - [ ] JQuery :sparkles: - [ ] A 3rd party component library (bootstrap.js, material-ui, etc.) :dizzy: - [ ] 1 current client side framework (React, Angular, Vue) :dizzy: - [ ] JavaScript :dizzy: - [ ] A language that compiles into JavaScript :star: - [ ] ajax :sparkles: - [ ] fetch :sparkles: - [ ] HTTP status codes :dizzy: - [ ] Cookies :sparkles: - [ ] HTTP headers :sparkles: - [ ] Browser debugging tools (chrome, firefox, ieedge) :dizzy: - [ ] Polyfills :dizzy: - [ ] Browser compatibility of APIs and features :sparkles: - [ ] Front end performance stratergies :sparkles: - Bundling - Minification - Compression - Image compression - Lazy loading - Code splitting ## Backend - [ ] 1 current server side framework (C# MVC, ExpressJS, Spring boot) :dizzy: - [ ] SQL (Structured Query Language) :sparkles: - [ ] 1 Relational database :star: - [ ] 1 Non-relational database :star: ## Markup formats - [ ] json :dizzy: - [ ] xml :sparkles: - [ ] markdown :star: ## APIs - [ ] REST :dizzy: - [ ] SOAP :sparkles: - [ ] GraphQL :star: - [ ] OData :no_entry_sign: # Languages - [ ] 1 strong typed language (C#, Java, Scala, etc) :sparkles: - [ ] 1 dynamic language (javascript, ruby, python, etc) - [ ] 1 scripting language (bash, powershell, etc) ## Semantics :dizzy: - [ ] Operators - [ ] Methods - [ ] Functions - [ ] Variables - [ ] Annonymous and Lambda functions - [ ] Property getters and setters - [ ] Generics - [ ] Closures - [ ] Regular Expressions aka regex :sparkles: # Theory - [ ] Understanding datastuctures, and how to shape data efficently :dizzy: - Array - Stack - Queue - Hashmap/Dictionary - Binary tree - [ ] Language Parsers :sparkles: - [ ] Abstract Syntax Tree :sparkles: - [ ] Managed vs non-managed languages :sparkles: - [ ] Object Oriented Programming and design :dizzy: - [ ] Static vs Dynamic typing :dizzy: - [ ] Strong vs week type systems :sparkles: - [ ] [Software design patterns](https://sourcemaking.com/) (Adapter, factory, facade, etc) :dizzy: - [ ] BigO for time complexity :star: # Infrastructure ## Network - [ ] OSI model :star: - [ ] TCP :dizzy: - [ ] HTTP :dizzy: - [ ] IP :star: - [ ] UDP :star: - [ ] Latency :star: ## Components - [ ] Load Balancer :sparkles: - [ ] Virtual Machines :star: - [ ] Storage types (magnetic, solid state, SAN, NAS) :star: - [ ] Content Delivery Network (CDN) :sparkles: - [ ] Containers :star: - [ ] Container orchestrators :star: - [ ] Kubernetes :star: ## DevOps :star: - [ ] Configuration as code - [ ] Chef or puppet :no_entry_sign: - [ ] Cloud management tools (terraform, Azure resource manager, AWS cloud formation templates) - [ ] Self-Hosted Build systems (jenkins, cruse control) :star: - [ ] Cloud build systems (travisci, appveyor, circleci, azure pipelines) :sparkles: # JavaScript - [ ] npm :dizzy: - [ ] globally installed tools `npm install -g` :dizzy: - [ ] yarn :star: - [ ] esmodules :dizzy: - [ ] commonJS modules :dizzy: - [ ] `node_modules` directory :dizzy: - [ ] unpkg :star: - [ ] JavaScript gotchas :dizzy: - `this` - `=== vs ==` - semicolon insertion - `0 == "0" // true` - `0 === "0" // false` - [ ] ES5 vs ES6 (aka ES2015) :dizzy: - [ ] features of ES2016 :sparkles: - [ ] features of ES2017 :star: - [ ] destructuring :dizzy: - [ ] ES6 classes :dizzy: - [ ] string interpolation :dizzy: - [ ] Object spread :sparkles: - [ ] Babel :dizzy: - [ ] `let` vs `var` :dizzy: - [ ] `eslint` :star: # git In english you can describe: - [ ] A git commit :dizzy: - [ ] A git rebase vs merge :dizzy: - [ ] A git branch :dizzy: - [ ] Forking :sparkles: - [ ] Merging :dizzy: - [ ] Merge conflicts :sparkles: - [ ] Resolving a merge conflict :star: