# π 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:
- πΊ Channel Overview, or skip to βοΈ Where next?
Content topics are grouped into specialisms:
- π Agile Delivery Practices
- π Architecture
- βοΈ Cloud Based Infrastructure
- π₯οΈ Computer Science
- π Monitoring and Alerts
- π‘ Organisational Structures
- β¨οΈ Programming
- π£ Programming Languages
- ποΈ Service Design
- π± Software Delivery Lifecycle
- π§ͺ Software Testing
- π§ Team Building
# πΊ 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
- π Channel Introduction
- π Topic Overview
- βοΈ Writing Guide
- π Writing Template
- ...
# π 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.