This is not just another code camp.
Our week-long Software Design and Development Clinic is designed to start transforming experienced developers into software engineers capable of managing complex software systems.
A solid software engineering foundation is essential for creating quality software. Decades of experience has taught us many things and shaped how we approach software development. We believe this is so powerful that it must be shared with our fellow software developers and engineers if the industry is going to advance the practice of software design and development.
Here is what some of the students are already saying about the class:
“I see this as what I hope is the future of software design.”
“A number of my colleagues would benefit from learning what our software design does for us, and why. It has certainly benefited me.”
“Good format for exchanging code / design ideas. Seeing concepts put into action creates motivation for doing it.”
Our approach to the Software Design and Development Clinic is not based on lectures alone. At least 2/3 of the class is spent with real‑world code and in-depth exercises to illustrate how best practices and proven methodologies can make developers more productive, feel more effective, and produce well-architected software.
Using projects created specifically for this course, students will practice concepts such as:
Rationally decomposing a system into services and classes
Improving system maintainability
Designing for change
Taking a layered approach to quality
Leveraging code reviews
Foundations of Software Development
- Motivation & The Software Crisis
Make students aware of the software crisis, and how we compare to other industries.
- Foundations of Software System Design
Cover the classic concepts of software design.
- Applying Design Principles to Avoid Design Smells
Show why good design is necessary for flexible, scaleable, and maintainable systems.
- Dependency Injection (DI)
Introduce dependency injection, why it is good, how to implement it, and how to use it.
- System Design Activity
- System Decomposition
Provide students with tools to decompose an ecommerce solution using volatility-based decomposition.
Equip students with a basic set of tools for diagramming a system.
- Task Decomposition
Illustrate the value in tasking things out. Students should understand the importance of thinking things through before jumping into code.
- Test-Driven Design (TDD)
Provide a good understanding of how to write automated tests, and motivate the students to do so.
- Interface and Data Contract Design
Provide a framework for decomposing a system into contracts and data contracts.
- Code Reviews
Empower students to conduct better code reviews, and write code that is easier to review.
- Code Construction Activity 1 & 2
The hands-on portions include continued development of the Ecommerce software project, which involves adding features to the solution with a focus on interface and contract design, implementing complex workflows, and developing automated unit and integration tests.
Legacy System Construction
- Legacy System
Introduce what it takes to improve the quality of a legacy system while adding business value.
Provide examples of how refactors have been done successfully.
- Legacy System Activity 1, 2, & 3
- Async Patterns
Introduce students to async patterns, especially the use of queues within mature architectures.
- New Solution Set Up
Show students how to set up a new solution in Visual Studio to maximize productivity.
- Advanced DI
Give students experience with dependency injection frameworks such as Unity.
- Advanced TDD
Students will learn to use testing frameworks to simplify automated testing.
Let’s have fun writing software!
The Software Design and Development Clinic is designed for developers who are:
Effective team communicators who excel at sharing what they learn, interact well with other team members, and can both accept and provide constructive feedback.
Productive developers who are effective at completing their work in a timely manner.
Pattern followers who work well at adapting existing code but may not fully possess the “big picture” understanding needed to identify when and how to apply design principles.
The Software Design and Development Clinic is led by Don’t Panic Labs CTO Doug Durham and Software Architect Chad Michel. Together they have over 50 years of software development and architecture experience.
Since classes are limited to 12 students, there are many opportunities for discussions with the instructors.
Email firstname.lastname@example.org to learn more about:
- Future class dates
- Customizing this class to better fit your organization’s needs
- The possibility of your company hosting this class