Tim Murphy's .NET Software Architecture Blog

September 2015 Entries

Learning The Azure Cloud

HiddenLake20141204 (2)_3)_4)_5)_tonemapped

The cloud is everywhere around us and if you are building systems in the Microsoft space the cloud means Azure.  So how do you get started.  To my way of thinking you need to understand the front end, batch processing and storage offerings along with the toolset.  This post will outline some of the resources that I have found are helpful to getting started.

Trial Azure Subscription

The first thing anyone who is interested in Azure should do is sign-up for a free trial subscription.  If you are lucky enough to have an MSDN subscription you can also use your $100/month allowance that comes with it.  Either way nothing can ever replacing getting your hands dirty.

Once you setup a subscription you want to make sure you get the most out of it.  One of the greatest thing with Azure is that there are a certain amount of resources that you can always get for free.

Resource sites

All of the resources I have listed here are from Microsoft themselves.  There are a number of other great sites out there, but this should be enough to get you started.

The main online resource site is on the Azure site itself.  This gives you a number of scenarios and examples for developers, administrators and architects.  If you are looking for some free lectures and associated code check out the Microsoft Virtual Academy.  While you are there check out the variety of material on other subjects they have available.

The last site I would suggest for beginners is the Channel 9 Azure Friday site.  Scott Hanselman is always a great presenter and is able to boil down just about any subject to understandable nuggets.  They cover a diverse array of Azure related subjects so everyone should be able to find some pearls of wisdom.


Learning Microsoft Azure by Geoff Webber-Cross gives a good starting point for a rounded understanding of the basics involved with building Azure solutions.  It is a little out of date at this point, but then again anything in print is these days.  The concepts are still valid.

For those of you who get more advanced or have an architecture bent you probably also want to check out Building Hybrid Applications in the Cloud on Windows Azure.  This one was written even earlier, but it is from the Patterns and Practices team which I have trusted for the past 15 years.

This list is by no means comprehensive, but hopefully it will give you are jumping off point to begin your Azure journey.

What Should Your Goals Be When Developing

Waiting For Football

This post was prompted by a number of Twitter posts that were discussing if developers thought about who would be maintaining the code they wrote.  Of course the answer is “it depends” as any good consultant will tell you.  No two developers are the same.  Some are more aware of the consequences of their decisions than others.  The real question is what should your goals be as you are developing?

The main trade off we struggle with are speed to market versus maintainability.  Every project is under time pressure and every organization struggles to keep maintenance costs down.  How do you strike a balance that gives you the best return on investment?

Thankfully many of the coding practices that make a piece of code more maintainable are patterns that can be learned and honed to the point where they do not impede progress adversely.

On the other hand, many of the abstractions used to make code more unit testable, such as dependency injection, also drastically increase maintenance cost.  This is especially true as your object graphs get deeper and each dependency relies on another above it.  The tests help greatly with making sure that you don’t break specific scenarios when you change code, but finding a new bug and the right place to add a new feature have a large increase in cost as the abstractions make understanding the code paths challenging.

They way I see it a balance needs to be struck between maintainability, testability and time to market.  How much weight each of those factors have depends on the size of your product, your market and your staff’s capabilities.  Review your company’s priorities and learn to leverage your tools and processes to match those priorities.  In the end this is a game of try, learn and repeat.  Keep your head up and keep improving.