Software development is not exact science, and every decision fights its way through a host of competing forces, which are unique for every project. We accumulate this experience as a set of heuristics and patterns that prove effective, but at times this knowledge is not well structured unless we make some extra effort to do so.

Building software for living for so many years, I came across many insights and breakthroughs of my own, in areas of software development, design and architecture. Many industry leaders are organizing this body of knowledge for years, writing books and blogs, maintaining repositories of patterns, offering training, etc., but these are their insights, their experiences, and here I want to document mine.

So, I’m creating this site to categorize and formalize my own thoughts and findings and share them with the world. I hope this will allow me to see it more clearly and deepen my understanding of ins and outs of software architecture and design, as I spell it out. Hopefully you may find it useful too.

Obviously no one’s experience exists in a vacuum. There are known industry trends, published best practices, books, blogs, articles and recognized experts that influenced and shaped me as a software designer. I will share the sites I like, articles and books I read and other materials I find useful.

If you find any of the information here interesting or useful, feel free to quote it, link to it or otherwise share with the community.