
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Welcome to SOLID!
A quick background on the instructor.
[Optional] Take a look at this tutorial on how to get the most from Udemy code exercises.
This lecture provides an overview of what a great design looks like.
How does process effect the results of software engineering? Find out in this lecture.
Sometimes a design is just wrong, but we don't know exactly why. In this lecture, we discuss these common design smells:
Rigidity
Fragility
Immobility
Viscosity
Needless Complexity
Needless Repetition
Of course, a design can violate principles and not smell. For instance, a rigid design isn't a problem until you need flexibility! Software that is embedded in hardware with little to no update potential doesn't need flexibility and in fact, if the design intentionally facilitated flexibility, it could make it Needlessly Complex!
Engineering a great design an evolutionary process. How can we evolve and refactor a design successfully through iterations?
This lecture takes a look at the Test Driven Development paradigm and how it can help!
A class should have only one reason to change. This lecture explains the Single Responsibility Principle - SRP.
Making changes to code is a common activity, especially as the design evolves in response to new or changing requirements. How can we minimize the impact on existing, working code? The Open/Close Principle (OCP) tells us how!
Barbara, (with some help from Chuck) explains the Liskov Substitution Principle (LSP), the litmus test for good inheritance.
With the LSP lab completed, Chuck examines what might still smell about the design.
This might be the most important principle for software engineers today as interfaces are often misunderstood and ill-conceived. Learn all about the Interface Segregation Principle (ISP) in this lecture.
Modern languages and libraries are leveraging the concept of Dependency Inversion (DIP) more than ever before. See how the dependency inversion principle can be applied to your C# design.
This quick video concludes the course. Look here for coupons to other courses, including upcoming courses on Design Patterns.
This course dives into the aspects of software engineering that produce both great and failed software. We start off by looking at our goals for design, the common smells, process and the SOLID principles. This course reinforces best practices using the experiences of the course author and instructor, Chuck McCullough. As a practicing software engineer for over 30 years and having completed dozens of projects, he has the insights to cut through the theoretical and jump right to the important stuff!
Why choose this course? Microsoft uses Chuck's courses to train their developers internally. Chuck's courses have been delivered to thousands of developers in-person, online and via Udemy, including major corporations, government agencies and military around the world.
There is no silver bullet or magic formula for great design. Design is part art and part science and many design concepts are difficult to explain and grasp. This course focuses on the issues of design in as simple and concise way possible. Chuck also communicates that it is not necessary to implement all SOLID principles to have a great design. In fact, many designs are overly complicated because the designers were unbending in SOLID principles - this is one of the many design smells that Chuck addresses in the course.
Using C# to demonstrate with lots of hands-on labs, this course teaches:
Design Goals - What are we trying to accomplish?
Design Smells - How to identify and objectively articulate bad design choices.
Test Driven Development and minimalistic design and implementation - Avoid overdesign and facilitate design changes.
Process - What are the best ways to proceed with software development and measure progress.
Single Responsibility Principle - Only one reason to change
Open/Close Principle - Open for business, closed for modification
Liskov's Substitution Principle - a subtype can do more and require less
Interface Segregation Principle - interfaces are for clients
Dependency Inversion Principle - don't call us, we'll call you!
This course is full of examples and hands-on opportunity along with 24/7 access to help and immediate feedback on labs.