Improve Your Code by Applying Anti-IF Strategies

A 100-Hour Programme for Software Developers
MAIN GOAL

The primary objective of the Anti-IF Program is to empower developers with the knowledge and tools to write cleaner, more maintainable, and scalable code by minimizing the over-reliance on conditional statements. Through a deep dive into advanced coding strategies and hands-on exercises, participants will learn to harness the power of design patterns, polymorphism, and other best practices that reduce software complexity. By the end of the program, developers will be adept at crafting code that is both efficient and straightforward, leading to software projects that are easier to debug, enhance, and adapt to changing requirements.


Programme

the "Anti-IF" campaign refers to a software development movement that emphasizes reducing the over-reliance on if statements, which can lead to convoluted code, thereby making it harder to read, maintain, and extend. The campaign is not about completely removing if statements, but rather promoting cleaner coding practices.

The Anti-IF campaign underscores the importance of clean code principles. While it's named "Anti-IF," it's essential to understand that it's not advocating for the elimination of all if statements. Instead, it's about being mindful of how and when you use them, ensuring that you're not introducing unnecessary complexity into your code.

Type
Activity
Length
Mgmt
Team
Product
Team
Tech
Team
Part 1 - Understanding Object
Mentoring
Flattening the Cost of Change Curve in Software Development: Challenge and Goals
3 hours
check_box
check_box
check_box
Course
"Object Technology Lets You Build Software Ten Times Faster" --Steve Jobs
3 hours
check_box
check_box
check_box
Part 2 - Polymorphism Over Conditional Logic

One primary tenet of the movement is to leverage polymorphism (a key principle of Object-Oriented Programming) over explicit conditional statements. By using polymorphism, you can avoid multiple if or switch statements and instead rely on overridden methods to achieve the same logic.

Course
Dealing with Growth and Change: The Waterfall Lifecycle
2 hours
check_box
check_box
check_box
Course
Dealing with Growth and Change: The Iterative and Incremental Lifecycle
2 hours
check_box
check_box
check_box
Part 3 - Use Design Patterns

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

Course
The Pomodoro® Internal Process
3 hours
check_box_outline_blank
check_box
check_box
Course
The Pomodoro® Core Process
3 hours
check_box_outline_blank
check_box
check_box
PART 4 - Keep Functions/Purpose Small

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

Course
Requests, Requirements, Use Cases, User Stories and Scenarios: What's the difference? An Introduction
2 hours
check_box
check_box
check_box
Course
Use Case Modeling: Identifying and Structuring Value
3 hours
check_box_outline_blank
check_box
check_box_outline_blank
PART 5 - Configuration Over Conditionals

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

Course
Anti-IF Workshop: Collaboration Diagram Applied
Thinking before coding
3 hours
check_box_outline_blank
check_box_outline_blank
check_box
Course
Mastering Design Patterns Variations and Dynamics: Strategy State and Command Patterns
3 hours
check_box_outline_blank
check_box_outline_blank
check_box
PART 6 - Rule Engines

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

Mentoring
Workshop Reviewing the Design of your software system
6 hours
check_box_outline_blank
check_box_outline_blank
check_box
Mentoring
Workshop Reviewing the Architecture of your software system
6 hours
check_box_outline_blank
check_box_outline_blank
check_box
PART 7 - Case Study: The Counter

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

Mentoring
Workshop Reviewing the Design of your software system
6 hours
check_box_outline_blank
check_box_outline_blank
check_box
Mentoring
Workshop Reviewing the Architecture of your software system
6 hours
check_box_outline_blank
check_box_outline_blank
check_box
PART 8 - Case Study: Pong

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

Mentoring
Workshop Reviewing the Design of your software system
6 hours
check_box_outline_blank
check_box_outline_blank
check_box
Mentoring
Workshop Reviewing the Architecture of your software system
6 hours
check_box_outline_blank
check_box_outline_blank
check_box

The Story Behind This Program

Here's the story of the 'Flatten the Curve' programme, hatched from the trials and tribulations of software development.

"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." --Francesco Cirillo


Diploma

There, on that table in September 1987, I hadn't noticed yet but for the first time I had managed to turn time into an ally. Exactly at the moment when Time appeared to be such a vicious predator to me I managed to stop in front of it, and still and afraid ask this simple question: "How can you, Time, be useful to me now


Price & Conditions