Dr Milan Milanović
banner
milanmilanovic.bsky.social
Dr Milan Milanović
@milanmilanovic.bsky.social
310 followers 400 following 2K posts
Chief Roadblock Remover and Learning Enabler | Coach | Building great products, building great teams! Author of Tech World With Milan Newsletter
Posts Media Videos Starter Packs
Pinned
I share one actionable insight with 400,000+ software engineers every week.

Topics:

🔹 Software engineering (patterns, principles, practical tips)
🔹 Tech leadership (real-world lessons, not theory)
🔹 Career growth (strategies, mental models, moves)

Join here: newsletter.techworld-with-milan.com
𝟲. 𝗕𝘆 𝗣𝘂𝗿𝗽𝗼𝘀𝗲

🔹 API Platform
🔹 Integration Hub
🔹 Developer Portal
🔹 Developer Platform
𝟱. 𝗕𝘆 𝗗𝗮𝘁𝗮. For data-oriented systems.

🔹 Data Mesh
🔹 Data Warehouse
🔹 Data Fabric
🔹 Data-centric Business Logic
🔹 Data Lake
𝟰. 𝗕𝘆 𝗦𝘁𝗿𝗲𝗮𝗺. How data flow through our system.

🔹 Pipe and Filters
🔹 Message Brokers
🔹 Fast Data
𝟯. 𝗕𝘆 𝗘𝘃𝗲𝗻𝘁𝘀. We use it to decouple software components in an event-driven manner.

🔹 Publish/Subscribe
🔹 CQRS (Command Query Responsibility Segregation)
🔹 ES (Event Sourcing)
🔹 Reactive
𝟮. 𝗕𝘆 𝗖𝗼𝗺𝗽𝗼𝘀𝗶𝘁𝗶𝗼𝗻. Answer how we compose internal structures.

🔹 Microservices
🔹 Monolith
🔹 Microkernel
🔹 Layers
🔹 Plugins
🔹 Components
🔹 Nano services
𝟭. 𝗕𝘆 𝗖𝗼𝗻𝗻𝗲𝗰𝘁𝗶𝗼𝗻𝘀. A way how to connect services and apps.

🔹 REST (Representational State Transfer)
🔹 BFF (Backend for Frontend)
🔹 RPC (Remote Procedure Call)
🔹 P2P (Peer to Peer)
🔹 SOA (Service-Oriented Architecture)
We identified some 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗮𝗹 𝘀𝘁𝘆𝗹𝗲𝘀 𝗮𝗻𝗱 𝗽𝗮𝘁𝘁𝗲𝗿𝗻𝘀 by different categories:
They enable us to reduce design complexity, increase system maintainability and reduce development time.
Over time we saw some 𝗰𝗼𝗺𝗺𝗼𝗻 𝘀𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗽𝗮𝘁𝘁𝗲𝗿𝗻𝘀 emerge. They are reusable solutions to common design problems. They are often used as a starting point for designing software systems and provide a set of best practices for solving specific architectural problems.
The output of the software design process is a 𝘀𝗲𝘁 𝗼𝗳 𝗱𝗲𝘀𝗶𝗴𝗻 𝗱𝗼𝗰𝘂𝗺𝗲𝗻𝘁𝘀 or diagrams that serve as a blueprint for the software development team to follow. By following the software design plan, developers can ensure the final product meets stakeholders' requirements and is of high quality.
During the software design phase, we create a high-level view of the system, including its structure, behavior, and interactions with other systems. This involves making decisions about the software's internal structure and organization.
𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗦𝘁𝘆𝗹𝗲𝘀 𝗮𝗻𝗱 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀

𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗱𝗲𝘀𝗶𝗴𝗻 is the process of defining the architecture, components, modules, and interfaces of a software system 𝘁𝗼 𝗺𝗲𝗲𝘁 𝘀𝗽𝗲𝗰𝗶𝗳𝗶𝗲𝗱 𝗿𝗲𝗾𝘂𝗶𝗿𝗲𝗺𝗲𝗻𝘁𝘀.

