Anti-IF Programming Workshop

Growing Software: Beyond the IF Strategy

Live online with Francesco Cirillo
Four consecutive days, with each session lasting 3.5 hours
Total Workshop Hours: 14 hours

Sessions start: 4pm Dubai (GST)

Register Upcoming Events

Anti-IF Code Monster

Individual Enrollment

First 2 New Clients: $320 per participant
Next 3 New Clients: $340 per participant
Standard: $700 per participant

Request Info

Group Enrollment

Small Team (2-4 participants): $420 per participant
Medium Team (more than 4 participants): $350 per participant

Request Info

Say No to Code Monsters!

In this workshop series, we practice the art of building, changing and growing software with principles and techniques that diverge from the conventional IF Strategy. Our aim is to enable the development of functionalities without the need for refactoring solutions derived through IF and Switch statements-approaches that often result in complex and nested code structures. Throughout each workshop, Francesco Cirillo will develop a series of software features, illustrating how adopting principles, design patterns, and a selection of other techniques supports the organic growth of the software system, thus avoiding the emergence of 'Code Monsters.'

Leveraging languages such as Java, Python, JavaScript, TypeScript, among others, we emphasize that the essence of this workshop lies not in the programming language but in the design principles. It's worth noting that each workshop edition may cover a selection of topics outlined in the Topics for Discussion—focusing on those most relevant to the challenges at hand, rather than attempting to cover all topics comprehensively. This approach ensures a focus on practical application and adaptability, allowing participants to learn and grow with each new edition of the workshop.

Topics for Discussion


By using polymorphism, you can avoid multiple if or switch statements and instead rely on overridden methods to achieve the same logic.


Design patterns, like State, Strategy, and Command patterns, can help encapsulate variations in behavior, thereby reducing the need for conditional logic.


Methods should ideally have a single responsibility. When methods start having multiple responsibilities, it increases the likelihood of numerous if statements.


Sometimes, system behavior can be controlled using configurations of objects rather than hard-coded if statements.


Leverage data structures and higher-order functions to streamline decisions, making code more flexible and easier to modify without numerous conditionals.


For very complex decision-making logic, rule engines might be a better fit than having layers of nested if conditions.


Harness the power of data flows and change propagation. Reactive programming allows for dynamic reactions to data changes, reducing the need for explicit conditional flow controls.


Enhanced Readability

Minimize reliance on conditionals, making code clearer and easier to understand.

Robust Design

Master patterns and techniques that result in sturdier and more maintainable software architectures.

Agile Structures

Learn to create code structures that are easily adaptable and configurable without rewriting core logic.

Practical Application

Engage in real-world examples and exercises, ensuring you can apply what you've learned immediately.

Continuous Learning

Gain post-workshop access to resources and an online community for further questions and continuous growth.

Who Is It For?

If you've ever found yourself saying "it can't be done" in response to a request for change, or if you've reacted with "why didn't they tell us earlier?" If you're a CTO who believes your software is in good health, yet you find yourself asking your clients to limit their requests for new features... perhaps you should have signed up earlier... but maybe there's still time.

Anti-IF Diploma

No, you will not receive a diploma for merely participating in this workshop. Why? Because you haven't yet demonstrated your ability to transcend the IF Strategy with a more effective approach. We challenge you: send us an article detailing how you eliminated a problematic "if" from your codebase, a move that spared you an entire weekend of additional work. Or better, show us how you built your feature without using the IF Strategy and favored the immediate delivery of an unpredictable change request. Achieve this, and you will ascend to the esteemed rank of Conditional Commander. Join the Ranks.

Anti-IF Editions

So far, we have planned 3 editions of the Anti-IF Workshop. The first edition will take place in May, followed by the second in July, and the third in October. Each edition is uniquely designed around a set of challenging software features to be developed. This offers participants a live opportunity to interact with Francesco and immerse themselves in solving real-world software design challenges.

Digital Course

