COMING SOON
iOS LEAD ESSENTIALS
COHORT #37

Sign up to receive our latest updates and learn more about the next cohort, starting February 2nd.

We'll keep you posted by email.
Privacy Policy

THE iOS LEAD ESSENTIALS PROGRAM

is an online training program for iOS developers who want to become complete senior developers and be one of the most wanted and highest-paid iOS devs in the world.

  • Fill knowledge gaps that many developers are still missing to become and be recognized as true and complete senior developers.

  • Develop better iOS apps faster with the latest technologies and best practices.

  • Modernize your skillset and legacy projects.

  • Access to over 60 hours of video lectures, plus all recorded mentoring sessions.

  • Access to a private community of thousands of developers from all around the world.

  • Certificate of completion.

  • Pass interviews with ease and get more opportunities worldwide, including remote and visa sponsorships.

  • Be more confident as a developer and better estimate and plan your tasks.

  • Complete the program in 3 to 6 months while still cranking at work.

  • Individual code challenges reviewed and corrected by senior developers on GitHub.

  • One-on-one live sessions with senior developers to help you with your own projects.

  • Access to exclusive job listings.

iOS Lead Essentials Curriculum/Syllabus

๐ŸŽ“ Course curriculum / syllabus

The main curriculum is structured into 6 practical modules covering all aspects of developing modern iOS/Swift apps in a progressive and organized way:

Module 1 - Planning and System Design

The fundamentals of good system design and architecture. You'll learn how to think, design, and draw diagrams like a software architect. The goal is for you to start on the right foot, forming a solid foundation where you can stack the upcoming knowledge. Including:

  • App Architecture Best Practices
  • System Design and Requirements Analysis
  • Thinking, Designing, and Drawing Diagrams like a Software Architect
  • Dealing with Singletons and Globals: When, Why, How, and Better Alternatives
  • SOLID Principles Applied in Practice in Swift
  • Clean Architecture
  • Modular Design
  • Domain-Driven Design (DDD)
  • Behavior-Driven Development (BDD)
  • Use Case Analysis
  • Domain Modeling
  • Pair programming
  • Effectively Developing Swift Apps Before the Backend/Design Is Ready

Module 2 - Networking

You'll code following networking best practices and learn how to develop, maintain, and test a clean networking layer in your iOS apps with key frameworks such as URLSession, URLProtocol, Decodable, and third-party code. You'll also learn how to work effectively with backend teams. Including:

  • Networking Best Practices in Swift
  • URLSession, URLSessionDataTasks, URLProtocol, and the URL Loading System in Swift
  • Effective Use of 3rd-party Networking Frameworks in Swift (Firebase, Alamofire, etc.)
  • Encoding/Decoding JSON API Data to Native Models Using Codable in Swift
  • Developing a Testable Networking Layer in Swift
  • Four Approaches to Test(-Drive) Network Requests in Swift: End-to-End, Subclass, Protocol-Based Mocking, and URLProtocol Stubbing
  • What Many Apps Get Wrong About Reachability and How To Get It Right
  • Speeding up Development using frameworks in Xcode
  • Speeding up Development by Reducing Debugging Time in Xcode
  • Automating a Continuous Integration (CI) Pipeline
  • Object-Oriented Programming
  • Functional Programming
  • Test-Driven Development (TDD)
  • Automated Tests
  • Unit Testing
  • Integration Testing
  • End-to-end Testing
  • Refactoring
  • Version control with git
  • Closures and Protocols as Abstractions in Swift
  • Identifying, Debugging, and Solving Data Races in Xcode
  • Pattern Matching in Swift
  • Writing Safe Swift Code by Making Invalid Paths Unrepresentable
  • Effective Dependency Management with Dependency Injection in Swift
  • Effective Access Control in Swift
  • Effective Error Handling in Swift
  • Effective Memory Management in Swift
  • Automating Memory Leak Detection in Swift
  • Configuring Xcode Projects for Running Automated Tests
  • Randomizing and Parallelizing Test Execution in Xcode
  • Gathering, Understanding, and Improving Code Coverage in Xcode
  • Testing Best Practices in Swift
  • Common Test Doubles: Spy, Stub, Mock, Fake
  • Testing Async Behavior in Swift
  • Testing Error Cases in Swift
  • Preventing Common Async Bugs in Swift
  • Using Swift's Result and Error types

