# Dr Milan Milanović > Personal site of Dr Milan Milanović - author of Laws of Software Engineering, creator of the Tech World With Milan newsletter (400,000+ followers across LinkedIn, Substack, and X), Chief Technology Officer at Trucking Hub, Microsoft MVP for Developer Technologies, and coach to engineers and engineering leaders. He writes about software architecture and system design, engineering leadership, and careers in tech. Contact: milan@milanovic.org. ## Pages - [Home](https://milan.milanovic.org/): who Milan is and what he does - [Posts](https://milan.milanovic.org/post/): essays on software architecture, engineering leadership, and writing in public - [Coaching](https://milan.milanovic.org/coaching/): career and leadership coaching for engineers, tech leads, engineering managers, and CTOs - [Speaking](https://milan.milanovic.org/speaking/): conference talks, podcasts, and interviews - [Research](https://milan.milanovic.org/research/): peer-reviewed papers, citations, and academic service - [Bio](https://milan.milanovic.org/bio/): full professional biography - [RSS feed](https://milan.milanovic.org/post/index.xml): new posts, machine-readable ## Book and newsletter - [Laws of Software Engineering](https://lawsofsoftwareengineering.com/book): Milan's book on the 63 empirical laws and principles engineers run into throughout their careers - [Tech World With Milan](https://newsletter.techworld-with-milan.com/): newsletter on software architecture, system design, engineering leadership, and careers in tech ## Posts - [My Father Wrote Software for the Sarajevo Olympic Games in 1984](https://milan.milanovic.org/post/my-father-wrote-software-for-the-sarajevo-olympics/) (August 2026): My father was a mathematician who became a software engineer at Energoinvest in Sarajevo, built the computers I grew up on, and taught at a technical school. His birthday was recently, so let me tell you his story. - [Do You Have the Credibility to Write?](https://milan.milanovic.org/post/do-you-have-the-credibility-to-write/) (July 2026): Nobody starts with credibility. It is an output of writing in public, not a prerequisite for it. Why the question 'who am I to write?' is backwards, and why you should publish anyway. - [Dobrodošli u vrli novi svet](https://milan.milanovic.org/post/dobrodosli-u-vrli-novi-svet/) (May 2026): AI više nije napredni autocomplete, postao je sposoban član tima koji menja čitav lanac rada. Šta to znači za inženjere, lekare, advokate i sve nas, i kako da iskoristite trenutak. - [Interface-Driven Development (IDD)](https://milan.milanovic.org/post/interface-driven-development/) (December 2022): This text present one approach to Software Development called Interface-Driven Development. Its purpose is to make software design better and more efficient. - [Enabling High-Quality Code in .NET](https://milan.milanovic.org/post/enabling-high-code-quality-in-net/) (February 2022): How we can ensure (automatic) high code quality in .NET even before code review? By using static code analyzers and some other tools. - [Continuous Integration, Continuous Deployment (CI-CD) with Azure DevOps](https://milan.milanovic.org/post/ci-cd-with-azure-devops-yaml/) (September 2021): Continuous integration and Continuous deployment are an important part of modern software development practices and DevOps. It brings to software development teams a focus on fulfilling business requirements, code quality, and security as deployment steps are automated. - [Securing modern development lifecycle in the Cloud with the Microsoft Identity platform](https://milan.milanovic.org/post/protect-web-apis-using-azure/) (July 2021): Web developers in the modern era often create different kinds of Web APIs and publish them to some platforms. In recent years probably some Cloud platforms. These APIs are then consumed by some SPA applications (React, Angular, or similar SPA applications), mobile, or desktop applications. However, security best practices must be applied and this is something a lot of developers struggle with. In the Azure platform, we have some powerful features in place to ensure we can develop securely end-to-end. One example is the Microsoft Identity Web provider. The main advantage of using this provider is that we don’t need to know protocols such as OpenID Connect or OAuth and this enables us to not be involved manually in all changes of these protocols that happen all the time. - [The Greatest Software Development Books of All Time](https://milan.milanovic.org/post/the-greatest-software-development-books-of-all-time/) (October 2020): Ten books, language-agnostic, from Clean Code and The Pragmatic Programmer to SICP and Patterns of Enterprise Application Architecture, plus honourable mentions - and why the author of a book is usually the next best thing to working with them. - [A Brief Walk Through the .NET Ecosystem](https://milan.milanovic.org/post/a-brief-walk-through-net-ecosystem/) (June 2020): What you can actually build with .NET, and with which part of it: .NET Framework, .NET Core, Mono and Xamarin, written in 2020 as .NET 5 was about to fold them into one. - [COBOL Strikes Back](https://milan.milanovic.org/post/cobol-strikes-back/) (May 2020): From time to time we hear about COBOL, that there is demand for it. What is it and why it is happening now? - [How to Share Knowledge in Software Development](https://milan.milanovic.org/post/how-to-share-knowledge-in-software-development/) (April 2020): Sharing knowledge is one of the main pain points in today's software development. It also promotes innovation and developers productivity within developer teams. So, how we can produce a framework for sharing knowledge? - [What Every C#/.NET Developer Needs to Know in 2019](https://milan.milanovic.org/post/what-every-net-developer-need-to-know/) (August 2019): A reference list of the things every C# and .NET developer should know: the CLR and garbage collection, async, LINQ and Entity Framework, debugging, profiling, and testing, with the nice-to-know topics separated out. - [Clean Code Best Practices](https://milan.milanovic.org/post/clean-code-best-practices/) (June 2019): Being a developer these days involves sometimes developing features and fixing bugs at a fast pace, which can result in code that is difficult to maintain in the long-term. In other cases, we want to make the most elegant solutions possible to solve some problems. This can produce code that machines can understand but people have more difficulty understanding. Such code can become a major issue for a company to maintain and use in the long run. - [Should I Read Books as a Software Developer?](https://milan.milanovic.org/post/should-i-read-books-as-a-developer/) (June 2019): My strong opinion is that it is a must. A developer learns plenty from tutorials and examples, but nothing replaces a good book: tools and frameworks come and go, the thinking behind them stays.