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:
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:
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
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!
Since classes are limited to 12 students, there are many opportunities for discussions with the instructors.
Our next class will be held October 23-27.
Email email@example.com 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