Skip to content

About

My name is Elie Cohen. I am a Principal Software Engineer at Salesforce. I have been building software since 1993, across a wide range of domains: low-level systems programming in the 1990s, a decade in bioinformatics, frontend and backend development, DevOps, and, more recently, the infrastructure behind AI systems.

I have always been attracted to the principles and concepts behind software design. Tools, frameworks, platforms, and architectures change constantly; the same design tensions keep returning under new names. This guide is my attempt to make those recurring principles visible.

I am a visual thinker. Diagrams and illustrations help me reason about ideas, and they are central to how this guide is written. My goal is to explain software design as clearly as possible through the principles, foundations, concepts, models, patterns, and practices that help engineers understand systems and make better design decisions.

I started this project more than eight years ago. For a long time, it moved slowly, apart from one or two chapters I published on a blog. The arrival of large language models changed the writing process for me. Since June 2024, I have been using them as drafting partners, editors, and sparring partners while keeping the ideas, structure, judgment, and final responsibility my own.

I decided to publish this guide even though it is not finished, because I am eager to start hearing from readers. I have been working on it in the dark for a long time, and I now want feedback to become part of the process. My hope is that this guide will always remain a work in progress: continuously refined, challenged, and improved through the feedback and experience of the people who read it, so that it becomes clearer, more useful, and more relevant over time.

You can reach me at contact@design-principles.info.

Disclaimer. The views and opinions expressed in this guide are my own and do not necessarily reflect those of Salesforce, my employer.

alt text