Day-6, Writing a list of what you don't know

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:

  1. Things I am good at
  2. Things I want to get better at
  3. 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.

Comments


about · posts · resume · home · github · twitter · rss