Ardalis is Steve Smith
Proven Expertise
Steve Smith has been recognized by Microsoft as a Most Valuable Professional (MVP) since 2002, and was a member of Microsoft’s Regional Director program for 10 years. He is also a founding member of the ASPInsiders, an external advisory group for the ASP.NET product team. As Microsoft launches their new version of ASP.NET, he has been contributing to the product and authoring many sections of the official documentation on GitHub.
How can I help you
I offer various different professional services that includes private training for corporate customers, accelerate your project with a bit of mentoring or even a home like inspection for your code and a software application.
Mentoring
You or your team can benefit from Steve’s experience with ASP.NET using SOLID development principles, proven design patterns, and Domain-Driven Design (DDD).
“Our team could spend many hours with other developers figuring out a problem or best practice, or we could set up a meeting with Steve.”
“[Steve] is able to quickly understand the problems we are trying to solve and then works with us to solve the problems.”
Online Training
Steve has published many courses on Pluralsight, covering topics from N-Tier architecture to Refactoring to Domain-Driven Design. You can also follow Steve on YouTube for more online video content. See what others say about Steve’s courses.
Assessments
Quickly learn where your application could be improved with an application assessment from Steve. An assessment will reveal “low hanging fruit” that will add the greatest value for the least effort, and can identify security and performance issues as well as maintainability anti-patterns and technical debt. Read more…
Workshops
Look for Steve’s workshops on software craftsmanship, ASP.NET 5, and Domain-Driven Design at an upcoming conference, or schedule one for your team. Contact Steve for more details.
Speaking Engagements
Steve is a regular speaker at tech conferences like Codemash, Stir Trek, DevIntersection, and more. You can find some of his past presentations on SlideShare and SpeakerDeck.
Watch Steve discuss Software Quality on Channel 9 with Seth Juarez:
Interviews and Podcasts
Listen to interviews with Steve Smith on various industry shows and podcasts.
Latest Articles
When working with software development, especially in object-oriented or component-based systems, understanding the distinction between interfaces and implementations is crucial. The two terms often come up in conversations about architecture, design patterns, and coding best practices, but what do they really mean? In this post, we'll break down the difference and why it matters. YouTube What is…
Keep Reading →
As a software developer, you might spend most of your time immersed in code, solving problems, and building innovative solutions. But have you ever considered starting a blog? If you haven't, let me give you some compelling reasons why you should. This is advice I frequently give to members of my developer group coaching program at devBetter.com. Watch the Video 1. Sharpen Your Skills One of the…
Keep Reading →
What do you do when you find yourself in microservice hell? How do you keep the gains you (hopefully) made in breaking up your legacy ball of mud, without having to constantly contend with a massively distributed system? Migrate to a modular monolith. Microservices Microservices have been all the rage for the past several years. They offer a way to break up large, monolithic applications into…
Keep Reading →
One of the key challenges in developing a modular monolith is managing the communication between different modules, especially when it comes to handling data dependencies across module boundaries. Recently, I received an interesting question from one of the students of my modular monoliths course, which I thought others might appreciate. Student Query Modular Monolith course question (EFCore…
Keep Reading →
Writing maintainable code should be a goal in most software engineering projects. Although definitions and especially hard measurements of what maintainable means with regard to software may vary, it can be useful to compare maintainable code to the much more easily verified unit testability of that code. Introduction When discussing software quality, two important concepts often arise: unit…
Keep Reading →
One of the key challenges in developing a modular monolith is managing the communication between different modules, especially when it comes to handling data dependencies across module boundaries. Recently, I received an interesting question from one of the students of my modular monoliths course, which I thought others might appreciate. Student Query Hi Steve, I have another question for you…
Keep Reading →
The other day I was participating in a conversation online in an architecture forum. One of the participants was complaining about the mess they were cleaning up from a team they'd joined. The team had, ostensibly, been following Clean Architecture, but the code they had produced was a mess. Their conclusion: Clean Architecture sucks. They led with: Clean Architecture and its obsession with…
Keep Reading →
In the fast-evolving world of software development, keeping pace with technology trends is both a necessity and a challenge. Companies and developers often find themselves making critical decisions about whether to adopt new technologies early (bleeding edge), wait until they mature (leading edge or cutting edge), or continue using older, more established technologies (what I'll call the dull edge…
Keep Reading →
NOTE: Watch the video above to see actual timings of starting with and without debugging. Vote for this feature request to make Run vs Debug more obvious in Visual Studio.. Thanks! I work with a lot of different .NET developers as a trainer, architect, and consultant with NimblePros. One thing that I'm frequently pointing out to them is the difference in startup speed for their applications when…
Keep Reading →
If you don't like reading, here's my YouTube video with samples that covers why these 5 rules will help you write better DTOs: What's a DTO? A DTO is a Data Transfer Object. Its job is to transfer data, and it can be used both to send data and to receive it. Often, data transferred will use different types (possibly even different programming languages and technology stacks) on each end of the…
Keep Reading →