Skip to main content
Software Alchemy

The Art and Science of Software Development

Domain Driven Design

What is Domain-Driven Design? It is a software design methodology which seeks to efficiently create business logic components and functionality from business requirements, typically by working closely with domain experts. In this entry, I give a brief overview of Domain-Driven Design (DDD) and discuss its importance in modern software development.

Monoliths/Microservices/Multitenancy

This entry discusses some of the high-level concepts that are relevant to modern software architecture at a general level, namely monoliths vs. microservices, and multitenancy. I'll give some guidance as to what those mean, and how they are applied to this foundational concepts blog series and the accompanying demo application. In this and future blog entries I'll assume that you fall into a certain audience, namely individual entrepreneurs, small software startups, or developers/teams building new solutions within a larger organization. This information is still valuable if you are working on legacy systems or doing what we call brownfield development. However, the spirit of the information presented is most applicable to building new solutions from scratch, what is referred to as greenfield development.

Software Architecture

This is the first in a series of blog entries in which I will elaborate on progressively more advanced subjects, beginning with fundamental software patterns, practices, principles and conventions; culminating in the establishment of an architectural template demonstrating how to build enterprise business applications which can be deployed to the Microsoft Azure cloud. Along with this and future blog entries, I'll be using a demo application for a fictional organization to demonstrate the concepts I discuss. Additionally, I talk about some topics that are relevant to the "inner game" of software development.

If Visual Studio is your samurai sword, then the C# programming language along with patterns and practices of structured software development are your fighting techniques, principles and disciplines. In this post, I'm going to talk about some of the features of C#, versions 6, 7, and 8. I've chosen to focus on these three versions because not only are they the most recent (obviously) but also because the style of language version releases started to change with version 6, focusing on a more frequent tempo and more granular features. Even more importantly, the syntax and feel of the language itself seemed to turn a corner with C# 6, marking what in my opinion is an evolving paradigm shift toward functional programming.

You are a software samurai, and your sword is Visual Studio. The purpose of this blog entry is to give you guidance on some of the new features of Visual Studio 2019, as well as existing features that you may have overlooked, such as hotkeys and snippets, so that you can work more efficiently and effectively as a Microsoft (.NET) stack software developer. As stated in my previous blog post, Visual Studio is your primary tool when working on the Microsoft stack, and the better you understand that tool, the more productive you will be and the more time you will save. The idea is to reduce unnecessary wear-and-tear on your hands and body, and hopefully also prevent the mental burnout that can result from doing repetitive work. The bottom line is this: fewer keystrokes = greater career longevity.