# πŸ“‡ Topic Index

Discover the breadth and depth of content available through Software Engineering at Home. Find all our topics grouped into specialisms.

# πŸ“š Learning topics

General content:

Content topics are grouped into specialisms:

# πŸ“Ί Channel Overview

Helping the audience understand the content available, and support the operation of the YouTube channel, including introductions, annoucements, updates, and the like.

# In this section

# πŸƒ Agile Delivery Practices

Ways of working; processess and practices that would be considered agile, and how the delivery function supports product, business analysts, programmers, testers, and other roles in a large organisation.

# In this section

  • Scrum
  • Kanban
  • Make your queues visible
  • Cumulative Flow Diagrams
  • Cost of Delay
  • Prioritisation
  • Estimation
  • Communication
  • Retrospectives
  • Shift left
  • ...

# πŸ“ Architecture

Ways of assesssing, structuring, and designing software so that programs (no matter how large, or small) can be made simple, or simpler from chaotic, complex, or complicated forms.

# In this section

  • Architecture for programmers
  • Drawing diagrams
  • Event based systems
  • Data lakes
  • ...

# ☁️ Cloud Based Infrastructure

Use of services hosted on the internet to build software systems; instead of trying to roll and manage physical hardware and managing operating systems.

# In this section

  • AWS
  • Google Cloud
  • Microsoft Azure
  • Infrastructure as code
  • Going serverless
  • ...

# πŸ–₯️ Computer Science

Where maths and electronics meet; computer science emerges; there are a huge number of relevant topics in computer science that can be applied to programming and software engineer.

# In this section

  • Algorithms
  • Data Structures
  • Memory
  • Byte Code
  • Simple Data vs Pointers
  • JSON
  • XML
  • CPU Threads
  • ...

# πŸ”Ž Monitoring and Alerts

Good feedback loops are formed by watching the software system you're interacting with - monitoring and alerting are two ways which you can gain a live understanding of your system.

# In this section

  • Why monitor
  • Why setup alerts
  • Creating good alerts
  • Triaging issues
  • Monitoring tools
  • Creating graphs and charts
  • Inspecting data over time
  • Good dashboards
  • Use your log data wisely
  • Measure what matters
  • ...

# 🏑 Organisational Structures

Organizations structure themselves in different ways to get the most out of their employees; here we'll talk about different org structures and reflect on how to use that knowledge in your day to day life.

# In this section

  • The org chart
  • Line of reporting
  • Role of management in developing talent
  • Matrix organisations
  • Teams vs Specialists
  • ...

# ⌨️ Programming

Programming is a vast field of a approaches which explores how we interact with computers through code; everything from abstract symbol manipulation, data structures, APIs, algorithms, linting, and code quality.

# In this section

  • Callbacks, Promises, and Async await
  • Program structure
  • Code architecture
  • Object Orientated Programming
  • Functional Programming
  • Non-functional side effects
  • Code that changes together should live together
  • Deletability
  • Coupling and cohesion
  • JavaScript is a synchronous language
  • Asynchronous applications using JavaScript
  • Creating RESTFul APIs

# πŸ”£ Programming Languages

Specific topics related to named programming languages; for example how to get started, what the prerequisites are, what integrated development environments (IDEs) are available, and matching test frameworks to use.

# In this section

  • .NET basics
  • Bash basics
  • C++ basics
  • Java basics
  • JavaScript basics
  • Java !== JavaScript
  • Python basics
  • ...

# 🌱 Software Delivery Lifecycle

The process of releasing value - from code to working software, integrating real world user feedback, and improving the value proposition of a code base while managing technical debt.

# In this section

  • There is an infinite amount of value to be created
  • Continuous Integration
  • Build pipelines
  • Source Control
  • Your code as a crime scene
  • Pull Requests
  • Code Reviews
  • Code as a product
  • Long term maintenance
  • Load testing
  • Non-functional requirements
  • ...

# πŸ§ͺ Software Testing

Validating that software is correct is a large and complex field; the more time you spend on it, the more issues you can find - automation is important, but so is test strategy, and resource allocation.

# In this section

  • Why test?
  • Unit testing
  • Integration testing
  • Schema tests
  • Contract testing
  • API testing
  • Smoke tests
  • Test Driven Development
  • Behaviour Driven Development
  • TDD and BDD the same thing?
  • When to manually test
  • When to automate testing

# πŸ›ŽοΈ Service Design

Next level software development is about services; products are built and sold, but services are timely and ongoing. How does service based design influence how we approach software engineering?

# In this section

  • Products vs Services
  • Good Services
  • Supporting services with software
  • Separating software tools from the services they provide
  • Service Catalogues
  • Measuring the success of a service
  • ...

# 🚧 Team Building

How do you negotiate with others to bring a group of people together to share a common goal? What distractions do people face? Team building is an important aspect of supporting and maintaining large software systems.

# In this section

  • πŸ”’ Learning by Numbers
  • Vision and Goals
  • Quarterly objectives and key results (OKRs)
  • Strategy vs Tactics
  • Camaraderie / Comradery
  • Team Branding
  • Psychological Safety
  • Fun things
  • Team health
  • Roles and responsibilities
  • ...

# πŸ—ΊοΈ Where next?

Well done for making it to the end... things you can do next:

  • Watch the channel introduction
  • Watch the topic summary for 2021
  • Choose a specialism that you're interested in
  • Start learning about topics that catch your eye
  • Give feedback by leaving comments
  • Subscribe over at patreon to support and grow the content

Good luck for the year ahead, I hope you learn lots~

~keep an open mind; be kind and patient with each other.