Module 3 - Persistence

You'll code and learn step-by-step how to effectively tackle challenges when it comes to developing, maintaining, and testing a clean persistence layer in your iOS apps using URLCache, CoreData, FileManager, Codable, and other key persistence frameworks. Including:

  • Persistence Best Practices in Swift
  • Developing a Testable Persistence Layer in Swift
  • Choosing Between Persistence Options: In-Memory, UserDefaults, FileSystem, URLCache, Core Data, and other key persistence frameworks.
  • Persisting and Retrieving data with URLCache in Swift
  • Persisting and Retrieving data with Codable+FileSystem in Swift
  • Persisting and Retrieving data with Core Data in Swift: modeling entities, contexts, concurrency model, and testing techniques
  • Concurrency and Threading Best Practices in Swift
  • Safely Managing Shared State in Multithreaded Environments
  • Designing and Testing Thread-safe Components with DispatchQueue
  • Dispath framework in Swift: Serial and Concurrent DispatchQueues, sync, async, barrier flags, and more
  • Identifying, Debugging, and Solving Threading Race Conditions
  • Thread Safety with Reference and Value Types in Swift
  • Composite Reuse Principle (aka Prefer composition over inheritance) applied in Swift
  • Protocol-Oriented Programming (POP) in Swift: Protocol inheritance, extensions, composition, and conditional conformance
  • Protocol vs. Class inheritance in Swift
  • Controlling the Current Date/Time and Other Environment Details During Tests
  • Achieving a Healthy Distribution of Unit, Integration, End-To-End, and other testing strategies
  • Speeding up Development with App Architecture to Develop Features in Parallel
  • Speeding up Development with Iterative Design over Big Upfront Design
  • Decoupling Business Logic From Infrastructure Details
  • Breaking Down Monoliths into Modules: When, Why and How
  • Entities vs. Value objects in Swift
  • Data Transfer Objects (DTOs) to Decouple Modules in Swift
  • Single Responsibility Principle (SRP) Applied in Swift
  • Open-Closed Principle (OCP) Applied in Swift
  • Liskov Substitution Principle (LSP) Applied in Swift
  • Interface Segregation Principle (ISP) Applied in Swift
  • Dependency Inversion Principle (DIP) Applied in Swift
  • Don't Repeat Yourself (DRY) Principle Applied in Swift
  • Command-Query Separation Principle Applied in Swift
  • Functional Core / Imperative Shell Pattern Applied in Swift
  • Performing Calendrical Calculations Correctly in Swift
  • Domain Specific Languages (DSLs) Applied in Swift
  • Achieving High Test Coverage with Triangulation
  • Producing a Clean and Stable Codebase History in git
  • Designing Side-Effect Free (Deterministic) Core Business Rules
  • Maximizing Swift Code Correctness with Single Sources of Truth
  • Integration Testing with Real Frameworks (Instead of Mocks)
  • Measuring and Improving Test Times with xcodebuild
  • Codebase Health Analysis Techniques
  • Eliminating Hard-to-Read Nested Code (aka Arrow Code Anti-Pattern)
  • Choosing Good Names in Swift

Module 4 - UI and Presentation

