Welcome to my blog. My name is Carlos Santos and have been doing software development since 1996.

If SOA, REST, EDA, DDD, CQRS, Microservices and Hypermedia are in your vocabulary, then you speak my language.

If you are passionate about agile and have worked in teams using XP, Scrum, Lean or Kanban, then maybe we've both signed the agile manifesto.

Architecture is the art and science of tailoring proven patterns and practices to meet the ever evolving business demands. As challenging as this continuous task is, it is what keeps software development both stimulating and enjoyable. The experience of forming a successful, self-managing team is why I am in this field.

My roles have varied through the years but have always involved delivering distributed, large-scale custom line of business applications since 1996. First up was some time as a systems admin, followed by a stint as a database administrator. By 2000, I had decided to focus on software development and have been hooked on the .Net Framework since Beta 1 of v1. My years as a senior software engineer and team lead have culminated in being the software architect for several projects.

This diverse experience has resulted in leading and mentoring multiple agile teams through the successful delivery of various highly testable solutions implementing design patterns at both the solution and enterprise architectural level in distributed environments using REST and SOAP services. Over time, my responsibilities have included establishing the architectural vision, methodologies, processes, conflict resolution, best practices and guidelines. This has shaped me into a veteran of establishing constructive working relationships within and across teams as a means of delivering business value with agility.

Besides designing and writing software systems, my travels have also included developing/writing certification tests and courseware and reviewing books/articles. In addition to mentoring colleagues, my experience includes teaching various courses and serving as a Technical Learning Guide at TechEd '07 & '08.

My goal here is to talk about the design tradeoffs I've faced during the development of existing and new systems.

I'll be talking about various things, ranging from solution architecture (And the decisions at each of the layers) to agile practices.

The reason I chose Snowflake Design for the name of the blog is because enterprise and solution architecture is so dependent on the environment and the tradeoffs you are willing to make, that like snowflakes, architectures are typically different from one environment to another. As they say, there is no silver bullet.

And now, for the disclaimer
-------------------------  DISCLAIMER  -------------------------

This is a personal weblog. The opinions expressed here represent my own and not those of my employer.

All data and information provided on this site is for informational purposes only. I make no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis, with absolutely no warranty expressed or implied.

In addition, my thoughts and opinions change from time to timeā€¦I consider this a necessary consequence of having an open mind. This weblog is intended to provide a semi-permanent point in time snapshot and manifestation of the various memes running around my brain, and as such any thoughts and opinions expressed within out-of-date posts may not the same, nor even similar, to those I may hold today.