
Navigate six course modules, including professional setup and agile basics, and build the bankey iOS app. Master git workflows and job-hunting strategies to land your first iOS role.
Access the GitHub repository for the Bankey project to download notes and source code, clone materials, and follow along building the iOS app from scratch in Xcode.
Learn how professional iOS developers download and install Xcode, manage multiple Xcode versions, and boost productivity with tools like Oh my zsh.
Learn to maintain multiple Xcode versions on your desktop by renaming Xcode apps, treating Xcode as a directory, and switching between versions to support different Swift versions and features.
Learn to set up a GitHub repository, create a readme and license, and practice git workflows—from cloning and staging to committing and pushing with a personal access token.
Create a GitHub token by verifying your email, setting an expiry and scopes like repo, workflow, write packages, and admin dot org, then use GitHub command line interface for commits.
Install homebrew, install the GitHub command line tools with brew, and authenticate with gh auth login using a personal token; then push, check status, and review commit history.
Learn to install and configure Oh My Zsh to boost iOS development productivity with colorful, auto-completing terminal features, aliases, and quick navigation to projects and branches.
Review Xcode setup and version management, create your first GitHub repo with a commit, use Oh My Zsh, then preview agile and start building your first professional iOS app.
Develop deliberate practice in a personal iOS development GitHub repo, creating safe playgrounds for topics like Swift tuples, guard statements, and UIKit, plus experimentation with Core Data and Core Animation.
Explore agile software delivery for iOS projects by learning how iterations, user stories, and a master story list drive incremental, working software with adaptive planning and scope prioritization.
Build an enterprise iOS app by implementing login, onboarding, a table view with header cells, and networking with skeleton loaders, then apply animation, error handling, and unit testing.
Create a new iOS project without storyboards, remove the storyboard and scene delegate, update the info.plist, and load the root view controller programmatically in the app delegate.
Add a username text field to the login view using programmatic auto layout with a placeholder, and set the UITextField as a delegate to handle return and editing.
Explore how to build a vertical stack view in iOS using UIStackView to minimize constraints, embed text fields as arranged subviews, and style with spacing for a clean login layout.
Create a divider view in a stack view to separate username and password, constrain its height to 1, and round its corners using the CA layer.
Learn to add an iOS UI button to the login screen, configure a target action, and set auto layout constraints in the view controller for a sign in tapped workflow.
Add an error message label under the sign in button to validate username and password, display system red errors, and show a spinning indicator on successful login (Kevin/welcome).
Master login in a UIKit iOS app by validating username and password, showing error messages, unwrapping optionals with guard let, and presenting a sign-in button with an activity indicator.
Open the terminal, navigate to your repository, ignore unwanted files with .gitignore, stage changes with git add ., commit with a message, then git push to the main branch.
Review the login screen and solidify tools for professional iOS development, including no storyboards, auto layout, dynamic colors, scalable fonts, activity indicators, and git commands.
Prototype features in a side app to quickly test animation duration and angle, then bring the solution back to the main app for easier integration.
Build the onboarding screens with swiping in a UIKit app, then connect them to the rest of the application while practicing agile workflows and git commands as you refine navigation.
Learn how agile storyboard visualizes work in lanes from to-do through doing and ready for test to done, limiting work in progress, using Trello or Jira.
Explore how onboarding guides new users with a swipeable ui page view controller, a pages array, and a ui page control, plus next, back, and done navigation.
Create the onboarding container view controller that hosts a UIPageViewController, set up the pages array and current view controller, and implement the data source and delegate for swiping.
Compare vector based assets and bitmap retina images in iOS, explaining how pdf vector art scales with bezier curves versus pixelation.
Import vector-based PDFs into Xcode's asset catalog, set preserve vector data and single scale, and design an onboarding screen with a stack view, image named DeLorean, label, and bottom-aligned buttons.
Parametrize the onboarding view controller by passing hero image name and title text, replacing hard-coded values for reuse. Address initializers, storyboard concerns, and programmatic user interface, then test in app.
Add a close button to the onboarding container so users can exit early, and implement setup, style, and layout methods with a close tapped action.
Explore how to design app navigation after onboarding and sign in by implementing a protocol delegate to send signals from view controllers to the app delegate, enabling proper routing.
Signal app events from login, onboarding, and logout using the protocol delegate pattern, handled by the app delegate, with user defaults to remember onboarding status.
Explore the protocol delegate pattern, Apple’s core mechanism for safe asynchronous communication. Learn how delegates and data sources use weak references to avoid retain cycles and power UI kit components.
Define a login view controller delegate, fire did log in through a weak delegate, and extend the app delegate to handle onboarding with did finish onboarding.
Set the root view controller with a smooth transition to replace the login with onboarding, using the transition API for a cross-dissolve effect and a 0.3 second duration.
Create a dummy home view with a logout button and a logout delegate to signal did logout, then re-display login with onboarding shown once.
Learn to ensure onboarding happens once in an iOS UIKit app by using an in-memory flag and persisting it with user defaults so it remembers across restarts.
Persist onboarding state using user defaults with a local state utility, storing a has onboarded boolean by key, so the app remembers onboarding across launches.
Explore onboarding, ui page view controllers, and the protocol delegate pattern to enable communication from view controllers, and save state with user defaults within UIKit architectures.
Create and use a simple story checklist to ensure acceptance criteria, unit tests, feature flags, error handling, analytics logging, and animations are covered before submitting a story.
Explore how to build a summary screen in an iOS application using container controllers and scrollable layouts. Learn when to use scrolling and how container controllers organize content in UIKit.
Learn how container view controllers combine child view controllers to create cohesive interfaces using tab bar and navigation controllers, enabling tab-based switching and drill-down navigation.
Master how a navigation controller presents view controllers using push and present. Compare the push/pop stack with the modal, full screen takeover of present/dismiss.
Learn how UITabBarController acts as a container to present multiple view controllers via tab bar items, with optional embedding in navigation controllers.
Explore how a UIPageViewController manages a swappable array of view controllers, sets delegates, and presents the initial page, with tips on embedding as a container and swipe navigation.
Add a tab bar by creating a main view controller that holds the tab bar and its tabs, configures tab images with SF symbols, and prepares the account summary screen.
Explore how iPhone scrolling works, from deceleration to touch response, and compare UI scroll view, UI collection view, and UI table view to create fluid, interactive lists.
Use the UI scroll view as the base for scrollable views. Pin the scroll view to its parent and constrain the inner content with explicit height or intrinsic content size.
Explore the iOS UIKit collection view as a powerful flow layout with header and footer, where cells flow left to right, vary in size, and support rich, dynamic spacing.
Master the UIKit UITableView: create scrollable vertical lists with headers, footers, sections, and reusable cells; leverage high performance, reuse identifiers, and built-in affordances while recognizing its limitations for complex layouts.
Choose between scroll view, collection view, and table view based on project needs, and use table view to build the account summary screen, the workhorse for simple lists.
Explore advanced scrolling concepts by examining scrollable view controllers, stack views with scroll views, and progressively build from simple collection views to complex layouts using flow and compositional layout guides.
Create a new git branch to explore features without affecting the main line. Switch branches, commit changes, and merge back to main when ready.
Create a brand new account summary view controller, integrate it with the app delegate to show first, and design a table view header and custom cells.
Turn the view controller into a table view by wiring data source and delegate to a games array, populate cells with cellForRowAt, and apply safe-area layout guide.
Explore nib files to build a table view header in iOS, wiring the account summary header view and loading it programmatically.
Learn to style a table view header with nibs and interface builder, compare manual constraints with stack views, and reduce constraint count for stable layout.
Learn how interface builder adjusts content hugging priority and content compression resistance priority to let a stack view stretch while an image hugs itself, enabling flexible layouts.
Learn to build a table view cell from scratch in UIKit, programmatically without nibs, using a reuse identifier for efficient scrolling and understand why it's the workhorse of iOS.
Define a table view cell with type and name labels, a separator, and a chevron image; embed labels in a stack view and lay out elements programmatically with auto layout.
Layout a reusable table view cell by adding an account type label, divider view, and balance stack to its content view with auto layout and a chevron.
Showcases how to style text in iOS using NSAttributedString, elevating the dollar sign and cents with baseline offsets, applying bold, kerning, and paragraph styles, and combining text with images.
Stage changes incrementally with git add -p, review diffs with git diff, and commit only the desired changes, keeping a clean, focused repository.
Use a view model to reuse and configure account summary cells, extracting type, name, and balance to enable clean UI data separation, flexible configurations, and easier testing.
Learn to model account types with a string-backed enum and a view model, then configure a cell by switching on enum cases (banking, credit card, investment) to drive UI.
Convert a decimal balance to a double, split it into dollars and cents with modf, and format it as an NSAttributedString using a currency formatter and DecimalUtil in view model.
Clean up the app delegate, wire the main view controller, and apply the app color to the status bar, navigation bar, and account summary table view background.
Learn to build a table cell programmatically, style labels with NSAttributedStrings, use git add -p, create views with view models and enums, format currency, and color status and nav bars.
Ignore the geniuses and commit to deliberate practice to master iOS development with UIKit and Swift; stay methodical, prototype, build apps on the side, and keep learning without panicking.
Joining a company and starting work as an iOS engineer can initially feel overwhelming. Techniques we used for introductory iOS app aren’t there. People seem to expect you to know everything about core Apple frameworks like UIKit.
And there are just certain key practices everyone is going to expect you to be able to apply, which initially can seem really confusing, and everything can just feel overwhelming.
Not any more.
This course was created to help you make the transition from iOS hobbyist to working professionally.
Working professionally as an iOS engineer means:
Knowing how to build apps programmatically without storyboards
Understanding the fundamentals of Auto Layout and UIKit
Being able to use version control and create pull requests using tools such as git
Understand the basics of Agile
Being comfortable modern software engineering practices like unit testing and refactoring
Knowing the design patterns and idioms professional iOS developers use when writing professional code
This course will not only equip you with these essential skills, you will get to apply them on real life work examples and problems, all pulled from my experiences working as a professional iOS engineer on real world jobs.
By the end of this course you will:
Be able to work professionally as an iOS engineer
Have the confidence to join any team
Possess the skills and tools necessary to hit the ground running when you land your first professional iOS job
And who am I? My name is Jonathan Rasmusson. I am a professional ex-Spotify iOS engineer who built the Spotify iMessaging app. I have authored several books on software delivery, and produce the YouTube channel The Swift Arcade. I will be your instructor for the course.
What are you waiting for? Come on in, and let’s begin your journey to a high paying, rewarding career as an iOS professional today.
What others are saying about this course:
An incredible course. Full of useful knowledge presented by a true iOS pro. All of Jonathan's courses are great, especially this one. I wish he had more, but Apple noticed how awesome he was and snagged him. Good for him -- the stuff he has put out is gold.
One of the best courses on Udemy, you will learn a lot even if you are an experienced iOS developer, I really recommend it.
The best iOS course out there. The stuff he teaches is super relevant and to make everything from scratch, literally without even storyboards was amazing. There were so many concepts with which I used to struggle with and he taught them with ease. I am really glad I took this course. Keep making amazing videos Jonathan. You have a follower here :)
If you wanna get things right? get this course. Getting things right is a huge part of your job as a professional iOS developer. There are many courses out there that teach you how develop iOS apps but they also teach you bad habits that you will need to correct in the future. So if you wanna save time and learn correctly from the start I would recommend this course to the moon and back.
I really enjoy how the instructor has attitude to a student. Listening and watching it is just the honey on my heart. Additional the knowledge of instructor is amazing which it's multiply the experience :)
I've purchased dozens of courses on Udemy, and Jon truly stands out as an instructor. He makes the content engaging and skillfully explains the nuances and subtle details of the implementation. His enthusiasm for the material distinguishes him as someone who is not only competent in the subject matter but also adept at teaching.
Excellent lessons! I have fairly extensive Swift experience, but I'm learning so much to improve the quality and professionalism of my code.
I found this course through the Swift Arcade YouTube channel. For the longest time I had been looking for a course to really show me how to develop an iOS app similarly to how you would working for a software company. Jonathan goes over things such as consistently using git to save and host your work, using vi for editing, etc. all while building a variety of features for an iOS app. While I am not a beginner at iOS development, I had some knowledge gaps to fill and I am 100% satisfied with how this course helped in filling those gaps. I am now feeling much more confident moving forward in obtaining that first iOS developer job. Big thank you to Jonathan for this iOS professional course. I'd love to see more content like this in the future.
I'm still studying for my first iOS job and this course was great to give me a broader view of what to expect to work more professionally. Jonathan has an amazing methodology, many times throughout the course I had a question or was wondering about something he came with the explanation soon after, like he could read my mind xD Now I will try to apply all this knowledge to my personal projects, Thanks !
John's explanations are great; he gives a practical approach to iOS development. Git, programmatic UIKit, practical use of several common elements and also his professional insight from years of experience in the field are all appreciated here.