Skip to main content
Software Alchemy

The Art and Science of 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.

So you want to be a Microsoft (.NET) stack developer? Your head may be spinning from all the information out there and recommendations that you've either heard from other people or read online (e.g. Reddit). You might be feeling like you're being pulled in several directions.

I'd like to help you.

The purpose of this blog series, the Foundational Concepts Series, is to help introduce novice software developers to programming on the Microsoft stack. I first started coding when I was a kid and I've been using C# and .NET since 2003, so I'd like to think that I've learned a few things over the years. Even intermediate or advanced software developers may learn something new or fill in gaps in their knowledge from this blog series. My goal is to present the material in a fun and accessible format, so that the reader is left with not only a greater understanding of programming concepts and how to create quality software using one of the finest ecosystems out there, but also a passion for learning, so that you will continue to grow as a professional and as a person.