🧵
- 𝗝𝘂𝘀𝘁 𝗘𝗻𝗼𝘂𝗴𝗵 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 by George H. Fairbanks (amzn.to/3L1rjtT)
- 𝗥𝗲𝗹𝗲𝗮𝘀𝗲 𝗜𝘁! by Michael Nygard (amzn.to/3KX4LKX)
- 𝗥𝗶𝗴𝗵𝘁𝗶𝗻𝗴 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 by Löwy Juval (amzn.to/3KSzuc9)
- 𝗧𝗵𝗲 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁 𝗘𝗹𝗲𝘃𝗮𝘁𝗼𝗿 by Gregor Hohpe (amzn.to/4ouUhRC
Just Enough Software Architecture: A Risk-Driven Approach
Just Enough Software Architecture: A Risk-Driven Approach [George H. Fairbanks] on Amazon.com. *FREE* shipping on qualifying offers. Just Enough Software Architecture: A Risk-Driven Approach
amzn.to
In addition, the next step could be following ones:

- 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗶𝗻 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗲, 𝟰𝘁𝗵 𝗘𝗱𝗶𝘁𝗶𝗼𝗻 (the bible of Software Architecture - amzn.to/4hnrIDm)
- 𝗖𝗹𝗲𝗮𝗻 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 by Robert C. Martin (amzn.to/4ouutoE)
- 𝗖𝗼𝗻𝘁𝗶𝗻𝘂𝗼𝘂𝘀 𝗗𝗲𝗹𝗶𝘃𝗲𝗿𝘆 by Dave Farley (amzn.to/43ifhCI)
Software Architecture in Practice (SEI Series in Software Engineering)
Software Architecture in Practice (SEI Series in Software Engineering) [Bass, Len, Clements, Paul, Kazman, Rick] on Amazon.com. *FREE* shipping on qualifying offers. Software Architecture in Practice (SEI Series in Software Engineering)
amzn.to
Then, if you want to expand you horizons above this, check 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗳𝗼𝗿 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀 by Simon Brown - leanpub.com/software-arc... (focus on modeling and documentation) and 𝗧𝗮𝗹𝗸𝗶𝗻𝗴 𝘄𝗶𝘁𝗵 𝗧𝗲𝗰𝗵 𝗟𝗲𝗮𝗱𝘀 by Patrick Kua (real-life stories from projects by tech leads - amzn.to/46XURkN).
Software Architecture for Developers
A developer-friendly, practical and pragmatic guide to lightweight software architecture, technical leadership and the balance with agility.
leanpub.com
𝗛𝗼𝘄 𝘁𝗼 𝗹𝗲𝗮𝗿𝗻 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲

If you want to learn about Software Architecture, you can start with the book: 𝗙𝘂𝗻𝗱𝗮𝗺𝗲𝗻𝘁𝗮𝗹𝘀 𝗼𝗳 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 (amzn.to/4nfBWHd) by Mark Richards and Neal Ford.

🧵
𝗵𝗲 𝗴𝗮𝗽 𝗯𝗲𝘁𝘄𝗲𝗲𝗻 𝘁𝗵𝗲𝘀𝗲 𝗹𝗮𝘆𝗲𝗿𝘀 𝗰𝗿𝗲𝗮𝘁𝗲𝘀 𝗰𝗼𝗻𝗳𝘂𝘀𝗶𝗼𝗻

Teams buy tools they don't need. Developers learn frameworks they won't use.

If you're writing software with AI help → stick to the top layer.

If you're building AI products → you need both.

Pick your layer first. Then pick your tools.
𝗕𝗼𝘁𝘁𝗼𝗺 𝗹𝗮𝘆𝗲𝗿: 𝗖𝗿𝗼𝘀𝘀-𝗰𝘂𝘁𝘁𝗶𝗻𝗴

This is infrastructure. Agent orchestrators. Vector stores. Eval frameworks.

LangChain doesn't help you ship features. It helps other tools work. Same with Pinecone, LangSmith, E2B.
𝗧𝗼𝗽 𝗹𝗮𝘆𝗲𝗿: 𝗗𝗲𝘃𝗲𝗹𝗼𝗽 → 𝗥𝗲𝗹𝗲𝗮𝘀𝗲 → 𝗠𝗮𝗻𝗮𝗴𝗲

This is where work happens. Code assistants write functions. CI/CD deploys them. QA tools test them. Observability tracks performance.

You know these tools. Cursor, GitHub Copilot, CircleCI, Playwright.
𝗔𝗜 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿 𝗧𝗼𝗼𝗹𝘀 - 𝟮𝟬𝟮𝟱 𝗘𝗱𝗶𝘁𝗶𝗼𝗻

The AI developer tools market is split into two layers.

Most teams miss it.

🧵