---
title: Software Engineering
description: Software engineering applies systematic engineering principles to software development. You will understand software lifecycles, design patterns, testing methodologies, version control, and project management practices required to build reliable, scalable, and maintainable software systems.
category: programming-tech
subcategory: computer-science
difficulty: beginner, intermediate, advanced
url: /subject/software-engineering
---

# Software Engineering

Software engineering applies systematic engineering principles to software development. You will understand software lifecycles, design patterns, testing methodologies, version control, and project management practices required to build reliable, scalable, and maintainable software systems.

## Available Resources

1 Videos • 3 Books • 4 Courses • 3 Websites

## Websites

### 1. Software Engineering at Google

A free online book by Google engineers examining software engineering as programming sustained over time and by teams, covering culture, testing, code review, version control, and large-scale system design practices.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://abseil.io/resources/swe-book

**Tags:** software-engineering, google, best-practices, code-review, testing

### 2. highscalability.com

High Scalability is a tech blog offering in-depth articles and real-world case studies on building scalable distributed systems, with content on architecture patterns, performance tuning, scalability challenges, and deployment strategies.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://highscalability.com

**Tags:** websites, technology-computer-science, operating-systems

### 3. refactoring.guru

Refactoring.guru is a comprehensive learning hub for software engineers focused on design patterns and refactoring, offering clear explanations, code examples in multiple languages, and visual diagrams. It covers the Gang of Four design patterns, refactoring techniques, and practical guidance for writing clean, maintainable code.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://refactoring.guru

**Tags:** websites, technology-computer-science, computer-sciences

## Videos

### 1. Clean Code Explained

Robert C. Martin's recorded lecture on Clean Code principles, using live coding examples to explain naming, functions, and structure choices that keep software readable and maintainable as it grows.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://www.youtube.com/watch?v=7EmboKQH8lM

**Tags:** clean-code, programming-practices, software-engineering, uncle-bob

## Courses

### 1. CS 169: Software Engineering

Learn modern software engineering practices! Explore agile, testing, and development in this comprehensive course.

**Difficulty:** Advanced | **Price:** Free

**Link:** https://cs169.berkeley.edu/

**Tags:** software-engineering, berkeley, agile, testing, saas

### 2. System Design Primer

Learn scalable system design concepts with donnemartin's comprehensive course! Master key principles & build robust applications.

**Difficulty:** Beginner | **Price:** Free

**Link:** https://github.com/donnemartin/system-design-primer

**Tags:** system-design, scalability, distributed-systems, interview-prep

### 3. Performance Engineering of Software Systems (MIT 6.172)

**Author:** Charles Leiserson, Julian Shun

Hands-on, project-based study of building fast, scalable software in C: performance analysis, algorithmic techniques, instruction-level and cache optimizations, and parallel programming. Includes 23 lecture videos, slides, programming projects and exams with solutions, teaching learners to measure and speed up real code.

**Difficulty:** Intermediate | **Price:** Free

**Link:** https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/

**Tags:** performance-engineering, parallel-programming, cache-optimization, c-programming, profiling

### 4. CMU 17-313: Foundations of Software Engineering

Carnegie Mellon's undergraduate software engineering course, with public slides, readings, and assignments covering project planning, team dynamics, architecture, code review, testing, static and dynamic analysis, continuous integration, deployment, and technical debt.

**Difficulty:** Intermediate | **Language:** English | **Price:** Free

**Link:** https://cmu-313.github.io/

**Tags:** software-engineering, code-review, software-testing, continuous-integration, software-architecture, technical-debt

## Podcasts

### 1. Software Engineering Daily

**Author:** Software Engineering Daily

Daily interview podcast with engineers building production software, covering databases, distributed systems, infrastructure and developer tooling. Episodes trace how a specific system was designed and what trade-offs its builders made, rather than teaching syntax.

**Difficulty:** Intermediate | **Language:** en-US | **Price:** Free

**Link:** https://softwareengineeringdaily.com/

**Tags:** software-engineering, distributed-systems, databases, infrastructure, system-design

### 2. Coding Blocks

**Author:** Allen Underwood, Michael Outlaw, Joe Zack

Podcast (2013–2024) in which three working software engineers discuss design patterns, software architecture, object-oriented design, databases, performance and classic programming books in long conversational episodes. Listeners gain practical vocabulary and judgement for structuring maintainable code in any mainstream object-oriented language.

**Difficulty:** Intermediate | **Language:** en-US | **Price:** Free

**Link:** https://www.codingblocks.net

**Tags:** software-design, design-patterns, software-architecture, object-oriented-programming, databases

### 3. Software Engineering Radio

**Author:** team@se-radio.net (SE-Radio Team)

Software Engineering Radio is a podcast targeted at the professional software developer. The goal is to be a lasting educational resource, not a newscast. SE Radio covers all topics software engineering. Episodes are either tutorials on a specific topic, or an interview with a well-known character from the software engineering world. All SE Radio episodes are original content — we do not record conferences or talks given in other venues. SE Radio is brought to you by the IEEE Computer Society and IEEE Software magazine.

**Difficulty:** Beginner | **Language:** en-us | **Price:** Free

**Link:** https://www.se-radio.net

**Tags:** software-engineering, podcast, interviews, software-architecture, professional-practice

## Books

### 1. Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems

**Author:** David J. Agans

A rigorous, language-agnostic framework for troubleshooting complex system failures across both hardware and software.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/Debugging-Indispensable-Rules-Finding-Software/dp/0814471684?tag=edmonddante07-20

**Tags:** debugging, troubleshooting, software-engineering, systems-thinking

### 2. Design Patterns: Elements of Reusable Object-Oriented Software

**Author:** Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

The catalogue that named the field: 23 patterns in creational, structural and behavioural groups, each with intent, applicability, structure, consequences and C++/Smalltalk sample code. After it you can recognise recurring object-oriented designs and discuss them in shared vocabulary.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0201633612?tag=edmonddante07-20

**Tags:** books, technology-computer-science, software-architecture

### 3. The Mythical Man-Month

**Author:** Frederick P. Brooks Jr.

A classic collection of essays on software project management drawn from Brooks's experience leading IBM's OS/360 development, examining why adding manpower to a late project makes it later and other management pitfalls.

**Difficulty:** Intermediate | **Language:** English | **Price:** Paid

**Link:** https://www.amazon.com/dp/0201006502?tag=edmonddante07-20

**Tags:** books, technology-computer-science, computer-sciences

---

*This content is part of Dantes.io - Your Treasure Map to Knowledge*

*Curated by humans at Dantes.io. Personal study use welcome; republishing this curation requires permission (team@dantes.io).*

View this page online: https://dantes.io/subject/software-engineering