UI, UX, and Presentation best practices, and how to develop, maintain, and test a clean UI and Presentation layer in your iOS applications. You'll code and learn how to use MVC, MVVM, MVP, and their variants, prototyping techniques, localizing your apps, working effectively with designers, and how to create reusable UI/Presentation components. Including:

  • App UI, UX, Localization, and Presentation Best Practices
  • Developing a Clean and Testable UI and Presentation Layers in Swift
  • Validating UI Design and Getting Fast Feedback with UI Prototypes
  • Working Effectively with Designers
  • Efficiently Loading and Presenting Data on Screen
  • Efficiently Loading Images in Reusable Cells
  • Efficiently Prefetching Images when Cells are Near Visible
  • Efficiently Canceling Data Loading Requests to Reduce Data Usage
  • MVC: Implementing Best Practices and Variations in Swift
  • Identifying and Fixing the Massive View Controller Anti-Pattern
  • Multi-MVC Design: Breaking Down Complex Scenes into Tiny Collaborative MVCs
  • MVVM: Implementing Best Practices and Variations in Swift
  • Identifying and Fixing the Massive View Model Anti-Pattern
  • Implementing Stateful and Stateless View Models in Swift
  • MVP: Implementing Best Practices and Variations in Swift
  • Identifying and Fixing the Massive Presenter Anti-Pattern
  • Creating Reusable Cross-platform Presentation Layers with MVVM and MVP in Swift
  • Test-driving MVC, MVVM, MVP, and their Variants
  • Implementing and Testing Customer-Facing Localized Strings
  • Inside-Out vs. Outside-In Development Strategies
  • Safely Refactoring Code Backed by Automated Tests and Swift Types (Compiler!)
  • Separating Platform-specific and Platform-agnostic Code using Swift Frameworks in Xcode
  • Supporting Multiple Platforms on Swift Frameworks in Xcode
  • Identifying and Solving Cyclic Dependencies (Retain Cycles) with the Proxy Design Pattern in Swift
  • Adapter pattern Applied in Swift: Enabling components with incompatible interfaces to work together seamlessly
  • Decorator Pattern Applied in Swift: Extending behavior of individual objects without changing their implementation
  • Safely Adding Tests to Legacy Code
  • Creating Reusable Components with Generics in Swift

Module 5 - Main Composition

Assemble features with reusable, modular components. Learn how to compose modules to form a fully functional app, including app navigation and custom flows. You'll also learn how to validate high-level acceptance criteria with automated tests at every level (Unit, Integration, Snapshot, and UI tests). You'll code following best practices, including how to use the Combine framework and how to develop, maintain, and test-drive a clean Composition layer in your iOS applications.

  • App Composition Best Practices in Swift
  • Developing a Clean and Testable Composition Layer in Swift
  • Composing Swift Modules to Form a Fully Functional App in Xcode
  • UI Testing Best Practices in Swift
  • Writing Reliable Automated UI Tests by Controlling Network and App State with Launch Arguments and Conditional Compilation Directives
  • Acceptance Testing Best Practices in Swift
  • Replacing UI Acceptance Tests with Significantly Faster Integration Acceptance Tests.
  • Snapshot Testing Best Practices in Swift: Automatically Validating the App's UI
  • Speeding up Snapshot Tests by Rendering Views Without Running The App
  • Supporting Dark Mode
  • Strategy Pattern Applied in Swift
  • Composite Pattern Applied in Swift
  • Composition Root Design Pattern Applied in Swift
  • Eliminating Memory Leaks and Threading Issues by Managing Memory and Threading in the Composition Layer
  • Simulating App Launch and State Transitions During Tests
  • Testing Methods You Cannot Invoke
  • Testing System Classes with Private Initializers
  • Organizing Modular Codebases with Horizontal and Vertical Slicing
  • Organizing the Codebase into Independent Frameworks, Packages or Projects
  • Continuous Integration Best Practices
  • Continuous Delivery Best Practices
  • Continuous Deployment Best Practices
  • App Store Deployment Best Practices
  • Deploying Builds to App Store Connect Manually
  • Deploying Builds to App Store Connect Automatically with a Continuous Delivery & Deployment (CD) pipeline
  • Effectively using the Combine Framework in Swift: Implementation and Tests
  • Eliminating Duplication from Design Patterns with Universal Abstractions using the Combine Framework

Module 6 - Navigation and Advanced Patterns