For those unable to attend the live workshops, there's an alternative way to benefit from Francesco's expertise. We offer a digital course option, where you can purchase video courses related to each workshop edition. In these courses, Francesco meticulously demonstrates how he approached and solved each design challenge, providing valuable insights and techniques that you can apply to your own software development projects.



Francesco Cirillo

Francesco’s journey in software spans over 30 years, influencing startups, corporates, and individual consultants.

A seasoned mentor, he has impacted countless professionals and teams. From his early days with Sun Microsystems to pioneering Agile Methods and creating XPLabs, Francesco's mark on the software industry is profound.

Notably, he's the creator of the groundbreaking Pomodoro Technique, a time management method embraced worldwide, as well as the visionary behind the Anti-IF Programming philosophy, challenging conventional coding practices.


Carlo Garatti

"If your question is about how to write valuable software, this program is for you!! Through one-on-one lessons with Francesco you will learn how to fit the right techniques and tools in the exact phases of the software development cycle. You will fix and apply these ideas in real cases. And, last but not least, in an enjoyable way!"

Alessandro Ruzzon

"What did I like the most? In this workshop the theory part matches up with the practical part. You don't only hear WHAT TO DO but also HOW TO DO IT, and you start practicing it right away in the labs! That's really what the Workshop is about: real-life practice aimed at consolidating theoretical notions. This approach helps in understanding problems"

Break the Chains of Conditionals!

The Story Behind This Program

Francesco Cirillo

"Recently, I've mentored several teams and it always played out the same way: they diligently applied mainstream processes, tools, and practices - Agile, Jira, Continuous Delivery, you name it - yet deadlines kept slipping and 'never-ending user stories' became the norm. Even worse, the blame game was in full swing: the product team pointed fingers at the tech team, the tech team retaliated, and the management team blamed everyone.

It wasn't about the tools or processes they were using. It was the hidden monster - software complexity. Everyone overlooked the task of reducing the complexity of both the software system and the product's value system. As complexity spiraled, confusion and frustration set in among the product and software developers, leading to delusions: "Do we already have this feature?" the Product Developers would ask. "Our software is fine, change is our only problem," the developers would insist. All the while, the beast of complexity grew as they were mired in their Jira to-do lists, pointless remote meetings, and 'clean' silos driven code duplications.

They were so embroiled in the day-to-day grind that they lost sight of the big picture: dealing with change and fostering growth of their software and product value structure by curbing its complexity.

This was the spark for my programme. The goal for your team shouldn't be just to latch onto every new process, practice, or tool. It should be about continually reducing the complexity of your software system. And to achieve that, your team needs a self-tailored blend of process, tools, and practices that work for them, not just by the book. By doing this, you can adapt to changes and let your software grow sustainably, without fear, stress, waste, or delusions. And that is the beating heart behind my programme."

Upcoming Events


Originated by Francesco Cirillo in 2007, the Anti-IF Programming approach has transformed how many perceive IFs and conditionals in software design. At the heart of software design lies a simple yet potentially dangerous tool: the conditional 'IF' statement. Undeniably foundational, its use to handle changes in a growth context, dubbed the "IF Strategy", can be a silent saboteur, complicating code and tangling logic. The IF Strategy can lead to debugging problems, never-delivered user stories, technical debt, entangled design, frictions in the team and other inefficiencies. In essence, the IF Strategy can escalate costs and delay software delivery times while degrading internal quality.

While some familiarity with programming concepts is beneficial, the workshop is designed to be comprehensive. If you're keen to learn, this workshop will provide valuable insights into advanced programming techniques.

Yes, all attendees will receive a digital booklet covering workshop content, sample code, exercises, and further reading recommendations.

Absolutely! The workshop emphasizes practical application, and there will be several exercises throughout the day to reinforce learning.

While the examples might be in a specific language, the principles of Anti-IF programming are universal and can be adapted to most modern programming languages.

We encourage continuous learning! You'll have access to an online forum for one month post-workshop where you can ask questions and interact with fellow attendees and the instructor.