BLACK WEEK 🎁  OFFER ends in:

I exactly know what do you mean

Been there. Done that.


My name is Andrzej Krzywda and I'm a CEO of Arkency

team of mature, experienced Rails programmers who provide software development services for large companies with millions of dollars of yearly gross income.

I've been to IT industry for 20+ years.

As a programmer and businessman. I connect these two types of thinking to get the best of two worlds. Period.

Let me reveal some myths which are seen on the market for years:

Hi, my name is Andrzej Krzywda

and I'm a CEO of Arkency


I've been to IT industry for 20+ years. As a programmer and businessman. Over all these years I've seen thousands of lines of disgusting and unstructured code that was steeped with unnecessary IF/ELSE statements.

Together with my Team we said: enough.

Let's fight it.

Let no self-respecting programmer in the world use them anymore.

That's why we've made...


ANTI-IF 2.0quick & practical program
to help you reduce the IF/ELSE mess
in your codebase


Who is this program for?

Regardless if you're a JS dev or Java or C# or Ruby - we all struggle with the same - IF monsters.

This course if for all programmers who care about code quality.

Learn how to kill all the big and ugly IF statements in your codebase. A practical training, based on real code examples, typical to real-world projects.

Become the IF-Conqueror in your project!

This course is language-agnostic. Many examples will be with Ruby, but it's not language-specific and will be readable to everyone.

For juniors:

  • learn how to avoid if/else and what to use instead
  • learn how to refactor existing if/else
  • live calls with like-minded people
  • pass the homeworks
  • ask questions

For seniors:

  • enrich your toolbox with more advanced techniques - Transformation Priority Premise, Mutation Testing, Monads, Aggregates, Process Managers, DDD
  • learn how to teach juniors what to replace IFs with
  • access the community of like-minded people
  • consult how to refactor more complex IFs from your project

OK. How we're gonna do that?

We're gonna fight hand in hand with these ugly IF/ELSE monsters in 5-step reliable process

Step 1

Nested IFs weapon

Get through the refactoring of Gilded Rose - a famous refactoring kata. See how and why which techniques are applied.

Step 2

Kill the mutants

Learn how to use mutation testing tools to ensure your changes are safe. You can aim the deathclaw, only if no mutants are around. The TDD process enhanced with test coverage tools is your new friend.

Step 3

Business doesn't speak IFs

Using business language in your codebase is crucial. Learn patterns which replace IFs with better named abstractions - value objects, aggregates, process managers

Step 4

Functional toolbox

I can't promise I will teach you monads. But I will try. Other FP techniques here too. Immutability as a weapon for complex IF/ELSE blocks.

Step 5


Transformation Priority Premise
Mentoring juniors how to avoid IFs
DeMorgan laws


Check one of the lessons

But hey, don't worry, it's not about you watching for as long as possible. This is just a small part of what's inside


Here's the list of all course modules

