I am always interested in knowing what things I don't know about, everything isn't supposed to learnt immediately, if ever. But knowing what you don't know is something I find important.
How?
I never sat down and made a list and used to keep everything in mind. I think it's better that I realize that I also don't know how to remember things :p
Hence, because of this being the first time I was making a list, I just didn't know where to start and how in depth I should go into something before marking it as something I am good at.
I spent ample amount of time thinking but was only on my way on getting into an analysis paralysis, so I ended up looking at roadmap.sh as a checklist. I am assuming that it's a good enough list just based on how many stars it has on GitHub (~168k).
Also, I wouldn't say that I don't know few of the things I have kept unmarked, but have kept them unmarked so that I end up looking into those once again. It has been long time since I used/learned them and hence think that I would explore them in more depth if done now.
The three questions that need to be answered here are:
- Things I am good at
- Things I want to get better at
- What is my training plan for this?
I am combining question 1 and 2 for now, but would try to answer them separately next time. I have set a calendar event for 5th September to look back at this.
Things I am good at & Things I want to get better at
## Front-end
- Internet
- [x] How does the internet work?
- [x] What is HTTP?
- [ ] Browsers and how they work?
- [ ] DNS and how it works?
- [x] What is Domain Name?
- [x] What is hosting?
- HTML
- [x] Learn the basics
- [x] Writing Semantic HTML
- [x] Forms and Validations
- [x] Conventions and Best Practices
- [ ] Accessibility
- [ ] SEO Basics
- CSS
- [x] Learn the basics
- [x] Floats
- [x] Positioning
- [x] Display
- [x] Box Model
- [x] CSS Grid
- [x] Flex Box
- JavaScript
- [x] Syntax and Basic Constructs
- [x] Learn DOM Manipulation
- [x] Learn Fetch API / Ajax (XHR)
- [x] ES 6+ and modular JavaScript
- CSS Architecture
- [x] BEM
- CSS Preprocessors
- [x] Sass
- Module Bundlers
- [ ] Webpack
- [ ] Rollup
- [ ] Parcel
- Pick a Framework
- [x] React
- [ ] Angular
- [ ] Vue.js
- Web Components
- [x] HTML Templates
- [ ] Custom Elements
- [x] Shadow DOM
- CSS Frameworks
- [x] Material UI
- [x] Tailwind CSS
- [x] Bootstrap
- [x] Bulma
- Testing your Apps
- [ ] Jest
- [ ] react-testing-library
- [ ] Cypress
- [ ] Enzyme
- Progressive Web Apps
- [ ] Storage
- [ ] Web Sockets
- [ ] Service Workers
- [ ] Location
- [ ] Notifications
- [ ] Device Orientation
- [ ] Payments
- [x] Credentials
- [ ] PRPL Pattern
- [ ] RAIL Model
- [ ] Performance Metrics
- [x] Using Lighthouse
- [x] Using DevTools
- Mobile Applications
- [ ] React Native
- [ ] Flutter
- Static Site Generators
- [x] Next js
- [x] Gatsby js
- [ ] Jekyll
- [ ] Hugo
- [ ] Nuxt js
- [ ] Web Assembly (WASM)
## React
- Fundamental Topics
- [x] Create React App
- [x] JSX
- [x] Components
- [x] Props vs State
- [x] Conditional Rendering
- [x] Component Life Cycle
- [x] List and Keys
- [ ] Composition vs Inheritance
- [x] Basic Hooks
- Advanced Topics
- [x] Common Hooks
- [x] Writing your own hooks
- [x] Context
- [x] Refs
- [x] Render Props
- [x] Code Splitting
- [x] High Order Components
- [ ] Portals
- [ ] Error Boundaries
- [ ] Fiber Architecture
- Ecosystem
- [x] React Router
- [x] Next.js
- [x] React Hook Form
- [ ] Testing
- [ ] GraphQL
- [x] State Management using Redux
- [x] Styling using some libraries like Material UI
- [ ] React Native
## Backend
- OS and General Knowledge
- [x] Terminal Usage
- [ ] How Oss work in General
- [ ] Process Management
- [ ] Threads and Concurrency
- [ ] Memory Management
- [ ] Interprocess Communication
- [x] I/O Management
- [x] POSIX Basics
- [ ] Basic Networking Concepts
- Learn a Language
- [ ] Rust
- [ ] Go
- [x] JavaScript
- [x] Python
- Relational Databases
- [x] PostgreSQL
- [x] MySQL
- [ ] MariaDB
- NoSQL Databases
- [x] MongoDB
- [ ] DynamoDB
- More about Databases
- [x] ORMs
- [x] ACID
- [x] Transactions
- [x] N+1 Problem
- [ ] Database Normalization
- [ ] Indexes and how they work
- [ ] Data Replication
- [ ] Sharding Strategies
- [x] CAP Theorem
- Learn about APIs
- [x] REST
- [x] JSON APIs
- [ ] SOAP
- [ ] HATEOAS
- [ ] Open API Spec and Swagger
- [ ] Authentication
- [ ] Cookie Based
- [x] OAuth
- [x] Basic Authentication
- [x] Token Authetication
- [x] JWT
- [ ] OpenID
- [ ] SAML
- Caching
- [ ] CDN
- [ ] Server Side
- [ ] Redis
- [ ] Memcached
- [ ] Client Side
- Web Security Knowledge
- [ ] MD5 and why not to use it
- [ ] SHA family
- [ ] scrypt
- [x] bcrypt
- [ ] HTTPS
- [ ] CORS
- [ ] Content Security Policy
- [ ] SSL/TLS
- [ ] OWASP Security Risks
- Testing
- [ ] Integration Testing
- [ ] Unit Testing
- [ ] Functional Testing
- Design and Development Principles
- [ ] GOF Design Patterns
- [ ] Domain Driven Design
- [ ] Test Driven Development
- [ ] SOLID
- [ ] KISS
- [ ] YAGNI
- [ ] DRY
- Architectural Patterns
- [ ] Monolithic Apps
- [ ] Microservices
- [ ] SOA
- [ ] CQRS and Event Sourcing
- [ ] Severless
- Search Engines
- [ ] Elasticsearch
- [ ] Solr
- Message Brokers
- [ ] Kafka
- [ ] RabbitMQ
- Containerization vs Virtualization
- [ ] Docker
- GraphQL
- [ ] Apollo
- [ ] Relay Modern
- Graph Databases
- [ ] Neo4j
- WebSockets
- Web Servers
- [ ] Nginx
- [ ] Apache
- [ ] Caddy
- [ ] MS ISS
- Building for Scale
- [ ] Understand the Difference
- [ ] Instrumentation
- [ ] Monitoring
- [ ] Telemetry
- [ ] Migration Strategies
- [ ] Horizontal vs Vertical Scaling
- [ ] Building with Observability in mind
## DevOps
- Understand different OS Concepts
- [ ] Process Management
- [ ] Threads and Concurrency
- [ ] Sockets
- [ ] POSIX Basics
- [ ] Networking Concepts
- [ ] Startup Management (intid)
- [ ] I/O Managment
- [ ] Virtualization
- [ ] Memory/Storage
- [ ] File Systems
- [ ] Service Management (systemd)
- Learn to live in terminal
- [ ] terminal multiplexers
- [ ] scree
- [x] tmux
- [x] Learn Bash Scripting
- [x] Vim/Nano/PowerShell/Emacs
- [ ] Text Manipulation tools
- [ ] Process Monitoring
- [ ] Network
- [ ] System Performance
- [ ] Others
- Networking, Security and Protocols
- [x] HTTP
- [x] HTTPS
- [ ] FTP
- [ ] SSL/TLS
- [ ] SSH
- [ ] Port Forwarding
- [ ] Emails
- [ ] SMTP
- [ ] IMAPS
- [ ] POP3S
- [ ] DMARC
- [ ] SPF
- [ ] Domain Keys
- What is and whow to setup a _______
- [ ] Reverse Proxy
- [ ] Caching Server
- [ ] Forward Proxy
- [ ] Load Balancer
- [ ] Firewall
- Web Server
- [ ] IIS
- [ ] Nginx
- [ ] Apache
- [ ] Tomcat
- [ ] Caddy
- Learn Infrastucture as Code
- [ ] Containers
- [ ] Docker
- [ ] Configuration Managment
- [ ] Ansible
- [ ] Container Orchestration
- [ ] Kubernetes
- [ ] Infrastructure Provisioning
- [ ] Terraform
- Learn some CI/CD tool
- [x] Github CI
- [ ] Jenkins
- [x] GitHub Actions
- [ ] Travis CI
- [ ] Circle CI
- Infrastructure Monitoring
- [ ] Prometheus
- [ ] Grafana
- Application Monitoring
- [ ] Jaeger
- [ ] New Relix
- Logs Management
- [ ] Elastic Stack
- [ ] Papertrail
- Cloud Providers
- [ ] AWS
- [ ] Google Cloud
- [ ] Azure
- [x] Heroku
- [x] Digital Ocean
- Cloud Design Patterns
- [ ] Availability
- [ ] Data Management
- [ ] Design and Implementation
- [ ] Management and Monitoring
What is my training plan for this?
Would be editing this in a few days.