Hands-on Software Design
Published by O'Reilly Media, Inc.
From principles to code
Building complex, heavyweight software is easy, but it takes practice and effort to move in the opposite direction to create pragmatic, lightweight design that’s extensible and maintainable. While experience is quite important, repeatedly doing the same things over and over may not present better results. You have to step back and think about the whys and then the hows behind the task you’re undertaking.
Join expert Venkat Subramaniam to gain better clarity on how to create designs for your applications, as he takes you through a very practical approach to creating lightweight design. You’ll start by unpacking the characteristics that are part of good design, then explore core design principles through a series of concrete code examples that best illustrate them.
APAC friendly time.
What you’ll learn and how you can apply it
By the end of this live online course, you’ll understand:
- The characteristics of good software design
- How to create design that is relevant instead of being frivolous
And you’ll be able to:
- Identify and apply core design principles
- Create a simple design
- Create design that is lightweight, extensible, and understandable
This live event is for you because...
- You’re an architect, lead developer, or programmer.
- You work with teams that create complex software applications.
- You want to become a better designer and developer.
Prerequisites
- A computer with a Git client and IntelliJ IDEA Community Edition installed
- A working knowledge of programming and the object-oriented paradigm in any language (Examples will be presented in Java but can be easily understood by programmers using other languages.)
Recommended preparation:
- Follow the precourse instructions to run a sample lab
Recommended follow-up:
- Watch Design Patterns (Clean Coders Video Series) (video, 11h 34m)
Schedule
The time frames are only estimates and may vary according to how the class is progressing.
Good design and design principles
- Presentation: Characteristics of good design; learning from design that evolves in code
- Group discussion: How to create good design; rules for simple design
- Hands-on exercise: Create a design that honors the single responsibility principle
- Q&A
- Break (5 minutes)
Using fundamental design principles
- Presentation: Using DRY, YAGNI, and the open-closed principle
- Group discussion: Applying the principles in a practical setting
- Hands-on exercise: Create extensible design
- Q&A
- Break (5 minutes)
Object-oriented design
- Presentation: Using the Liskov substitution principle
- Group discussion: How to choose between inheritance and delegation?
- Hands-on exercise: Apply object-oriented design principles
- Q&A
- Break (5 minutes)
Designing for extensibility
- Presentation: Favoring low and loose coupling; using dependency inversion principles
- Group discussion: Multiple uses of dependency inversion and injection
- Hands-on exercise: Go beyond simple and direct use of dependency inversion
Wrap-up and Q&A (5 minutes)
Your Instructor
Venkat Subramaniam
Dr. Venkat Subramaniam is the founder of Agile Developer, Inc. and the creator of the dev2next conference.
He has trained and mentored thousands of software developers in the US, Canada, Europe, and Asia, and is a regularly invited speaker at several international conferences. Venkat helps his clients effectively and succeed with sustainable agile practices on their software projects.
Venkat is a (co)author of multiple technical books, including the 2007 Jolt Productivity award-winning book Practices of an Agile Developer