Tackle complex flows with clarity and confidence. Learn how to develop better apps faster with ready solutions to common challenges such as pagination with caching, navigation, dependency injection, generic and reusable components, performance optimizations, logging, profiling, and modularization in large apps.

  • Best Practices for Navigation in Swift
  • Developing a Clean and Testable Navigation Layer in Swift
  • Navigating Between Independent Features Without Breaking Modularity or Introducing Common Anti-Patterns
  • App Composition and Dependency Injection Best Practices
  • The Object-oriented vs. the Functional way of Composing Components in Swift
  • Dependency Injection and Dependency Rejection Patterns in Swift
  • Decoupling Feature Modules without Introducing Duplication
  • Refactoring Code Backed by Tests and the Compiler
  • Null Object Pattern in Swift
  • Creating Reusable Generic Components in Swift
  • Best Practices for Creating Reusable Presentation Logic
  • Localized Date Formatting Best Practices
  • Writing Fast and Reliable Automated Tests by Controlling the Current Date, Locale, Calendar, and other Environment Details in Swift
  • Best Practices for Creating Reusable UI Components
  • Creating a Shared UI Module without Breaking Modularity
  • Creating UI Elements Programmatically
  • Solving Memory Leaks with the Memory Graph Debugger in Xcode
  • Migrating to Diffable Data Sources
  • Scaling Fonts with Dynamic Type
  • Using Snapshot Tests Effectively
  • Best Practices for Modular Feature Composition
  • Developing and Testing the Composition Root
  • Using Autoreleasepools in Swift
  • Releasing Autoreleased Instances During Tests
  • Choosing Between Diffrent Dependency Lifestyles: Singleton, Transient, and Scoped
  • Common API Pagination Methods and Best Practices in Swift
  • Keyset Pagination with Caching Strategy in Swift
  • Pagination UI/UX Best Practices
  • Unit, Snapshot, Integration, and Acceptance Testing Best Practices in Swift
  • Logging Best Practices in Swift
  • Logging, Profiling, and Optimizing Infrastructure Services
  • Monitoring Debug and Release Builds in a Clean Way
  • Async Injection: Decoupling the Domain from Infra Async Details
  • Eliminating Async Boilerplate & Nested Callbacks
  • Implementing Type Erasure in Swift
  • Composing Async Operations with Combine
  • Composing Modules with Built-in Combine Operators
  • Managing Threading in a Clean Way with Combine SchedulersFirst Module (System Design)
  • App Architecture Best Practices
  • System Design and Requirements Analysis
  • Thinking, Designing, and Drawing Diagrams like a Software Architect
  • Dealing with Singletons and Globals: When, Why, How, and Better Alternatives
  • SOLID Principles Applied in Practice in Swift
  • Clean Architecture
  • Modular Design
  • Domain-Driven Design (DDD)
  • Behavior-Driven Development (BDD)
  • Use Case Analysis
  • Domain Modeling
  • Pair programming
  • Effectively Developing Swift Apps Before the Backend/Design Is Ready

Module 7 - Swift Concurrency

Master Swift Concurrency, including:

  • How to activate *Complete* Swift Concurrency Checking and deal with common warnings/errors.
  • How to progressively migrate a codebase from completion closures, DispatchQueues, or Combine to full Swift Concurrency using async/await, while preserving existing functionality, cancellation behavior, and test speed and reliability.
  • Distinguish between Sendable, @MainActor, and nonisolated code contexts.
  • Replacing DispatchQueue with Mutex from the Synchronization framework to protect shared mutable state safely in synchronous contexts.
  • Understand when (and when not) to use nonisolated(unsafe).
  • Convert completion-closure-based asynchronous code to async/await using the checked continuation APIs.
  • Preserve existing app behavior while making it concurrency-safe.
  • Identify which parts of your code should run on the MainActor.
  • Prepare your project for Swift 6 with complete concurrency checking.
  • Deprecation strategy to bridge between closure-based and async/await code using withCheckedThrowingContinuation.
  • Update tests and clients to use async APIs incrementally without breaking existing code.
  • Create Stubs to enable testing success and failure cases with async/await
  • Understand why not every API should become async during the migration.
  • Migrate Core Data schedulers to async/await using concurrency-aware APIs.
  • Add async versions of existing methods without breaking existing clients.
  • Use deprecation and gradual replacement to manage large-scale concurrency migrations safely.
  • Async Injection in the Composition Root with async/await support
  • Migrate a Combine-based composition into a full async/await implementation.
  • Create an async Scheduler protocol to run concurrent store operations safely.
  • Implement a reusable, generic async LoaderSpy to test async workflows reliably.
  • Wait for Task completion or cancellation while maintaining test determinism with Swift Concurrency tools like Task.yield.
  • Understand when and how to use async let to run concurrent requests, including how to test it.
  • Migrate from publishers and completion-closures to async APIs.
  • Migrate integration/acceptance tests to async and keep them deterministic (including cancellation rules and waiting strategies).
  • Resolve actor isolation issues, including how protocol isolation works.
  • Identify unsafe concurrency behavior that the Swift 6 compiler cannot detect for you.

