Ignasi 'Iggy' Bosch

I'm passionate about programming, I simply love it.
I like to learn and this industry brings to me the opportunity to discover new amazing stuff almost every single day.
Constant learner on how to improve writing clean and reliable code.

#Backend #Python #CleanCode #SoftwareCraftsmanship

 How do committees invent?

When I think about design, I more naturally think about it the other way around: how to decompose the whole into a set of parts that will work together to accomplish the system goals. But of course Conway is right that those parts do have to fit together to produce the intended whole again.

Design Philosophy

Jun 14 2023

 How to design software architecture: Top tips and best practices

You wouldn’t want to jump into a project without a solid plan, and software architecture design is no different. By making this process more effective, you can account for all of your requirements properly and give stakeholders the opportunity to provide their input. Using technical visuals and a careful planning process, you can outline your software architecture and design before you get started on a prototype.

Architecture Design

May 21 2023

 I Made Everything Loosely Coupled. Does My App Fall Apart?

Integrating systems provides many benefits, from seamless user experiences, consolidated data for better insights, or interacting with partner ecosystems. And the modern cloud applications that we are building are fine-grained and thus inherently interconnected. Despite having connected systems for decades, some of the fundamental concepts of partial failure, eventual consistency, or idempotency still challenge many developers. This session tackles the nuances of integrated systems, such as messages vs. events, thinking in integration patterns, whether loose coupling is always better, and how cloud automation can change the way you think about integration.

Architecture Microservices Video

Feb 27 2023

 Software Architecture by Example

Where do architecture styles come from? Do architects retreat to an ivory tower to decide what the Next Big Thing will be? No–new capabilities constantly appear in the software development ecosystem, and clever architects figure out new ways to leverage the new building blocks, leading to new named architecture styles which are only named after they have existed for a while. This is similar to art and cultural movements, how Victorianism became Modernism. In this keynote, Neal traces the similarities between architecture styles and cultural movements, how each affect the other, and points towards how Metamodernism will inform architecture, corporations, and individual workers in a fundamental way. Note to organizers: This keynote covers technical details from both my books _Fundamentals of Software Architecture and Software Architecture: The Hard Parts to illustrate the larger observations about both software architecture and the profession of software engineer. This keynote is more philoshopical than the Software Architecture: The Hard Parts keynote, ending with a call to action that architects and developers must become aware of the impact of ethics in seemingly technical decisions and act accordingly to improve rather than degrade the world. Neal Ford Neal is Director, Software Architect, and Meme Wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals, delivering technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. He speaks at many conferences.

Architecture Microservices Video

Feb 15 2023

 Strategic Domain Driven Design Tools for Non-DDD People

DDD has a reputation for being esoteric and hard to grasp for newcomers. So the community has been working hard to simplify the user experience for people new to DDD by providing practical tools like the Bounded Context Canvas which even people with no prior DDD experience can benefit from to design loosely-coupled microservices. These tools will provide you with instant value. You can use them right away on the systems you are building. The tools also help you on the path to mastery of DDD. And all of the tools are open source and creative commons, so nobody is trying to sell you anything.

DDD Video

Feb 8 2023

 Aligning Bounded Contexts with Subdomains in Legacy Code

One way or another, each system contains some kind of boundaries. I would go so far and claim that even the dreaded Big Ball of Mud systems consist of parts that could be perceived as separate though undoubtedly only under deep scrutiny. The difference is in the “thickness” of the boundaries and the measure of interrelationships between the different parts of the system, the frequency and amount of data that is passed across the fences. It is the latter that leads to increased coupling resulting in systems that are hard to maintain and hard to change. This presentation will present a story of an attempt to achieve an alignment between perceived subdomains, logical boundaries and source code structure in a legacy system. Based on the use case from healthcare we will go into technical detail on concrete steps that were followed to create a new bounded context using strategic Domain-Driven Design and 4+1 Architectural View Models.

Architecture DDD Design Video

Dec 22 2022

 Balancing Coupling in Software Design

We are used to treating coupling as the necessary evil. Hence, we aim to break systems apart into the smallest services possible, in the ever-lasting quest of decoupling everything. But what results are we getting by following this reasoning? — Instead of the promised land of evolvable systems, many such “decouple everything” endeavors lead straight into the chains of distributed monoliths. Can we do better? What if there is a better way to handle coupling in distributed systems? Or even, what if instead of fighting coupling, we can use it as a heuristic for designing systems that are actually evolvable and maintainable? That’s exactly what you will learn in this session: what coupling is, and how you can use it as a design tool. We will start by taking a journey through time, and explore the different models of evaluating coupling. Next, we will combine the existing knowledge into a coherent model — a simple function for evaluating a system’s decomposition into components. This function will allow you to assess the expected effort for evolving a system and use it as a heuristic for optimizing architectural design decisions.

DDD Design Video

Dec 22 2022

 Clean Architectures in Python

Architectural considerations are often overlooked by developers or completely delegated to a framework. We should start once again discussing how applications are structured, how components are connected and how to lower coupling between different parts of a system, to avoid creating software that cannot easily be maintained or changed. The ""clean architecture"" model predates Robert Martin, who recently brought it back to the attention of the community, and is a way of structuring applications that leverages layers separation and internal APIs to achieve a very tidy, fully-tested, and loosely coupled system. The talk introduces the main ideas of the architecture, showing how the layers can be implemented in Python, following the content of the book ""Clean Architectures in Python"" edited by Leanpub. The book recently reached 25,000 downloads and many readers found it useful to start learning how to test software and how to structure an application without relying entirely on the framework.

Architecture DDD Python Video

Nov 13 2022

 Workflows, a new abstraction for distributed systems

For the past 45 years, the database systems community has enjoyed an unparalleled developer experience: Database Transactions mitigate challenges such as failure on a platform level, entirely eliminating these challenges on an applications level. Unfortunately, the distributed systems community has not enjoyed a similar developer experience: There was no equivalent abstraction that mitigates challenges like failure on a platform level. However, many companies, including Snap, Uber, and Netflix, are adopting a new paradigm: Workflows. Workflows are to distributed systems what transactions are to databases. This talk explores how Workflow Systems mitigate challenges on a platform level and provide a developer experience for distributed systems that rivals the developer experience for databases, allowing you to literally code as if failure does not even exist!

Abstraction Architecture Design Video

Nov 7 2022