Skip to main content

[DRAFT] Personal Learning Journey

· 4 min read
Ilham Surya
SRE Engineer - Fullstack Enthusiast - Go, Python, React, Typescript

alt text

This post i will try to create my own learning journey to deepen the knowledge related with development

Learning Hierarchy (Dev-Ops)

1. Kernel Level

As an SRE, understanding the kernel is crucial for debugging performance issues and understanding system behavior. Key areas to focus on include:

  • Process Management: Understanding how processes are created, scheduled, and managed by the kernel.
  • Memory Management: How the kernel allocates and manages memory, including virtual memory.
  • File Systems: How the kernel interacts with file systems.
  • System Calls: The interface between user-space applications and the kernel.

2. OS & Network

For OS knowledge, SREs should have a solid understanding of:

  • Operating System Concepts: Processes, threads, memory management, and file systems.
  • System Administration: User management, package management, and basic troubleshooting.
  • Security: User authentication, authorization, and common security vulnerabilities.

Regarding networking, familiarity with these terms is essential:

  • TCP/IP: The foundation of internet communication.
  • HTTP/HTTPS: Protocols for web communication.
  • DNS: Domain Name System, for resolving domain names to IP addresses.
  • Load Balancing: Distributing network traffic across multiple servers.
  • Firewalls: Network security systems that control incoming and outgoing traffic.
  • VPN: Virtual Private Network, for secure remote access.

3. CS Fundamentals

  • Data Structures and Algorithms:
    • Arrays, linked lists, stacks, queues, hash tables
    • Trees (binary trees, search trees, heaps)
    • Graphs (representation, traversal)
    • Sorting algorithms (merge sort, quicksort, heapsort)
    • Searching algorithms (binary search)
    • Algorithm analysis (Big O notation)
  • Operating Systems: Deep understanding of OS concepts like processes, threads, memory management, file systems, and system calls.
  • Networking: Solid grasp of networking principles, protocols (TCP/IP, HTTP, DNS), and network architectures.
  • Databases:
    • Relational databases (SQL): data modeling, schema design, SQL queries, transactions, indexing
    • NoSQL databases: key-value stores, document databases, column-family databases, graph databases
    • Database administration: backup/restore, performance tuning
  • Distributed Systems:
    • Understanding the challenges of distributed systems: consistency, fault tolerance, latency
    • Scalability patterns: sharding, replication, caching
    • Message queues and distributed streaming platforms (Kafka, RabbitMQ)

4. System Admin

  • Linux system administration: user management, package management, file system management, process monitoring
  • Scripting: Bash, Python (for automation and tooling)
  • Configuration management: Ansible, Chef, Puppet (for infrastructure as code)
  • Automation: cron, systemd timers
  • Cloud platforms: AWS, Azure, GCP (basic administration and services)

5. System Perfomance Checking

  • Monitoring tools: Prometheus, Grafana, Datadog, New Relic
  • Logging: ELK stack (Elasticsearch, Logstash, Kibana), Fluentd
  • Tracing: Jaeger, Zipkin, OpenTelemetry
  • Profiling: CPU profiling, memory profiling (using tools like perf, pprof)
  • Load testing: JMeter, k6, Locust

Learning Hierarcy (ML/DA Learning)

Learning Material: https://www.deeplearning.ai/

1. Data Mining

  • Data cleaning and preprocessing
  • Feature extraction and selection
  • Association rule mining
  • Clustering algorithms
  • Data visualization

2. Machine learning

  • Supervised learning (regression, classification)
  • Unsupervised learning (clustering, dimensionality reduction)
  • Model evaluation and selection
  • Regularization techniques
  • Common algorithms (linear regression, logistic regression, decision trees, support vector machines, k-nearest neighbors)

3. Natural Language Processing

  • Text preprocessing (tokenization, stemming, lemmatization)
  • Feature extraction (TF-IDF, word embeddings)
  • Text classification and sentiment analysis
  • Language modeling
  • Sequence-to-sequence models

4. Neural Network

  • Basic neural network architecture
  • Activation functions
  • Loss functions and optimization algorithms
  • Convolutional neural networks (CNNs)
  • Recurrent neural networks (RNNs)

5. Large Language Model

  • Transformer architecture
  • Pre-training and fine-tuning techniques
  • Prompt engineering
  • Applications of LLMs (text generation, question answering, summarization)

6. Transformer (Deep Learning Architecture)

  • Self-attention mechanism
  • Encoder-decoder structure
  • Multi-head attention
  • Applications in NLP and other domains