Extras

Throughout the program, you'll find a lot of supplementary material. There are over 60 video lectures. Every video lecture comes with subtitles in 21 languages, an accompanying article, source code, diagrams, and references.

You'll learn how to become a complete senior developer following principles and practices such as:

  • Version control with git
  • Memory Management
  • Object-Oriented Programming
  • Functional Programming
  • Clean Architecture
  • Modular Design
  • Design Principles and Patterns
  • Single Responsibility Principle (SRP)
  • Open-Closed Principle (OCP)
  • Liskov Substitution Principle (LSP)
  • Interface Segregation Principle (ISP)
  • Dependency Inversion Principle (DIP)
  • Command-Query Separation
  • Dependency Injection
  • Composite Reuse (Prefer composition over inheritance)
  • Functional Core, Imperative Shell
  • Don't Repeat Yourself (DRY)
  • You Aren't Gonna Need It (YAGNI)
  • Use Case analysis
  • Domain Modeling
  • Domain-Driven Design (DDD)
  • Automated Tests
  • Test-Driven Development (TDD)
  • Refactoring
  • Unit Testing
  • Integration Testing
  • Snapshot Testing
  • UI Testing
  • Acceptance Testing
  • End-to-end Testing
  • Pair programming
  • Concurrency and Threading
  • Continuous Integration, Delivery, and Deployment

๐Ÿ›  Learn by Building a Real App โ€” Together

  • Watch the lectures and implement the code
  • Submit assignments via GitHub
  • Receive personalized code reviews
  • Learn from other students' code and feedback
  • Ask questions and interact with us directly
  • Participate at your own pace โ€” or go all-in with challenges, community calls, and live mentoring

You'll build a complete real-world app using our methodology, from an empty project to deploying it to the App Store.

We also review all your assignments on GitHub and provide you with detailed feedback.

๐Ÿงญ Choose Your Learning Style

Whether you prefer to learn independently or join a vibrant developer community, we've got you covered:

โœ… Option 1: Go Solo
Watch the recorded lessons at your own pace and practice on your own.

โœ… Option 2: Go All-In
Join the community, complete real-world challenges, participate in mentoring sessions, attend live events, and get personal guidance.

Your Instructors

Caio Zullo

Lead iOS Developer & Program Director

Mike Apostolakis

Lead iOS Developer & Program Director

Bogdan Poplauschi

Lead iOS Developer & Instructor

Thiago Penna

Lead iOS Developer & Instructor

Danil Lakhtin

Senior iOS Developer & Instructor

Marko Engelman

Senior iOS Developer & Instructor

Islom Babaev

Senior iOS Developer & Instructor

JOIN A GLOBAL iOS COMMUNITY

Thousands of developers who care about delivering high-quality apps have joined the iOS Lead Essentials program. Every discussion, Q&A, live, and mentoring session is open to the community. So everyone can learn and benefit from every interaction.

DEVELOPERS FROM 100+ COUNTRIES HAVE JOINED THE iOS LEAD ESSENTIALS

+ Over 35,000 developers have joined our waiting list.

Frequently Asked Questions

What's the iOS Lead Essentials?

The iOS Lead Essentials is an online training program for iOS developers who want to become complete senior developers and be one of the most wanted and highest-paid iOS devs in the world.

Developers who take this program can confidently develop large iOS apps faster and work on big projects worldwide with ease (including remote and visa sponsorships).

Students learn a straightforward step-by-step dev methodology by practicing with experienced senior developers.

The methodology is designed and taught by Caio Zullo and Mike Apostolakis through an online training program organized into a few cohorts of developers a year.

