Currently a Senior Software Engineer for SpringSource where he is the Technical Lead and Community Evangelist for the Spring.NET Framework, Stephen brings his varied 18-year-plus experience in software and technology to the design and delivery of Software Engineering Solutions and Frameworks for other Software Engineers. In addition to his work on Spring.NET, Stephen is also an active contributor to several other .NET Open-Source Software projects including NHibernate, NDbUnit, and others. Stephen is also a current and past Microsoft MVP award recipient and presently holds the office of the Vice President for INETA, North America.
Active in the software development community, Stephen speaks publicly, blogs (semi-)regularly, and is the author of several popular screencast series focused on Agile and ALT.NET concepts and technologies including the widely-praised 15-part Summer of NHibernate video series introducing viewers to the popular open-source O/RM tool. Stephen is also a founding/organizing member of the NYC ALT.NET user group which meets monthly to discuss Agile-focused techniques and technologies in the world of Microsoft software development and beyond.
Steve Bohlen's Blog
|Topic: ||Exploring Domain Driven Design Implementation Patterns in .NET |
|Description: ||In this talk we will first begin with a brief introduction to DDD concepts and principles for those new to this overall approach and then explore various implementation patterns to translate DDD concepts into .NET code. We will investigate implementations for Repositories, Specifications, Entities, Value Objects, Services, and other DDD constructs. We will also discuss some considerations for how to structure your projects and solutions to maximize flexibility and manage the evolution of your domain over time. |
|Topic: ||Taming Dependency Chaos with Inversion of Control Containers |
|Description: || |
If a little decomposition is good, then A LOT of decomposition is better right? Well, maybe not :) In this talk, we'll take a look at understanding the intent behind Dependency Injection, understand the value of following the Single Responsibility Principle in our OO designs, and investigate the trouble that blind adherence to this pattern can often cause in our projects.
|Topic: ||Unit Testing Patterns and Anti-Patterns |
|Description: || |
Effective unit testing is more art than science -- in this talk we'll look at both Patterns and Anti-Patterns for writing, organizing, and designing efficient, effective unit tests that help to ensure your tests continue to add value to your project throughout its evolution rather than becoming an anchor that weighs down your progress and impedes your speed! Learn both what to do and what NOT to do from someone who has been writing unit tests for over ten years!
|Topic: ||Refactoring to a S.O.L.I.D. Foundation |
|Description: || |
In this session we take a small, functional but tightly-coupled, software solution and improve its design using each of Robert C. Martin's S.O.L.I.D. principles. Each principle is applied in sequence to the existing solution, making it possible for the attendee to observe the principle in relative isolation first while also evolving an understanding of how the principles all collaboratively reinforce each other when applied together.
|Topic: ||Effective TDD with Mock Objects |
|Description: ||In this session, we will investigate techniques for effectively leveraging mock object frameworks to help isolate our classes while using a TDD approach to build out a small corner of functionality in a much larger project. Starting from a blank slate, using TDD this session will demonstrate the development of a simple system with several dependencies with which we need to interact, ranging from the database to configuration files to web services. Along the way we will explore the roles of mocks, fakes, and stubs in the test-driven development process as we complete a working piece of software. |
|Topic: ||CQRS: Crack for Architecture Addicts? |
|Description: ||In this session we’ll take a look at understanding CQRS as a set of fundamental design principles and explore common implementation patterns that many are today using to translate these principles into practice. Along the way, we’ll demystify terms like Event Sourcing, Read-Models, Command-Handlers, Write-only Domain Models, Message Buses, and more. We’ll explore all of these in the context of a working CQRS-based system that demonstrates these concepts in action. |
|Topic: ||Introduction to Agile Principles, Practices, and Process |
|Description: ||In this session, we will explore the underpinnings of the Agile software movement, discuss the management and technical practices that can lead to successful Agile projects, and understand how they are all interdependent and co-reinforcing. Attendees will better understand how Iterations, Test-Driven Development, Continuous Integration, and other practices can be used to provide a constant stream of timely and immediate feedback to the project development team, permitting rapid response to change over time. |