The best practices of professional iOS developers to create well-structured apps ready for the App Store
Stop copying other people’s code and feeling like you don’t know anything. Get the definitive roadmap with all the essential concepts that will give you a strong mental model of what makes a complete app
Get the skills that separate good and bad developers, and:
- Finally crack that job interview
- Start freelancing and earn money working from home
- Bring your app ideas to life and publish them in the App Store
I am really glad that I found your material. In other resources, I get bits and pieces but in your courses I get the fuller picture. It almost feels like I’m cheating when I see other developers struggle on fundamental concepts. – Adrian Tineo
I did this course for UIKit in the past and now doing again to improve my SwiftUI skills. The unique way you explain the integration of all parts considering the new concepts introduced by SwiftUI is better than any other course I’ve done about it, even Apple’s. – Marcos R.
I think what you do is awesome! I love the attitude of building a well-structured architecture application in such a way that maintaining it in the long run becomes a no brainer. You are very much correct stating that you cannot find any other online course that teaches you this. They all give examples of how to do this or how to do that in Swift but none of them is about the whole picture. Great job! I tell you this as an experienced programmer (Since 2005) – Yariv K.
If you are like me, you got into iOS development because you love Apple products and you love programming. You want to work on something exciting that you find interesting. You want to create apps used by millions that make a positive impact on people’s lives.
There has never been a better time to make iOS apps. The app economy is roaring, salaries are outstanding, and being an iOS developer gives you job security and flexibility. You can even earn money from home, whether you are an employee, a freelancer, or publishing your own apps in the app store.
Thanks to SwiftUI, putting an app together from zero has never been easier. The internet is full of free articles and tutorials that can get you started. Learning a new skill is fun and exciting.
But soon, things change.
You read articles and go through examples without really gaining a deeper understanding or concepts you can apply to your own apps. No matter how much you learn, it always seems you don’t know much.
You feel stuck. You try to work on personal projects as everyone suggests, but you don’t feel you are making progress. And after all that work, you don’t have much to show. Maybe, you still can’t crack that interview. Or perhaps you are not confident enough to start freelancing and become independent.
So you go back to the hair-pulling, frustrating process of reading forums, watching YouTube videos, and toying around to solve problems. But all you find are online tutorials for yet another todo app.
I know how that feels. My first app took me two years to finish. I woke up early in the morning to work on it for two hours before going to my real job. It was hard.
I eventually completed that app, but I always had the feeling that I was not doing things in the best way. I was wondering: are the big and popular apps in the App Store made this way?
Hi, I am Matteo Manferdini.
I have worked as a professional iOS developer for more than ten years.
I was first an employee at a large social network, and then became a consultant and made apps for big clients. I also published many apps in the App Store independently.
The wrong app structure can make your projects crash and burn
I worked for years as a freelancer, and I discovered something surprising. Many developers, even at famous companies, know very little of what they are doing. Many projects have code so hard to read that nobody wants to put their hands on it.
That means you have an excellent opportunity to jump ahead of everyone else.
Once, I got a last-minute assignment to rescue a project that was terribly late. My client created an app for another company, but their code was full of bugs, and the deadline was approaching. All I had to do was fix bugs for one week, so it sounded like a quick assignment.
Boy, I wish it was that simple.
After inspecting the code, it became clear that the problem was not just “a few bugs.”
The whole app architecture was utterly wrong.
There was no organized structure. The author did not know design patterns and best practices, and the code was a total mess. Yes, the app worked, more or less, but it was hard to debug, and fixing one bug only caused many others to surface.
After one week, we concluded that the app had to be entirely rewritten from scratch.
The final customer was obviously upset, and my client had to spend all the remaining budget to rewrite the entire app. They spent all that time working for free.
I don’t know how that poor developer felt, but I’m sure it was not good. Online, I read many stories of developers that get more and more insecure as time passes, feeling pathetic when they look at open-source code, wishing that their projects were so well-organized.
I’m excited to learn from you — you seem to have battled-tested experience that my college professors lacked. I’m building an app right now, but the code structure is beginning to rot, and I had no idea where to start refactoring. I think that your course could be just what the doctor ordered! – Nicholas Lash
Do you know how to avoid these deadly mistakes?
Luckily, there is a light at the end of the tunnel. The reality is that the simple stuff matters a lot, and if you learn the most crucial skills of iOS developers, you will be able to avoid those costly mistakes.
You’ll be able to write any app, going in the right direction from the start and knowing which code should go where — clean, well-structured, maintainable code.
Can you do that? Can you recognize bad practices and know why they are mistakes in the first place?
Imagine having the confidence to start any project you want and always know what you have to do and how. You sit at your computer, open Xcode, and in a few seconds, you know where to start and how to proceed.
All you have to do is imagine the result you want, and you can easily break down your task into smaller parts. All the app’s structure unfolds in your mind like magic. You know precisely which parts you need to write and how they communicate with each other.
But does all the material you read help you achieve this?
Frankly, when I look at many online tutorials and even some courses, I am not impressed.
The majority take you through coding an app without really giving you an understanding of what you are actually doing. There are many small but crucial things that tutorials don’t teach you.
They give you some very specific examples to learn, while what’s important is how things interact with each other.
Tutorials are all over the place. You may end up not using anything of what you learn. Tutorials don’t tell you how to merge all the concepts into one single project. You have to do the work and figure it all out by yourself.
The approach is always the same. They make you copy this or that piece of code and then expect you to fill in the blanks. And after you finish, you still have a weak mental model of what makes a complete app.
Do you just want to copy someone else’s code?
What will you do when you need to write a different app? Those examples will not work anymore, and you will be on your own.
I don’t know you, but I always want to understand the logic and the underlying concepts behind any iOS app. I am not interested in just making a clone.
But every resource seems to be written by programmers who don’t understand how complicated these concepts are for less experienced developers. They either give you incomplete information or forget to explain some crucial concepts altogether.
And, to be honest, they often don’t understand these crucial concepts themselves.
When instead, you have a well-organized map with all the “must haves” to be an iOS developer at your fingertips, you can write your own apps much faster.
You have a choice.
You can go through all the frustration. You can try to put together all the disagreeing tutorials you find online and try to make the jump to making your own apps.
Or you can get the right concepts from the start, in their logical progression.
That is why I created a comprehensive online course that includes the most crucial skills to learn. The skills you need to build any app.
Matteo’s Confident iOS Professional course has been one of the best investments I’ve made. – Natasha Nazari
Get the confidence to write apps on your own
without copying someone else’s code
The Confident iOS Professional is an online course that focuses on the best patterns and practices to create fully-featured iOS apps.
- Stop feeling that you are doing it wrong. Make the jump from tutorials to making your own apps and stop feeling bad because you are not doing things in the best way.
- Go past simple tutorials that don’t give you concepts you can apply to your apps, and stop wasting time with incomplete and unimportant examples.
- Learn the design patterns used by apps in the App Store. Recognize the best practices and common mistakes.
- Stop writing messy code that does not feel natural and is hard to debug. Learn which code should go where and how to write code that is reusable and maintainable.
- Get step-by-step instructions and efficient learning material that equips you with the right expertise, showing you where to start, how to move forward, and what you need to know before moving on.
If you are looking for a comprehensive course covering the skills that separate good developers from bad ones, this is the course for you.
The course modules cover all you need to structure large SwiftUI projects with data persistence and networking without struggling with decisions about your app’s architecture.
Thank you for updating the content to SwiftUI. As always you bring the discussion to a higher level that can’t be found easily in other materials. Your way to present iOS Development is what makes all your courses so valuable. –Marcos R.
I followed the course and I loved! it. Even though I already knew 95% of the content, I found the other 5% very educating and beneficial for me. – Yariv K.
Thoroughly enjoying this intense course – it’s hard work, but the rewards are very great! – Jonathan B.
How The Confident iOS Professional works
The course contains video lessons explaining how iOS apps made with SwiftUI work and why things are done the way they are. These are lessons that took me years to learn. I didn’t know many of these when I got my first job as an iOS developer.
The course is divided into nine modules for a total of almost four hours of video lessons covering the fundamental aspects of the platform. And since iOS development is mainly made of practice, each module contains several hands-on lessons that will guide you by building a complete app, showing you the same process I follow for any new app I make.
The app includes fully designed screens, and the lessons go deep into architectural concepts, showing you how code is organized in a real project, with the most modern and up to date best practices.
In the course you’ll learn…
Tools and Best Practices: How to Properly Structure and Test the Code of any iOS App
What you’ll learn:
- Why it is better to start from design patterns and best practices to write well-structured and testable apps, instead of jumping into writing a bunch of code like in tutorials. Design patterns offer you a detailed map you can use to build any app you want.
- The three fundamental architectural concepts that guide the development of every iOS app and the dangerous consequences of not following them. Developers that just copy and paste code from tutorials never understand these.
- The MVC pattern, the central design pattern of iOS apps. Design patterns are crucial to building well-designed and robust software. Ignore them, and you will invariably fight against the platform and introduce bugs that are hard to fix.
- Why the MVVM pattern is nothing else than MVC with a different name. This is especially true in iOS apps that use SwiftUI for their user interfaces.
- How the boundaries of MVC are blurred and which objects sit at these edges. Many developers don’t understand this concept and think they are following the MVC pattern correctly when they are not.
- The critical difference between structure and classes in Swift. Knowing how value and reference types work is crucial to avoid unexpected problems, especially when using SwiftUI and its new declarative syntax.
- How to design the model types and the business logic that drive your entire app. Including the tools to debug your code and write the most critical tests to guarantee that your code behaves as expected without having to continually test your app manually.
Lesson 1.1 – Architecture: The fundamental concept nobody talks about
Lesson 1.2 – The MVC Pattern and its Derivatives: How to Correctly Structure any iOS App
Lesson 1.3 – Structures and Classes: The Two Fundamental Abstractions of the Swift Language
Hands-on 1.1 – An overview of the app we will build
Hands-on 1.2 – Understanding what an Xcode Project Contains
Hands-on 1.3 – Modeling the Domain Business Logic and Applying the Three Fundamental Principles of Software Design
Hands-on 1.4 – The indispensable tools to test your code and fix bugs
The Structure of User Interfaces: Creating Views with SwiftUI and Populating them with Data
What you’ll learn:
- The new language features that make SwiftUI’s declarative syntax possible. Understanding the foundation of these features will help you fix the many cryptic errors you get in Xcode.
- How to lay out the contents of an entire screen of your app using stacks and groups. These are the fundamental building blocks offered by SwiftUI present even in the most sophisticated user interfaces.
- Memberwise initializers, the simplest and most common way to populate SwiftUI views with data. While simple, this feature plays a central role in SwiftUI’s data flow.
- Xcode previews: the interactive tools to build and immediately visualize the result of your SwiftUI code. This tool speeds up your interface development.
- How to create custom SwiftUI views and style them using standard view modifiers. Including the best practices to keep your views independent from the model of your app so that they are easy to preview in the Xcode canvas without building complex objects.
Lesson 2.1 – The Core Components of SwiftUI: Creating Views and Populating Them with Data
Lesson 2.2 – Functions and Closures: The commonly used yet often misunderstood features of the Swift language
Lesson 2.3 – Stacks and Groups: The simplest way to lay out content in SwiftUI
Hands-on 2.1 – Creating SwiftUI views and previewing their content in the Xcode canvas
Hands-on 2.2 – Arranging and styling views, stacks, and groups, and populating them with static data
Modifiers and Layout: How SwiftUI Arranges the Components of Complex Interfaces on the Screen
What you’ll learn:
- SwiftUI’s layout system: the simple yet powerful three-step process that positions your views on the screen even for the most sophisticated user interfaces.
- How to create previews for different iOS devices and stress-test your interfaces under different conditions like dark mode, Dynamic Type, and accessibility settings.
- The techniques that make SwiftUI’s view modifiers possible and how you can create your custom modifiers that behave like the ones offered by the framework.
- Assets catalogs, the tool to set up and organize images, icons, colors, and any other asset needed by a real-world app. Plus, a trick to generate dynamic colors in code even if you don’t know anything about color theory and color contrast.
- How to split your growing view code into reusable modular views, keeping them organized using Swift extensions and namespaces.
- The tools and shortcuts offered by Xcode to organize code into sections and quickly move around large projects.
Lesson 3.1 – Modifying Views and Chaining Methods: The technique that makes view modifiers possible in SwiftUI
Lesson 3.2 – The SwiftUI Layout Process – How Views are Arranged on Screen in Complex User Interfaces
Hands-on 3.1 – Building modular SwiftUI interfaces
Hands-on 3.2 – Providing assets through catalogs and creating custom dynamic colors
Hands-on 3.3 – Creating custom modifiers to reuse view code
Hands-on 3.4 – Stress-testing UIs and moving around a large Xcode project
User Interaction: Adding Events and Data Flow to SwiftUI views
What you’ll learn:
- Storing mutable state into a single source of truth which triggers SwiftUI’s drawing process. Many developers with superficial knowledge don’t know how this mechanism works, leading to problems they don’t understand.
- How to create actions for interactive views using capturing closures that can affect the global view state, even if SwiftUI views are just structures.
- Using bindings to propagate data up the view hierarchy. Including how to chain them to reach the app’s single source of truth and how to use them to run interactive views separately in the Xcode preview canvas.
- How to quickly generate Xcode previews keeping code concise and readable using custom preview modifier. Plus, the techniques to organize your modular SwiftUI views across multiple files with separate previews, while keeping them in the same namespace to avoid collisions.
Lesson 4.1 – User Interaction and Events: Capturing variables in Swift closures to affect state
Lesson 4.2 – State and Data Flow: Updating the SwiftUI view tree and storing data in a single source of truth
Hands-on 4.1 – Adding a single source of truth and propagating capturing closures through the view hierarchy
Hands-on 4.2 – Propagating the user input through a chain of bindings to reach the single source of truth
Dynamic Interfaces: Creating Tables, Collections, Carousels, and Outlines
- How to create dynamic user interfaces that react to user interaction. Including how to hide and replace parts of your UI as the underlying data changes.
- Tables, the most common vertically scrolling interface in iOS apps and how to easily allow the user to reorder, delete, and select rows.
- The SwiftUI views that allow you to create standard interactive interfaces of iOS apps. Including collections, the highly dynamic but structured views you find in many well-designed iOS apps.
- How to use readers to make your content scroll automatically and adapt to the size of the screen of any device. Without these mechanisms, it’s impossible to create dynamic interfaces in SwiftUI’s declarative syntax.
Lesson 5.1 – Hiding and Repeating Views: Building dynamic interfaces that react to user interaction and data changes
Lesson 5.2 – Tables and Collections: The most common structured user interfaces of iOS apps
Lesson 5.3 – Scroll Views and Readers: Displaying large content in a limited space and adapting it to the screen’s size
Hands-on 5.1 – Creating interactive tables with the List, Form and ForEach types
Hands-on 5.2 – Adding complex data flows to iOS tables
Hands-on 5.3 – Interactive app interfaces with outlines, collections, carousels, and automatic scrolling
The Skeleton of iOS Apps: Creating Sophisticated Navigation Hierarchies with Architectural Views, Presentation Modifiers, and the SwiftUI Environment
- The SwiftUI environment, the mechanism that allows you to pass data to any view without the need for countless stored properties. Including the three-step process to store your custom types in the environment.
- How to use the architectural views of SwiftUI to structure the navigation of your app. Plus, the correct practices to configure tab bars, navigation bars, and new navigations contexts.
- The three modal presentation modifiers of SwiftUI that allow you to show modal sheets, menus, and alerts. These don’t work like architectural views, relying on state properties and bindings instead.
- The only possible ways to combine architectural views and presentation modifiers to create complex navigation flows, and the pitfalls you should avoid.
- Creating powerful view modifiers that access and affect the environment like the ones offered by the framework. This is a technique I rarely see covered in other books and courses.
Lesson 6.1 – The SwiftUI Environment: Propagating data though views in a deep view hierarchy
Lesson 6.2 – Navigation Paradigms in SwiftUI: Architectural views and modal presentation through view modifiers
Hands-on 6.1 – Creating generic interfaces that adapt to various display conditions
Hands-on 6.2 – Storing custom values in the environment and creating environment modifiers
Hands-on 6.3 – Structuring an app’s main navigation with architectural views
Hands-on 6.4 – Passing data between screens and creating new navigation contexts with modal presentation
Structuring a Complete iOS App: Shared Resources and the Extended MVC Pattern
- The SwiftUI mechanisms to connect views to objects and to propagate shared state to all the views in a navigation hierarchy. Plus, the biggest mistake developers make when adding objects to SwiftUI views.
- How to expand the MVC pattern, adding an extra root layer to manage navigation and object integration. This allows you to separate the roles of your types better, simplifying the code of views.
- The delegate pattern: a fundamental design pattern used by many iOS frameworks. This pattern is especially crucial when integrating UIKit classes in SwiftUI.
- Navigation maps: the advanced technique to move navigation code up the view hierarchy into root views, leaving modular views focused and reusable.
- How to manage modal navigation and temporary data in SwiftUI views without affecting the global state of an app.
Lesson 7.1 – Identity and Shared State: Connecting SwiftUI views to global objects
Lesson 7.2 – The Architecture of SwiftUI Apps: Expanding the MVC pattern to manage the state and structure of an entire app
Lesson 7.3 – The Delegate Pattern: Managing an app’s lifecycle and using UIKit classes in SwiftUI
Hands-on 7.1 – Adding the root layer to the app’s structure and sharing the global state among all views
Hands-on 7.2 – Integrating UIKit views and managing temporary data in a user interface
Working with Data: The Formats for Saving and Transmitting Data, and The Storage Technologies of iOS
- Which technologies you should use to persist data in any app you make. Many developers pick the wrong solution and do a lot of unnecessary work.
- The structure of data in iOS apps and the available encoding formats. These are required to store and transfer structured data like JSON and property lists and binary data like images and other media files.
- How to easily save and read data in your app using the file system and the user defaults system, without having to learn large frameworks that are too complex for your app.
- The correct architectural patterns to use for storage, avoiding the common pitfalls that cause problems in many apps. This is an important part that many developers get wrong.
Lesson 8.1 – The Structure of Data: Hierarchies, relationships, and data formats
Lesson 8.2 – The Storage Technologies of iOS: Choosing the right solution to persist data in your app
Hands-on 8.1 – Providing static data to an app using property list files
Hands-on 8.2 – Saving data to the file system and integrating data storage in the architecture of a full app
Hands-on 8.3 – Using SwiftUI’s app and scene storages, and saving data in the user defaults
Connecting to the network: Fetching data from a web API and performing network requests in the background
- How code runs in parallel in iOS apps. You need to know this critical concept to prevent your app from becoming slow and unresponsive.
- The internet protocols used to create REST APIs. These fundamental internet technologies connect your app to a remote server.
- How to perform network requests using the iOS URL Loading System, including sessions, requests, and data tasks. With these, you can create a robust network layer without relying on third-party libraries.
- How to model the resources of a remote REST API and where to put your networking code. Many developers get this wrong and produce code that is hard to test and extend.
- Performing network requests in SwiftUI views with view models. Including accurate memory management techniques to ensure you don’t get disappearing requests or untraceable bugs.
Lesson 9.1 – Executing Code in Parallel – Background Threads, Network Requests, and Callbacks
Lesson 9.2 – Transferring Data over a Network: URLs, Internet protocols, and REST APIs
Lesson 9.3 – Network Requests in iOS apps – How to use sessions, requests, and tasks to connect to a remote server
Hands-on 9.1 – Decoding the JSON data coming from a REST API
Hands-on 9.2 – Performing network requests with URLSession and the problems of network controllers
Hands-on 9.3 – Modelling remote API resources with model types
Hands-on 9.4 – Encapsulating network requests inside dedicated objects
Hands-on 9.5 – Performing remote API calls in root views with view models
Bonus: get the full UIKit curriculum free of charge
SwiftUI is a new framework. While everyone is excited about it, it still lacks some features.
Moreover, SwiftUI is only available on the latest version of iOS. Many companies have long-standing projects built with UIKit and customers with old devices. If you want to be a professional iOS developer, you will also need to be proficient in UIKit for years to come.
For these reasons, I am including the full UIKit curriculum at no extra charge.
That means you get two courses in one:
- The UIKit course, which in the past years, helped hundreds of my students become proficient iOS developers, getting new jobs and publishing their apps in the App Store.
- The SwiftUI course, to move forward with the new technologies that will be at the core of iOS development for the next decade.
Being able to have such a direct look at Matteo’s way of thinking, you end up catching his enthusiasm and you want to put together objects that work as they should, with a good architectural design.
This course is not just for beginners, but quite the opposite. It is one of the most advanced courses I have done so far (and I did many), where one can truly learn, since he speaks to you as a human being, explaining all the details.
Don’t think twice. Investing in Matteo’s course is investing in being a top-level iOS developer. You will not find better material. – Alejandro Mohamad
The Confident iOS Professional also includes…
An Xcode project with the full git history to explore the evolution of the app’s code
This will let you see the code in its context and not only in isolated lessons. The git history documents the whole evolution of the app and allows you to compare each step to the previous ones to see which code changed and how.
Each commit in the repository has a tag with a lesson number so that you can quickly refer to the right lesson in the course to refresh the relevant concepts right where they were introduced.
Material to transition from UIKit to SwiftUI
The SwiftUI framework follows a new paradigm and requires you to use a new mental model. To make the transition from UIKit to SwiftUI easier, I added extra notes for UIKit developers throughout the course to help you map old concepts into new ones. I highlight both the similarities and the differences between the two frameworks.
Even more extra material to expand and deepen your understanding
Each module contains additional material to help you solidify your understanding of iOS development:
- video transcripts;
- downloadable slides;
- wireframes and mockups for the app;
- summary sheets for each module;
- links to all the relevant Apple documentation;
- alternatives to each approach to give you a more comprehensive understanding of the big picture of iOS development.
The course is online and accessible from anywhere. It is pre-recorded, so you don’t have to show up for live classes in the middle of your day.
You can follow it at your own pace, and you will have lifetime access to the material. Maybe you need to pause the course to go on a vacation, or life and work take over, not leaving you enough time.
That’s not a problem since you get lifetime access to the course and can resume whenever you want.
You can use the course to understand the core concepts of iOS now and then review it later to refresh your knowledge or deepen your understanding.
Lifetime access means you will also get updates for free when they are necessary. Since I introduced the course, I already updated it five times. All students got each update at no extra charge.
This course helped me understand the bigger picture
I did get the desired results as I understand the why the code I already learned to write works. I have used other tutorials, and I think they are great for learning how to write code that works – but learning that way leaves little understanding of why code is written that way. This course helped me understand the bigger picture. – Peter B.
Your approach to the fundamentals helped me in my work
Your work helped me in my first app, your approach to the fundamentals helped me in my work. As you said, there are many articles on how to do this and that, but there are not as many explaining the rules and bases. Your articles explain very well the fundamentals and how to go about it. Good work, thanks. – Wilmer C.
I now have the confidence to write my first IOS App!
The course gave me my first real understanding of how to write an App in IOS, the IOS architecture and the main design patterns to be used. I now have the confidence to write my first IOS App! – The Confident iOS Professional student
Is The Confident iOS Professional
right for you?
I want to make sure that my course is right for you.
I do not want you to go through another course and still find yourself at the point where you started, struggling with the same problems.
I’d rather work with a small group of people committed to understanding the foundations of iOS development than a large group of copy and paste programmers who want just to put code together to make something that works only in the short term.
The Confident iOS Professional is NOT for you if:
- You don’t know how to program. This is not a programming course. If you do not know how to program yet, you won’t be able to follow this course. The lessons assume you understand the basic concepts of programming in Swift. I know that there are many courses out there that teach programming and iOS development simultaneously. I find that to be the wrong approach. Programming is a big subject by itself. If you try to learn it while also learning iOS development, you will either miss fundamental concepts or be overwhelmed by too much material.
- You prefer to learn by doing things straight away, putting together the pieces of the puzzle later. Some courses make you go through a lot of practice first and, maybe, give you the missing information after. That is not how I learn, and I know from experience and research that it applies to others. My course focuses on getting the concepts first and then seeing their application in examples.
- You want to jump around the course haphazardly. You need to follow the course from start to finish to understand best practices. If you are not committed to putting in the time required and want just some quick code to copy into your app, this course is not for you. Copy and paste programmers, please leave.
The Confident iOS Professional is RIGHT for you if:
- You want to understand the concepts at the foundation of iOS development instead of specific tutorials that do not have general application.
- You are a beginner in iOS development or already know something, but you want to deepen your understanding of the platform.
- You are patient, deliberate, and systematic. You know that iOS development is a complex subject that needs to be understood and internalized and is not learned overnight. You know that if you put the effort upfront to understand instead of mindlessly copying someone else code, you will enjoy the rewards in your career for years to come.
- You want to understand the big picture, not just get specific code pieces for this or that task.
The Confident iOS Professional is focused and to the point, covering all key elements for a professional-grade app. Unlike most material out there, Matteo does not hide key discussions from the student, instead elaborating with detail on the design trade-offs that are the trademark of software development – Adrian Tineo
Frequently asked questions
What if I do not know anything about iOS development at all?
You do not need to have followed other courses, books, or tutorials to join The Confident iOS Professional. If you know to program in Swift already, I will show everything you need to know from the start, without leaving any gap.
The course covers every concept in a structured order, and it does not dive into advanced concepts too quickly, making sure you always have all the knowledge you need to proceed with the following modules.
What if I already know something about iOS development?
The Confident iOS Professional can still help you. Many people joined the course to expand their knowledge and understanding of the platform, even if they already had some experience.
Although I cover the foundations of iOS development, I do so from an angle that keeps in mind sound development principles that I learned through the years. So you might still pick a different perspective on the foundational concepts you already know.
Finally, even if you already have experience writing apps using UIKit, SwiftUI requires new mental models. This will probably make you a beginner again in some aspects. A deep dive is the best way to get up to speed with the latest technologies. The new SwiftUI curriculum also contains extra notes to help you map what you already know to the new approach of SwiftUI.
It might still be the case that this course is too basic for you. In that case, I have an advanced course called The iOS Architect.
Do I need to know Swift programming?
It would be best if you had a basic understanding of programming to follow the course. Some courses try to teach you both Swift programming and iOS development simultaneously. I believe that to be the wrong approach. Both are broad topics that should be studied separately.
The Confident iOS Professional only focuses on iOS development. You should be familiar with these basic Swift programming concepts:
- variables and basic operators,
- control flow statements (if-else, for, etc.),
- functions and methods,
- structures and classes,
- protocols, extensions, and inheritance.
If you have a basic understanding of the above, the course will teach you their purpose, when to use them, and the best practices for iOS development.
Is the course based on the UIKit framework or the new SwiftUI framework?
Both. Since the two frameworks require different mental models, The Confident iOS Professional offers two independent curricula.
The course’s primary material is based on SwiftUI, and I keep it up to date with the latest updates from Apple. I am also offering the old UIKit version of the course completely free of charge, so you can use it if you need to work on apps that use UIKit.
How is The Confident iOS Professional different from other courses on the market?
I have checked many other courses, and they all seem to follow the same tutorial-like approach. This is the only course that starts from the underlying principles of iOS development, working its way to creating any app following best practices.
How does The Confident iOS Professional relate to other material I am following?
A lot of online material either glosses over the fundamental concepts or is too advanced and takes some knowledge for granted. The Confident iOS Professional can help you understand other material that, at the moment, might feel a bit over your head.
Does the course cover MVVM / MVP / VIPER / Clean Swift and Combine?
The course covers the MVC pattern and its derivatives, including MVVM. These are the most widespread patterns used by Apple and iOS developers.
That said, you should not be fixed on a single, specific design pattern. The course gives you fundamental architectural concepts and best practices that you can apply to any situation.
The course does not cover Combine because it’s not a fundamental technology for iOS development. Combine, and other reactive frameworks are just tools. Even when using Combine, you need to know essential software development practices and design patterns.
Moreover, Combine still has little adoption, despite what many online articles might lead you to believe. Most jobs on the market require you to make apps without using Combine.
Do I need to be in a specific location or follow the course at a particular time?
No, the course is entirely online and self-paced. You can follow it from anywhere in the world, at any time you like.
Do I have to hurry up and follow the course in a defined time frame?
No, the course is self-paced, online, and you have lifetime access. You can take your time and come back to it every time you want to revise the concepts.
This is not a live course, so you don’t have to show up for a class at inconvenient times. That said, the course will help you only if you follow it. I don’t want people to spend money on it and just put it aside. I want my material to impact your understanding, but you have to do your part and follow the content.
I am already overwhelmed. I do not want another ton of material to study
I designed every lesson in The Confident iOS Professional to be short and to the point. You can learn them one at a time and in isolation, without having to learn a lot of new concepts all at once.
Each video lesson is around 10 minutes long. Each module, including the hands-on, should not take more than one hour. If you study one module per day, you can go through the course in two weeks, but that’s not required.
You can do theory on one day and the hands-on on another, or any other scheme that works for you. The course is entirely self-paced and can require as little as 10 minutes per day if that is all you have.
What if I try The Confident iOS Professional and decide it is not right for me?
I stand by this course with a 100% money-back guarantee. Try the entire course for two months and decide if it is right for you. This means you can follow the whole course before deciding. If it does not give you any result, I will refund you 100% of your payment, provided you made a good faith attempt at following the material.
Cannot I just do all this on my own?
Yes, definitely. After all, I learned everything by myself. Apple’s documentation is available for free, and the internet is full of free blogs and tutorials. I also write a lot of free material.
But let’s be honest. The chances are that you tried it all already, and it is not working. Every blog out there talks about anything and everything. How do you know if any particular topic is relevant or not? It is hard to put everything together.
Think about all the time and effort figuring out everything by yourself will need. Then compare it to knowing what you need to know precisely to develop most apps. It is more critical for you to focus on what you need to know and move forward in your career than waste time piecing together online tutorials.
I do not have time to follow any course
Time can be an issue for everybody, but honestly, learning complex skills, like software development, requires time. As life goes on, you will have less and less time, not more. If you are not going to put the time to learn the concepts you need, this course is not going to work. This said, time is still precious, and I do not want you to waste it.
Every video lesson is short and to the point, presenting only one fundamental concept at a time. This helps you to follow the course at your own pace, squeezing lessons into any time you have available during your day.
You have lifetime access, so you don’t have to worry about finding the time to follow the lessons. The hands-on lessons also follow this approach, presenting concisely the code you need to write to achieve what has been explained in a module. All the code is downloadable, so you don’t need to type it yourself if you don’t want to.
I am studying already a lot of other material, and I don’t have time for new one
If you feel stuck and cannot put together all the pieces to get the big picture, you are following too much material.
There is also a good chance you are reading material that is entirely irrelevant at your experience level. I created this course to allow you to ignore all the other material and focus only on learning what you need to know.
If you don’t have time because you are following too much material, my course can make more time. You can always go back to the other material after finishing the course to expand your knowledge on less fundamental topics.
Is the course in Swift or Objective-C?
The whole course uses Swift, both in the UIKit and SwiftUI curricula. This allows me to cover modern programming principles and best practices that are not available in Objective-C.
Is the material up to date with the last versions of iOS, Swift, and Xcode?
Although the fundamental concepts of iOS development do not change through the years, I keep the course updated to the latest versions of iOS, Swift, and Xcode. That said, I already updated this course five times since its creation to keep it up to date with the industry’s best practices.
I am in a bad financial situation, and I need a job quickly. Will your course help me?
Although many of my students got great new jobs thanks to my course, that is something I cannot guarantee. Different people have different backgrounds and are in different situations. My students take different timespans to complete the course, so I cannot say how long it will take you.
Learning iOS development takes time. My course will take some time too. If you are in a bad financial situation, spending a lot of time learning a new skill might not be the best idea.
If you followed my free material, you should already know more than I knew when I got my first job as an iOS developer. And if you cannot yet get a job in iOS development, maybe you should look for another job first, and then transition your career to iOS development later.
This is only a recommendation, though.
In the past, I forbid people that needed a job to join my courses. But I realize that it is not a call for me to make. You should be in full control of your life, and I trust you to make the right decision for yourself. If you think my course could help you improve your life, you are welcome to join.
Yes, you have other options to learn iOS development
I already told you that The Confident iOS Developer includes the fundamental topics and best practices you need to build any app on your own.
That said, I will not lie and tell you that you can learn those concepts only here. You can find them in other places too.
It took me a degree in computer science and 10+ years of experience in different companies and projects to learn many of the lessons I teach in this course. You can, of course, spend the same amount of time and effort.
You have other options too. Maybe you even tried some of them already:
Attend iOS boot camps: these usually cost between $3.000 to $20.000. Some can be excellent, but I have met many people that attended them and did not even learn half of what I teach in this course. A boot camp also requires you to be on-site for an extended period.
Learn iOS development at a job: you can gather a lot of experience working as an iOS developer in some companies and discussing with other developers. But that’s assuming you can get that job. At small companies, you might be the only iOS developer with no one to learn from. You need to work at a large company to learn from experienced developers, but those companies have more challenging interviews.
Learn from books, free articles, YouTube videos, and paid subscriptions: I did and still do all these myself. I subscribed to almost 50 different iOS newsletters. I watched countless videos from Apple’s WWDC and other conferences. I buy eBooks and pay for video subscriptions. All I see are superficial explanations, unstructured code, and concepts presented in random order. Many of these might look attractive, but they take forever, and I find some of them to be mostly a waste of time. If you add their price together, they even surpass the cost of my course.
Do nothing: yes, you also have this choice. You can keep copying and pasting together code you find in online tutorials, learning bad practices, and making the same mistakes over and over. How much time can you go on like that?
The Confident iOS Professional course has been extremely helpful for me. I finally understand how to structure iOS apps properly, I know why, and how to do it.
By the end of the course, I feel much more confident now as an iOS developer. In fact, it has enabled me to totally refactor several apps, and they are working much better now.
I am so glad I purchased this course. This investment in these key skills will make me a successful iOS developer after I launch my apps. – Doug Warren
An unbeatable guarantee
Try “The Confident iOS Professional” for a full 60 days, 100% risk-free
If this course does not help you advance your understanding of iOS, I insist that you get 100% of your money back.
I’ll even eat the credit-card processing fees.
Let me tell you why I offer this unbeatable guarantee.
I looked at many other books and courses, and I saw that they all follow the same approach. They make you do some exercises and assume you will magically understand the best practices of iOS development. Some courses try to teach you programming and iOS development simultaneously, giving you a poor understanding of both.
My research showed me that several students are left more confused by these courses and cannot put into practice what they learn. I believe my approach can help many to get back on the right track.
That’s why I guarantee The Confident iOS Professional.
It’s really simple. Take the course and see for yourself. If it does not work, I want you to email me and prove that you made a good-faith attempt to follow the course, and I will refund you 100% of your money.
This guarantee extends for a full 60 days after you join, which is more than enough to go through the ENTIRE course, absorb the material, and put it into practice.
If you don’t love it, email me at ANY TIME during the first 60 days, show me you’re applying the material, but it does not work for you. I’ll refund 100% of your price.
By the way, I ask you to show me you’ve applied the concepts I teach because I know how powerful they can be when used.
I have no intention of keeping your money if you’re dissatisfied, but I insist that you commit to taking action if you want the results from this program. Skipping the work, reading a couple of random lessons, and doing the same things you were doing before will not make any difference.
I’ve spent years to learn these concepts and more years developing this course, and I’d like to share it with you if you’re ready to finally call yourself an iOS developer.
I want as many people as possible to understand how to write iOS apps the right way.
That is why I created a payment plan in addition to my unbeatable money-back guarantee.
The Confident iOS Professional typically costs $499 when many others charge much more for a fraction of the results. But you don’t have to pay all that at once to get started today.
Not only will you have two full months to complete the course and start using what you learn straight away in all the apps you write – and see for yourself what difference it makes – but you can get started for just $49. Then you will pay only $49 for the next 11 months (12 total payments). That’s $1.63 a day. In many places, you can’t even buy a coffee for that price.
And you know the kind of salary an iOS developer gets nowadays. What if you could get a raise at your job? What if you could start freelancing and make apps for different clients, earning money from home? Or sell your apps in the App Store?
But it’s not just about the money. It’s also the satisfaction of making great products used by thousands if not millions of people.
Just remember, The Confident iOS Professional closes to new members soon. If you are interested, you need to act now.
I was doubtful because the course is not published on any of the major education platforms out there. But it has been, without a doubt, the best decision regarding online-paid courses I’ve ever made.
What gave me trust was being able to read Matteo’s free articles and compare them with what I’d previously read. If I had this impression reading his free content, what could I be missing out from a full course?
I can surely say, the content’s quality and the architectural approach Matteo delivers are exceptional on both of his courses. – Alejandro Jimenez
Yes, I want lifetime access to
12 Monthly Payments of $49
(That’s only $1.63 per day. Sales taxes may apply depending on your location)
If you have any questions or concerns about the course, email me. I am happy to help. Team/bulk subscriptions are also available.
Stop being just a developer that can only copy the code of others
It took me a long time to get where I am. I can now enjoy the satisfaction of writing many new apps. I worked for several clients and published my apps in the App Store.
But it was not always like that. I got stuck many times. I wrote many apps the wrong way and suffered because of it later.
You can get to the point where I am now in much less time than it took me.
You can stop copying code from tutorials and start writing code on your own.
You can get to build the apps you want instead of struggling to understand where you should even start.
What difference would this make for you? If you think about your career as an iOS developer in the coming years, my course can set you on a more successful path to achieve what you want. A better job. A freelancing career. Making your own apps.
This is the knowledge you will rely on for years to come.
You have already seen the concepts I explain in my emails. Now you can master those concepts.
It is time to make a decision. The Confident iOS Professional closes soon. I don’t know when I will reopen it, and when I do, I might increase its price. I did that already several times since I first launched the course, and I never lowered it.
I now have multiple iOS applications in the app store that I have personally developed
Your material was very well written and laid out as good as, if not better than, any guide to learning iOS that I had ever read. I was a member of every site imaginable, so there were plenty.
Even though I attribute my learning of programming to each of the different sites and resources I have used, I know that your understanding and ability to coach through great lessons helped me tremendously. I now have multiple iOS applications in the app store that I have personally developed.
Developing is a scary thing to learn, especially with all of the different ways anything in code can be (correctly even) done. Having professional, driven instructors like yourself is 100% why I stuck with it and why I have been as successful as I am now. – Christopher H.
Yes, I want lifetime access to
12 Monthly Payments of $49
(That’s only $1.63 per day. Sales taxes may apply depending on your location)
If you have any questions or concerns about the course, email me. I am happy to help. Team/bulk subscriptions are also available.