The time required and results of applying this methodology vary depending on the experience of the developers who apply it and the country/city/market they operate in.

For example, dedicated mid/senior iOS developers can achieve results much faster on average.

Who is the iOS Lead Essentials program for?

The iOS Lead Essentials is designed for mid and senior iOS developers who want to become complete senior developers and be part of the highest-paid iOS devs in the world.

The iOS Lead Essentials program is not intended for beginners in software development.

Most of our students have 2 to 10+ years of experience.

We expect students to be professional developers with knowledge of the basics of Swift, iOS development, and Xcode.

We recommend this program for mid and senior developers or developers with at least two years of professional experience who are serious about becoming complete senior iOS developers.

You'll follow a step-by-step methodology with guidance from us and a community of thousands of iOS developers who care about delivering work that matters.

How do I know if I'm ready for this program? Is there a pre-course I can take to prepare?

If you have at least two years of professional experience as an iOS developer, you're ready for the iOS Lead Essentials program. We recommend you go straight to the complete iOS Lead Essentials program so you don't waste time with unnecessary preparation.

But if you have less than two years of professional experience, you can start with this free pre-course covering the basics.

By completing this pre-course, you will be ready to complete the iOS Lead Essentials program.

But again, don't waste time. Skip the pre-course if you can and start the iOS Lead Essentials program directly because we cover all the concepts in much more detail in the program.

Are there subtitles? In which languages?

All lectures have subtitles in 21 languages:

  • English (en)
  • Portuguese (pt-BR)
  • Spanish (es)
  • Japanese (ja)
  • Simplified Chinese (zh-CN)
  • Traditional Chinese (zh-TW)
  • Ukrainian (uk)
  • Dutch (nl)
  • French (fr)
  • German (de)
  • Indonesian (id)
  • Italian (it)
  • Polish (pl)
  • Thai (th)
  • Russian (ru)
  • Turkish (tr)
  • Vietnamese (vi)
  • Korean (ko)
  • Arabic (ar)
  • Romanian (ro)
  • Hindi (hi)

Will I get more than your videos on YouTube?

Of course, the iOS Lead Essentials has much more material than what you can find on YouTube.

The videos on YouTube are demonstrations.

The iOS Lead Essentials is a complete mentorship program covering every aspect of delivering solid iOS apps in Swift for you to become a complete senior iOS developer.

We worked really hard on this. We put years of work into the lectures.

And the iOS Lead Essentials program has been updated throughout the years to what we call iOS Lead Essentials 2.0.

The fact is that our team of senior developer instructors and we discovered many ways to improve the program. Things that completely changed the game for our students and us.

And the program is definitely more powerful and interactive than ever before.

For example... The iOS Lead Essentials 2.0 has a team of senior iOS developers, fast interactions and Q&As on our private community, code challenges and reviews from senior developers on GitHub, one-on-one mentoring sessions, plus over 30 hours of extra recorded mentoring sessions (and adding more every week!).

Not to mention that we're also covering new topics such as SwiftUI and Async/Await in the new mentoring sessions.

And that's not all.

There are also things that go beyond the course lecturesโ€ฆ

Like the iOS Lead Essentials exclusive live events for students, where you get to meet and interact live with us, our team of senior instructors, and other students. Plus, you can ask us any questions live on Zoom... face to face (on camera!).

On top of all that, you have support from a team of senior developers trained by us and with years of real-world experience in all kinds of challenging projects. You send your questions and receive expert answers from experienced senior developers during the entire year of access you have on the iOS Lead Essentials program.

What will I learn? What's the curriculum/syllabus?

The program provides a structured curriculum and a step-by-step methodology that makes it the fastest and simplest way to become a complete senior iOS developer.

Will I learn with SwiftUI, UIKit, or both?

What you learn in the iOS Lead Essentials program can be applied using any UI framework, including UIKit and SwiftUI.

And, of course, we show both in the program. We show how to apply the concepts with UIKit in the lectures and SwiftUI in mentoring sessions.

If you want to become a complete senior developer, this is the program for you.

What's the price to enroll in the iOS Lead Essentials?