This course is a mix of written content (like what you're reading now), screenshots and photos & videos. For us programmers, it's easier to scan text and look at code as a text. However, some refactoring techniques is useful to show as screencasts.

L1: Ready to practice IF/ELSE
Prepared for IF/ELSE
Kata Runs code locally
About this class
L2: 100% line coverage hero
Always Be Green
Turn the fixture into tests
Check the line coverage
Visualize the line coverage
Minimal domain knowledge
Choosing the type of test
Custom assertion
Writing the new test
Getting to 100% line coverage
The dangers of line coverage
The types of code coverage
L3: The basic refactorer
Decide on the initial changes
Extract quality related methods
Extract methods which ensure the type/name of product
Review where we are
L4: The Algebraist
Where Do We Go?
De Morgan's laws - theory
De Morgan's laws - practice
Duplicate bodies to remove OR condition
Merge flat if statements into one
Replace else with 2 elsifs
Merge next if block based on type
Reverse if/else for backstage pass
Reverse if/else for aged_brie
Flatten the else body when it only contains another if/else
Replace else with 2 elsifs
Remove top-level if wrapper by duplicating it for each branch
Merge 2 big if/else structures
L5: The Object Oriented Programmer
When OOP goes wrong
Extracting subjects and verbs
The constraints
Inline helper methods dependencies
Extract Generic object - repacking items to our objects and back
Extract AgedBrie
Extract BackstagePass
Extract Sulfuras - even though it's empty class
Extract factory logic to GoodsCategory
Building boundaries - Move goods classes to a separate namespace
Working with objects
L6: Not Obsessed with Primitives
Detecting the code smells
Extract Quality object, use in Generic
Use Quality in AgedBrie
Duplicate if's technique in order to use Quality in BackstagePass
Overview of the Quality object
Do we need SellIn object?
Remove the Sulfuras object
There's a trap!
L7: Mutant Killer
A mutation testing report for Backstage
Pass One shot - 2 mutants killed!
Killing 10 mutants in 1 quick session
Mutant help in removing one IF
Making mutant happy for AgedBrie
Happy mutant for Generic
The whole Inventory module at 100% mutation coverage
The trick to allow mutant run on 2 modules
Mutant wants me to stop using ==
Refactor from IF/ELSIF to CASE/WHEN Summary
L8: The Director
The Director Strategy explained
Extract sell_in concern to app layer
Extract AgedBrie::Expired
Prepare Quality object in the app layer
Stateless objects!
Extracted Generic::Expired
Extracted Backstage::Expired
Mutant driven design
You are the Director now
L9: The Result Oriented Programmer
Conjured items
How do you end up with 30 IFs? One by one.
Relaxed mutant-TDD flow - implementing Conjured items

Let's summarize
what exactly will you get

After joining you will get access to ALL of the listed below:

anti if box
👉 Anti-IF 2.0 Course
Become The IF Conqueror in your Project
A quick & practical program which will help you
reduce the IF/ELSE mess in your codebase.
are you still hesitating?

Programmers like you asked these questions
(before they enroll 😎)

So we gathered them all below to simplify the answering process.
If you have any other, just drop us an email and we're gonna reply quickly.

What exactly is the Anti-IF Program?
The Anti-IF is an 24/7 quick & practical online program to help you reduce the IF/ELSE mess in your codebase
What I will be capable of by the end of the program?
The main goal of this class is to encourage you to clean your codebase from code smells. We'll focus on IF/ELSE, but the truth is, this class will teach you a lot about useful refactoring practices.This includes detecting code smells, covering with tests, improving the code design.
If I work with a different programming language than Ruby, is Anti-IF for me as well?

Yes! This course is language-agnostic. Many examples will be with Ruby, but it's not language-specific and will be readable to everyone.
Is it subscription based or one-time payment license?
It's lifetime license with one-time payment fee of $299. You're buying once and use whenever and how you need.
What if I'm not satisfied with the Anti-IF 2.0 Course?
If for any reason Anti-IF doesn't satisfy you, we will issue a refund. Our guarantee is valid for 30 days from the purchase date. No questions asked.
You have other questions?
E-mail us at and we’ll be happy to respond!

How many students conquered the IF's already?

I thought you will never ask.

There are 390+ students in the team

...and counting! Except for you (yet) of course.

Rating 4,7/5

All of our courses and trainings are used by 2000+ programmers
around the world
to empower their dev skills on a day-to-day basis.


"Absolutely fantastic and inspiring course. Well structured and clearly explained. I was able to apply the concepts I've learned directly to the production code. Highly recommend!"

Izabela Kowal
Software Developer


"Excelent course. We are learnt about how to think about legacy and start changing it. It not another course, that will show you theory. Here is practice from real expert."

Kacper Michon
Software Developer


"It shows few simple tricks, how to get rid of if-statements cluttering your code. Even IF you will not be able to replace them completely, it will definitely make your code more flexible and readable. Definitely recommend checking this out!"

Michał Talaga
Senior Software Engineer


At first, I wan't sure if it will be useful, but I saw many people recommending it. Well, I have to say... My worries went away just after first module. In my opinion, every software developer should go through it, and will make life easier to everyone. Code will be cleaner, less chunky and easier to understand. If someone is worried that course in based on Ruby - don't. It has very easy to understand syntax, you can apply everything you learn here into your main programming language and you will be happy as hell - well, your colleagues too - and I am sure, that in most cases, they will ask where did you get the idea to write the code this way."

Michal Zywiecki,
Senior Software Engineer


"I like the structure of this course because there is an explanation of ‘what’ we’re going to do and what we want to achieve. Then there is explained also ‘why’ ie. why we need to do a step (which is not always obvious because some steps could be considered as degradation or code smell, but it helps make code better later). And of course, there is also ‘how’ to do these small steps.Besides the structure, the content (knowledge) is also great! I learnt techniques and tricks to refactor code and make my life easier. Furthermore how to cover my back during the whole process of refactoring.In summary excellent masterpiece :)But, what I don’t like is that mutant gem isn’t free (for commercial use) :D"

Agata Werszler
Software Developer

AND some more REVIEWS ABOUT arkency trainings:

I remember that I joined to the Arkademy course platform without any recommendations, just with the trust and hope. And - WOW! How good decision it was! Of course there has to be cons... They don't create the courses about everything.


Patryk Kubiela
Senior Dev

I learned a lot valuable knowledge about DDD, CQRS, Event Sourcing, Pub/Sub. The knowledge improved my thinking a lot about how to avoid coupling issues in larger applications. I got a lot of value from videos and the Live Meetings.


Brett Sanders
Product Manager / Senior Dev

A few months ago Andrzej asked me if I don't wanto to improve the skills of my team through his Academy. I was a little afraid, we use a lot of different technologies. Now I know that it was a good decision and my dream to have team of the best IT exprets is coming true!


Szymon Paluch

Really good stuff especially first about microservices. Some time ago I was worried about the performance and cost of this solution, but right now I can admit that with a good architecture of services this should not be a big problem after all.


Piotr Rybarczyk
Software Dev

You may be one of them.

Sounds interesting?
Jump in.

ONE MORE THING. I have to ask...

What about guarantee?
Is it still there?


Yes. You've STILL got 30 Days
No-Question-Asked Guarantee

As always.


Let's be clear here.
We don't want to have any unsatisfied clients.
That's why we give you a 30-day satisfaction guarantee.

Didn't you like the purchase?
ANTI-IF wasn't good enough in your opinion?

That's NOT a problem at all.
Here in Arkency we understand that.
Everybody makes mistakes. We are just humans.

We don't make any problems with refunds.
You have a 30 Day Satisfaction Guarantee from the moment of purchase. It means we will refund you 100% of the amount paid if you will have any doubts. No hard feelings.

Fair enough?