Cultivating Senior-Level Intuition

Introduction

System Design Course for Junior Engineers

Kay Ashaolu

Purpose of this Course

  • Gain access to the collective wisdom of senior engineers
  • Distill complex concepts into practical knowledge
  • Develop the intuition to approach system design challenges like an experienced professional

The Journey from Junior to Senior Engineer

  • Junior Engineers:
    • Translate clear requirements into code
    • Rarely design systems end-to-end
  • Senior Engineers:
    • Architect complex systems
    • Possess deep intuition from experience

The Apprentice Model in Software Engineering

  • Learning system design by osmosis
  • Relying on mentorship from senior engineers
  • Similar to apprenticeship in other fields

Limitations of the Apprentice Model

  1. Limited Access: Growth depends on the number of available senior engineers
  2. Variable Willingness: Depends on seniors' willingness to teach
  3. Competency Dependence: Quality of learning tied to the competency of mentors

Comparing with Medical Training

  • Medicine uses both academic instruction and practical experience
  • Medical School:
    • Pre-clinical training
    • Clinical rotations under supervision

Pre-Clinical Training in Medicine

  • Basic Sciences:
    • Anatomy, Physiology, Biochemistry, etc.
  • Medical Ethics and Communication
  • Introduction to Clinical Skills

The Gap in Software Engineering Education

  • Lack of "pre-clinical" training equivalent
  • Focus on coding ability exclusively over system design
  • New engineers often unprepared for real-world challenges

Consequences of Current Training Models

  • Dependence on senior engineers slows growth
  • Assumes complex knowledge can't be distilled into educational forms
  • Experience becomes the only teacher

Recognizing Repeated Paradigms

  • Programming has 50+ years of history
  • Underlying concepts remain consistent despite new technologies
  • Senior engineers leverage these basic understandings

The Need for a New Approach

  • Accelerate junior engineers' growth
  • Provide academic pathways to senior-level intuition
  • Make foundational knowledge accessible

Introducing Building Blocks

  1. Identify Building Blocks: Fundamental components of system design
  2. Understand Composition: What each building block is made of
  3. Learn Integration: How to connect building blocks together

Course Objectives

  • Encapsulate basic concepts into building blocks
  • Provide a structured approach to system design
  • Help junior engineers build senior-level intuition

Benefits of This Approach

  • Accelerated Learning: Faster growth without solely relying on experience
  • Independent Growth: Less dependence on availability of mentors
  • Adaptability: Apply foundational knowledge to new technologies

What You'll Gain

  • Practical knowledge distilled from experienced professionals
  • Intuition to tackle system design challenges
  • A solid foundation for continuous growth
Made with Slides.com