The iOS Lead Essentials is a complete advanced program with active support from senior developers, so it could easily be more than $8000 when compared to other courses.

For example, popular bootcamps teaching the mere basics for beginners can cost more than US$8000. So imagine how much they'd charge for an advanced program to become a complete senior developer.

But there are two main reasons why we don't charge more than $8000:

1. Our mission is to help iOS developers achieve their dream of becoming complete senior developers. And keeping this price as low as possible will help more people enroll and achieve this goal.

2. We want to build the biggest community of complete senior iOS developers in the world. By helping more students join our program, we can grow our community and find talented developers to work with us. It's a win-win.

That's why, at the moment, the price to enroll is only:

$8000 US$2497

If you want to become a complete senior developer, take advantage of this special price.

You can also pay in 3/6/12 monthly installment options. (Click here to learn how installments work.)

(And click here to learn how to get this program for free by convincing your boss to invest in the program with you.)

How do installment plans work? Will I get access to the whole content with an installment plan? Can I later settle my installment plan in full? Can I pause or cancel an installment plan?

All the payment options, including installment plans, give you exactly the same instant access to the program.

The only difference is that installment plans allow you to split your payment in 3, 6, or 12 monthly installments if you can't pay in a single payment.

It's like buying an iPhone in installments - you pay a fixed amount per month until you complete the full amount.

For example, if you enroll with the 3-month installment plan, you'll pay a fixed amount for 3 consecutive months. And you'll have the same one year of full access to the program as someone who joined with a single payment.

If you join with an installment plan, you can also settle the remaining installments in a full single payment at any moment.

The installments are a great option for people on a budget.

Or for people arranging the funds to enroll, like if you're waiting for approval from your boss. In this case, you can enroll with the 12 monthly installments option to save your seat - and later settle your plan once the funds arrive.

Important: An installment plan is not a subscription, so it cannot be paused or canceled after the 14-day guarantee. After the 14-day guarantee ends, the installment plan must be paid on time until the end - it can only be canceled within the 14-day guarantee period.

Is there a guarantee? What if I am unhappy with the course?

We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 14 days and we will give you a full refund. No questions asked.

Can I ask questions during the course?

Of course, you can ask any question regarding the course lectures and iOS development. We and our team of senior developers will personally reply to you and help you become a complete senior developer. You'll have one year of support from us.

Do I get a certificate of completion? Is there a final test?

Yes, you'll receive a certificate of completion once you complete the program.

You must complete all lectures and pass all code assignments to receive a certificate of completion.

We review each code assignment on GitHub, line by line, and provide detailed feedback to help you become a complete senior developer.

This program looks very advanced. Do I need to be a very experienced iOS developer to benefit from the course?

This is not a program for beginners. Most of our students have 2 to 10+ years of experience.

So if you have at least two years of professional experience in iOS development and you're serious about becoming a complete senior developer, this is the course for you.

The program provides a structured curriculum and a step-by-step methodology that makes it the fastest and simplest way to become a complete senior iOS developer.

Waiting to improve your skills to enroll would be equivalent to waiting to get fit to join the gym!

Do I need to be a Swift/iOS developer to follow the course?

No, you don't have to be an iOS developer. Students with a background in languages such as Objective-C, C, C++, JAVA, C#, Kotlin, Ruby, and JavaScript have successfully taken the course.

If you know how to code well in another language/platform and you're serious about becoming a complete senior developer, the content is definitely within your reach.

The universal concepts, principles, and practices can be applied to any platform and language.

But again, this program is focused on iOS development with Swift. We don't provide support for other platforms and languages.

Will the iOS Lead Essentials be outdated with the next releases of iOS and Swift?

Definitely not.

We're constantly updating the program with all new features, including UIKit, SwiftUI, Async/Await, and any other new technology in the future.

And you get access to all free updates for as long as you have access to the program.

Is the iOS Lead Essentials program online or face-to-face?

The iOS Lead Essentials course is 100% online.

Although we probably won't meet in person, we'll meet in virtual events and the private community inside the program.

You can reach out to us and ask any questions regarding the course and iOS development. You'll have one year of support from us.

