2018-10-13 11:14:29 -04:00
2018-10-13 11:14:29 -04:00

Big ol' checklist of things to know. 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

  • 🚫 You shouldn't have to know this, but its worth knowing about
  • Something you should know of, and its basic applications
  • You should know how this works for most use cases, and be able to execute without bingling
  • 💫 You should be a master of this topic

Lingo 💫

  • API
  • Refactor
  • Bug
  • CMS
  • DevOps
  • "Batteries Included"
  • "Time box"
  • Continuous Intergraton
  • Continuous Delivery
  • SCM
  • VCS

Frameworks and Technologies

Tools

  • Souce Control
  • git
  • The command line
  • grep, sed, awk, tmux, vim, htop
  • Package managers
  • Compilers
  • REPL
  • Debuggers
  • linters

Front end

  • HTML 💫
  • CSS 💫
  • CSS Selectors 💫
  • LESS or SCSS
  • The DOM
  • JQuery
  • A 3rd party component library (bootstrap.js, material-ui, etc.) 💫
  • 1 current client side framework (React, Angular, Vue) 💫
  • JavaScript 💫
  • A language that compiles into JavaScript
  • ajax
  • fetch
  • HTTP status codes 💫
  • Cookies
  • HTTP headers
  • Browser debugging tools (chrome, firefox, ieedge) 💫
  • Polyfills 💫
  • Browser compatibility of APIs and features
  • Front end performance stratergies
    • Bundling
    • Minification
    • Compression
    • Image compression
    • Lazy loading
    • Code splitting

Backend

  • 1 current server side framework (C# MVC, ExpressJS, Spring boot) 💫
  • SQL (Structured Query Language)
  • 1 Relational database
  • 1 Non-relational database

Markup formats

  • json 💫
  • xml
  • markdown

APIs

  • REST 💫
  • SOAP
  • GraphQL
  • OData 🚫

Languages

  • 1 strong typed language (C#, Java, Scala, etc)
  • 1 dynamic language (javascript, ruby, python, etc)
  • 1 scripting language (bash, powershell, etc)

Semantics 💫

  • Operators
  • Methods
  • Functions
  • Variables
  • Annonymous and Lambda functions
  • Property getters and setters
  • Generics
  • Closures
  • Regular Expressions aka regex

Theory

  • Understanding datastuctures, and how to shape data efficently 💫
    • Array
    • Stack
    • Queue
    • Hashmap/Dictionary
    • Binary tree
  • Language Parsers
  • Abstract Syntax Tree
  • Managed vs non-managed languages
  • Object Oriented Programming and design 💫
  • Static vs Dynamic typing 💫
  • Strong vs week type systems
  • Software design patterns (Adapter, factory, facade, etc) 💫
  • BigO for time complexity

Infrastructure

Network

  • OSI model
  • TCP 💫
  • HTTP 💫
  • IP
  • UDP
  • Latency

Components

  • Load Balancer
  • Virtual Machines
  • Storage types (magnetic, solid state, SAN, NAS)
  • Content Delivery Network (CDN)
  • Containers
  • Container orchestrators
  • Kubernetes

DevOps

  • Configuration as code
  • Chef or puppet 🚫
  • Cloud management tools (terraform, Azure resource manager, AWS cloud formation templates)
  • Self-Hosted Build systems (jenkins, cruse control)
  • Cloud build systems (travisci, appveyor, circleci, azure pipelines)

JavaScript

  • npm 💫
  • globally installed tools npm install -g 💫
  • yarn
  • esmodules 💫
  • commonJS modules 💫
  • node_modules directory 💫
  • unpkg
  • JavaScript gotchas 💫
    • this
    • === vs ==
    • semicolon insertion
    • 0 == "0" // true
    • 0 === "0" // false
  • ES5 vs ES6 (aka ES2015) 💫
  • features of ES2016
  • features of ES2017
  • destructuring 💫
  • ES6 classes 💫
  • string interpolation 💫
  • Object spread
  • Babel 💫
  • let vs var 💫
  • eslint

git

In english you can describe:

  • A git commit 💫
  • A git rebase vs merge 💫
  • A git branch 💫
  • Forking
  • Merging 💫
  • Merge conflicts
  • Resolving a merge conflict
Description
A checklist of things to know when trying to enter the software industry
Readme 35 KiB