- Basics
- Variables
- Conditionals
- Loops
- Functions
- Data Structures
- Array
- Stack
- Queue
- LinkedList
- Dictionary
- Tree (binary, self balancing, B+)
- Heap
- Algorithms
- Linear search
- Binary search
- Graph Theory
- BFS
- DFS
- Bellman-Ford
- Dijkstra
- Floyd-Warshall
- Kruskal
- Prim
- Min cut/max flow
- Spanning trees
- Eulerian vs Hamiltonian cycles/circuits
- Weighted graphs
- Directed acyclic graphs (DAGs)
- Sorting (bubble, heap, merge, quick, topological, etc...)
- Math intensive (machine learning)
- Dynamic programming (memoization)
- Greedy algorithms
- more …
- Recursion
- Print vs. return
- Boolean operations
- Time complexity (big O, etc.)
- Computational complexity (P vs. NP, etc...)
- OOP
- Polymorphism
- Classes/Encapsulation
- Inheritance
- etc (add more here)
- pass by value vs pass by reference
- overloading vs overriding
- Design Patterns
- Creational
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
- Structural
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Behavioral
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
- Creational
- Functional programming
- Higher order functions
- Pure functions
- Functors
- Composition
- Currying
- API’s vs Framework vs Library
- opnionated vs nonopinionated
- SQL vs NoSQL databases
- Fundamentals of each
- When to use which
- Database indexing
- Basics of the internet
- Packets and routing
- DNS
- IP
- HTTP
- Https?
- Concept of a URL/URI
- TCP/UDP
- Ports
- “THE CLOUD!”
- How web browsers work
- what happens when you hit "enter" into the search bar
- Web sockets/PubSub pattern
- Software architecture patterns
- MVC
- MVP
- MVVM
- VIPER
- Asynchronous programming
- Imperative vs. Declarative programming
- Higher order functions (functional programming)
- Static vs dynamic languages (c, java, etc... vs js, python, ruby, etc...)
- REST/RESTful APIs
- JSON
- Basics of Web Frameworks
- Concept of routing
- ORMs/ODMs
- Multithreading/Concurrency
- System design
- experts, add some stuff here
- Principles
- SOLID Fundamentals
- Single Responsibility
- Open/Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion
- Command-Query Separation
- YAGNI (You Aren't Gonna Need It)
- DRY (Don't Repeat Yourself)
- C fundamentals (pointers, memory management, etc...)
- Compiler, assembler, machine language (GCC, LLVM, clang)
- Caching
- File storage
- OS Design/Architecture
- Web servers
- Load balancers
- Shell
- Benchmarking (throughput vs latency)
- SOLID Fundamentals
- SOLID Fundamentals
- Agile development
- Test Driven Development
- Build Automation
- Apache Maven
- Continous Integration / Continous Development
- Jenkins
- automating software deployment
- Webhooks (Can also be apart of Bitbucket Integration)
- Jenkins
- Bitbucket Integration
- JIRA Tickets
- Command line basics
- Computer security
- Basic exploits (e.g. buffer overflow, etc.)
- Symmetric encryption (e.g. private key encryption)
- Asymmetric encryption (e.g. RSA cryptosystem)
- Digital signatures
- JavaScript fatigue
- Having 60 tabs open at once
- Refreshing Stack Overflow
- That one friend who is the “idea guy”
- Communicating ideas properly
- Being able to help with a field not uniquely your own (ex:) Developer -> Devops
- Dependency hell
- Fundamental stuff eventually blowing up
- Having a sense of humor, but a thick skin too
Taken from Sudotoons.