When does the course start and finish? How long it takes to complete it?

The iOS Lead Essentials course is 100% online so that you can progress at your own pace.

The program doesn't have a predefined duration. The duration will depend on how much time you can dedicate to it.

If you dedicate 2h+ a day, you can finish the program in 3 months.

If you dedicate 1-2h a day, you can finish the program in 3-6 months.

If you dedicate less than 1h a day, you can finish the program in 6-12 months.

But there is no rush, and you won't fall behind. You have access to the program for a whole year, which is more than enough to finish the program at least twice and get answers to all your questions.

For how long do I have access to the program, updates, and support?

You have access to the program, updates, and support for a whole year, which means you can repeat the lectures over and over and get answers to all of your questions.

If you dedicate yourself, you can finish the program in 3-6 months.

So one year is more than enough time to finish the program (two to three times even!).

But we know that things can get in the way. So you can later extend your access if you want to.

After running dozens of cohorts, we learned that many students want to renew for another year, mainly for two reasons:

  1. They couldn't dedicate as much time they wanted to the program, but they want to stay and finish it because they know it'll benefit their careers.
  2. They finished the program (often more than once), and they want to keep their access to the current and future lectures, updates, mentoring sessions, belt progression and certification, personal support, challenge reviews on GitHub, and stay part of the bonus events and community to solve their daily challenges with the help of true senior developers. They also want to meet like-minded developers in the community and receive unique job opportunities to work with other students.

Why do you open and close enrollment periodically for iOS Lead Essentials?

Because we want to personally assist and support all students. And that's a lot of work!

The iOS Lead Essentials program is more than a collection of lectures and articles.

The program is effective because our students also interact with us through discussions, lives, and Q&As.

Therefore, we can only enroll a handful of students at a time.

Every discussion, Q&A, live, and mentoring session is open to the community. So everyone can learn and benefit from every interaction.

Our goal is for no one to be left behind. If you want to become a complete senior iOS developer, this is the course for you.

Does everyone who enroll automatically become complete senior developers and increase their income?

No. Of course, you need to learn, practice, and apply the methodology first.

The iOS Lead Essentials course is not a magic formula.

We have students that more than doubled their salaries, but those are not typical results. It requires practice and commitment.

And not everyone is willing to do what it takes.

In our experience, some do the work, and some don't. Simple as that.

The program offers a straightforward, step-by-step path with community support and our personal help.

We are 100% committed to helping you, but we can't do the work for you.

That's why we don't recommend the course to people who are just curious or not willing to do the work.

If you're not serious about it, please leave the seat open for another developer.

What if I don't have time to take the iOS Lead Essentials course?

We totally understand if you don't have time to take the course. Time is extremely scarce, and you need to define your priorities.

However, if you don't find time to invest in yourself, you risk falling far behind people that are working hard to build a bright professional future.

The iOS Lead Essentials program is for motivated professionals that put their future as a priority in their life.

And again, the iOS Lead Essentials is an online program. You can watch the videos at your own pace, at any time of the day, while still cranking at work. You can effectively become a complete senior iOS developer by dedicating less than an hour a day.

Is this course easy?

No. It's not easy to become a complete senior iOS developer.

If we said that, it would be disrespectful to our students that work hard inside the program.

It's not easy, but with the detailed explanations, step-by-step practice, and continuous support from Caio & Mike and the community, it becomes simple.

Who are you? Why did you create the Essential Developer Academy?

We are Caio and Mike, lead developers and mentors to thousands of iOS developers worldwide.

We love building apps and helping other developers thrive. It's part of who we are.

We founded Essential Developer to help iOS developers achieve a prosperous future for themselves, their families, friends, peers, and companies.

Our mission is to help you become a complete senior iOS developer and be part of the most wanted and highest-paid developers in the world.

You matter, and your work matters.

We're building and supporting a community of professional iOS developers who, like us, believe in high-standards, mastery, integrity, and delivering great work.

We want you to succeed.

And we want you to get everything that you worked hard for, so you can advance your career and get yourself and your family a better future.

How can I contact you?

For any further questions you may have, you can contact us here.

I want to learn more!