Becoming an iOS developer is a great career choice that allows you to demand a high salary and work on interesting projects at top companies.
Learning iOS development can take time, but you can speed up the process and optimize your learning following the steps I outline in this article.
FREE GUIDE - SwiftUI App Architecture: Design Patterns and Best Practices
MVC, MVVM, and MV in SwiftUI, plus practical lessons on code encapsulation and data flow.
DOWNLOAD THE FREE GUIDETable of contents
Chapter 1
What is an iOS Developer?
An iOS developer creates software applications (apps) for iOS, Apple’s mobile operating system that powers the iPhone. An iOS developer must be proficient in the Swift programming language, the official development language for Apple platforms.
In this chapter:
What does an iOS developer do?
An iOS developer primarily spends time programming in Swift, which involves typing code in a text editor. Although you’ll use some visual tools to build apps, most of your time will be devoted to coding.
struct Account {
private (set) var transactions: [Transaction]
var balance: Int {
var balance = 0
for transaction in transactions {
balance += transaction.amount
}
return balance
}
mutating func add(_ transaction: Transaction) {
transactions.append(transaction)
}
}
Thanks to Apple’s integrated operating systems, the skills you acquire as an iOS developer enable you to create apps for other platforms like iPadOS, macOS, watchOS, tvOS, and the most recent visionOS.
While iOS developers focus primarily on writing code for new features, their role might also include tasks such as:
- Testing apps and resolving bugs or performance issues.
- Publishing apps in the App Store for users to download.
- Collaborating with team members to design and develop new features.
Visual interface design is not part of an iOS developer’s responsibilities
What you won’t be doing as an iOS Developer is designing iOS apps. That’s the responsibility of a UI/UX designer. UI design is a broad field that requires in-depth study.
As a developer, you will collaborate with designers who handle the visual aspects of apps while you implement their functionality. This means you don’t need to become proficient in using design tools like Sketch, Figma, or Omnigraffle.
UI design is a valuable skill that can prove beneficial later in your career or if you decide to create your own apps.
Is iOS development hard?
iOS development is a demanding field that requires a combination of skills, tools, and knowledge. In addition to programming, it involves various aspects of software engineering, such as architecture, design, testing, debugging, deployment, and maintenance.
Key traits of a software developer include:
- Logical thinking and problem-solving.
- Spatial reasoning and system design.
- Abstract thinking, imagination, and creativity for finding solutions.
These traits are all linked to intelligence.
Furthermore, iOS developers must keep up with the latest technologies and industry trends and learn the new features and APIs that Apple introduces annually.
Finally, iOS developers must consider the performance, security, accessibility, and user experience of their applications, as well as compatibility with different devices and operating systems. However, you don’t need to learn all this at once. The requirements for junior iOS developers are lower.
There’s also no need to panic and think your knowledge will become obsolete yearly. The foundations of computer science and programming have remained consistent for decades.
While technology evolves rapidly, the fundamental principles of iOS development remain constant. Once you grasp these fundamentals, you can readily adapt to any new technology.
How long does it take to become an iOS developer?
Becoming an iOS developer takes months or years, not days or weeks. The exact duration varies depending on your circumstances and preferences.
A realistic estimate is that it may take at least one year of consistent and focused learning and practice to attain a level of competence and confidence that allows you to create professional-quality iOS apps.
Ultimately, there’s no definitive answer to how long it takes to become an iOS developer. It depends on various factors, such as your prior programming experience, learning ability, goals, and resources.
There are many other aspects of iOS development that you need to learn and master. At a minimum, you need to follow these two steps, which may take anywhere from a few weeks to several months each:
- Proficiency in Swift is the most crucial skill for an iOS developer.
- The second fundamental step is learning the foundations of iOS development with SwiftUI.
Chapter 2
The Technical Skills Roadmap for beginner iOS developers
To become an iOS developer, you must be proficient in the Swift programming language. You must also and have a strong understanding of the foundations of the iOS platform and the best practices that surround iOS development.
In this chapter:
FREE GUIDE - SwiftUI App Architecture: Design Patterns and Best Practices
MVC, MVVM, and MV in SwiftUI, plus practical lessons on code encapsulation and data flow.
DOWNLOAD THE FREE GUIDELearn Swift programming (separately from iOS development)
Swift programming is the first skill you need to acquire to become an iOS developer.
Spend a few weeks concentrating on building a solid foundation in these programming concepts:
- The basics: numbers, strings, constants, variables, and operators.
- Control flow statements: if-else, switches, and for/while loops.
- Collections: arrays and dictionaries.
- Types and interfaces: structures and enumerations, functions, methods, protocols, and extensions.
- Object-oriented programming concepts: classes, inheritance, and polymorphism.
Several methods exist for learning Swift. You can begin with my Learn Swift series or explore books and courses on Swift programming. Since I learned programming in university long ago, I don’t have any books I can recommend. However, the Big Nerd Ranch Guide is a widely endorsed choice.
You can also read the Swift Language Guide, but it might be dense without guidance unless you’re already familiar with programming in another language. Since it’s a reference manual, it doesn’t teach programming step-by-step.
A crucial piece of advice is to learn Swift programming separately from iOS development. Both require significant effort to master and attempting to learn both simultaneously can lead to confusion.
Unfortunately, many online resources follow this approach, and even Apple is guilty. However, I met many individuals who struggled with this approach. They spent considerable effort to learn both topics and ended up with a limited understanding of either.
Should you first learn Swift or Objective-C?
The Swift programming language was introduced several years ago to replace Objective-C, the primary programming language for all of Apple’s platforms up to that point.
There was a debate over which language, Swift or Objective-C, one should learn first. Swift emerged as the clear winner in that debate long ago, and the introduction of SwiftUI has only solidified that choice (I’ll discuss SwiftUI in more detail below).
So, if you come across articles debating this issue, you can safely disregard them. Learn Swift as your first choice.
However, it’s worth noting that Objective-C was the foundation for many decades of Apple development. While many companies have transitioned their apps from Objective-C to Swift, you may still need to learn it at some point, especially when working on older projects.
For instance, a significant portion of Apple’s codebase is written in Objective-C. Completely rewriting such a vast codebase in another language would bring more downsides than advantages.
Focus on the essentials for building any iOS app
To build the user interface for iOS applications, you’ll use SwiftUI, a UI framework comprising pre-built, reusable components for creating user interfaces.
As the name suggests, SwiftUI is based on the Swift language. This is why I recommend starting with Swift programming.
You can find articles covering various iOS development topics online, but not all are equally essential. Your initial focus should be on fundamental concepts that apply to every app you’ll create:
- Understanding the basics of the framework. Apple offers the free Introducing SwiftUI and Learning SwiftUI tutorials, along with a few sample SwiftUI apps. These resources provide a broad overview of how SwiftUI works. They may seem scattered in their approach, trying to cover everything at once. Therefore, I also recommend reading my introductory article to SwiftUI, which presents the concepts in a more structured manner.
- Grasping SwiftUI’s data flow. Once you know how to build user interfaces, you must learn how to fill them with data efficiently. SwiftUI offers several data flow mechanisms, each suitable for different scenarios.
- Mastering Architectural Design Patterns. Understanding SwiftUI alone is not sufficient. Design patterns like MVC (Model-View-Controller) and MVVM (Model-View-ViewModel) help you structure your entire app correctly, making it more robust, easier to maintain, and simpler to update.
What is UIKit and should you learn it?
Apple introduced SwiftUI at its World Wide Developer Conference (WWDC) in 2019, replacing the older UI framework named UIKit. This shift has left many newcomers to iOS development wondering which framework to learn first.
My recommendation is to prioritize SwiftUI but with a caveat.
The market has swiftly moved toward SwiftUI:
- In the 2019 iOS Developer Community Survey, 9% of respondents reported delivering apps using SwiftUI, and 60% said they would use it for new applications.
- In the 2020 survey, those numbers increased to 35% and 75%, respectively.
- I surveyed over 12.000 email subscribers, and SwiftUI garnered more interest than UIKit.
SwiftUI also works across all Apple platforms, allowing you to leverage your skills and reuse much of your code for iPadOS, macOS, watchOS, tvOS, and visionOS app development.
Furthermore, newer technologies like WidgetKit and Swift Charts are exclusively available in SwiftUI.
However, UIKit has been a part of the iOS platform for a long time. Most iOS apps developed in the past decade are based on UIKit. To secure a job as an iOS developer, you might have to work on one of these apps.
The second, most pervasive framework for iOS development is Foundation
SwiftUI primarily focuses on the user interface, but building iOS apps involves more than creating interfaces. The other essential framework for iOS development is Foundation.
Foundation is an extensive framework with a wide range of features. However, you don’t need to become familiar with everything it contains. Some parts of Foundation are rarely used or might be required only for specific tasks.
Typically, you learn the relevant portions of Foundation while following an iOS development book or course or trying to achieve a specific objective.
Here’s a brief list of its key features for your reference:
- Foundation includes basic data types in addition to those provided by the Swift Standard Library. Notably,
URL
andData
enable you to download data from the internet or save it on the device’s disk. You typically learn to use these two types when dealing with storage and networking (more on this later). - Many apps require handling dates and times. Foundation contains types for managing calendars, dates, times, time zones, and calendrical calculations.
- Foundation also provides numerous formatters to display numbers, currencies, personal names, dates, times, and other measurements in a user-friendly, readable format.
- For applications that involve converting values, Foundation includes various units and measurements. You should explore these features if your app deals with lengths, areas, weight, mass, speed, acceleration, energy, temperature, light, or electricity.
Chapter 3
Going Past the Entry Level Jobs
Creating basic iOS apps is a significant achievement that can already land you an entry level job. However, that’s just the beginning of your career. Being a developer demands much more than a surface-level understanding of the platform. To excel in this field, you’ll need to acquire additional skills.
FREE GUIDE - SwiftUI App Architecture: Design Patterns and Best Practices
MVC, MVVM, and MV in SwiftUI, plus practical lessons on code encapsulation and data flow.
DOWNLOAD THE FREE GUIDEStoring the app’s data on the device disk
Most iOS applications require the permanent storage of data. There are several iOS data storage technologies, each with pros and cons. Here’s a short list of what you should learn:
- To save data on your app’s device, you need a method for converting it into binary data. The standard approach in iOS is to use Codable protocols. The most used data format in iOS is JSON because it’s also used to transfer data over the internet.
- Once you have data in binary format, you need a way to store it. The Foundation framework provides a straightforward API for saving files in the file system, the standard choice for user data storage.
- For storing the app’s configuration and settings, use Foundation’s Preferences system instead.
- When dealing with data having complex relationships, you can turn to the new Swift Data framework. However, the older Core Data framework is still widely used. Be aware that both frameworks are intricate and may require some time to master.
Using relational databases and the SQL language
Databases offer an alternative method of storing data for iOS apps. They are used in applications spanning various platforms, from the web to mobile apps.
Managing a database is considerably more complex than using storage solutions previously mentioned, but it can sometimes provide performance advantages. As an iOS developer, you will rarely need to work with databases. In over a decade, only two projects I worked on used a database.
iOS employs SQLite, a cross-platform relational database system.
Working with relational databases requires, first of all, understanding how to design tables using the Entity-relationship model.
Once you’ve established these tables, you’ll use a specialized language called SQL to manage the data. SQL is distinct from programming languages like Swift. It’s not a programming language but a querying language to combine and filter data.
Mastery of databases is a time-consuming endeavor. You should consider this option only when necessary.
Making network requests and interacting with REST APIs
Many modern applications rely on internet data. While the Foundation framework provides a URL loading system, learning how to perform network requests in your apps can be challenging.
The process involves learning how to:
- Identify internet resources using URLs.
- Perform asynchronous tasks using Swift concurrency with async/await.
- Download data from the internet using URLSession.
These steps provide the foundational knowledge to add networking capabilities to your apps. More advanced applications must interact with a REST API and implement a proper networking architecture.
Chapter 4
The iOS Developer Career Path
Becoming an iOS developer is a good career choice. iOS developers can command high salaries and work on interesting projects at top companies.
More and more companies want to have a presence in Apple’s App Store, which significantly increases the demand for iOS developers. According to the US Bureau of Labor Statistics, the demand for software developers is expected to rise 25% between 2022-2032, much faster than average.
In this chapter:
FREE GUIDE - SwiftUI App Architecture: Design Patterns and Best Practices
MVC, MVVM, and MV in SwiftUI, plus practical lessons on code encapsulation and data flow.
DOWNLOAD THE FREE GUIDEiOS developer salaries according to experience
iOS developers typically earn high salaries. In 2023, these salaries range from $67.000 per year to $205.000 per year in the United States, with additional benefits, bonuses, and profit sharing.
Here are salary figures for iOS developers in the United States in 2023, according to Glassdoor:
- Entry level: $88.000 per year
- Average: $112.000 per year
- High: $144.000 per year
Please note that specific locations, such as tech hubs like Silicon Valley, can significantly impact salary levels. The high-end figures are typically associated with large companies like Apple, Google, or Facebook.
Payscale presents slightly different figures:
- Entry level: $67.000 per year
- Median: $100.000 per year
- High: $147.000 per year
Payscale also lists factors such as bonuses and profit sharing, which can push top salaries to $154.000 per year.
Indeed provides even higher salary estimates:
- Entry level: $86.000 per year
- Median: $133.000 per year
- High: $205.000 per year
Indeed also lists various benefits offered to iOS developers, such as:
- 401(k) and 401(k) matching;
- Health, dental, life, vision, and disability insurance;
- Flexible schedule, parental leave, and paid time off.
It’s important to note that these figures are not absolute and can vary based on location and experience. Expectations that may be realistic in one region might not apply in another. I once met a guy who wanted a Silicon Valley salary here in The Netherlands, where I live, and that’s simply not possible.
Can You Become an iOS Developer Without a Degree?
While a formal degree in computer science can be helpful and is occasionally required by certain companies, it’s possible to become an iOS developer without one. However, even if you don’t pursue a degree, gaining knowledge of fundamental computer science concepts can be highly beneficial and is often encouraged.
For example, my first job as an iOS developer at a social media company in Amsterdam mandated that all candidates hold a master’s degree in computer science. In contrast, during my second job at a software development consultancy, I worked alongside a colleague who lacked a formal degree or formal training but had self-taught iOS development skills.
Here are some computer science concepts I learned in university that are particularly valuable for iOS development:
- Algorithms and data structures (I recommend this book).
- Operating systems, parallelism, concurrency, and threading.
- Internet protocols (IP, TCP, UDP, FTP, and HTTP), the domain name system (DNS), and internet routing protocols.
- Formal grammars, state machines, and compilers.
How to get an iOS developer job
Start looking for iOS development jobs early in your learning process, even if you’re not ready to apply. This will help you understand what’s available in the job market and guide your learning journey.
You can search for iOS development jobs on platforms like LinkedIn jobs and likely find more options through Google searches. This will also give you insights into the job requirements for different positions, helping you determine what to focus on in your studies.
I recommend contacting companies early, even before you’re actively job hunting. But you should not contact the HR departments responsible for job applications. Instead, connect with developers already working in roles similar to what you aspire to achieve.
This approach offers several advantages:
- You can gain valuable information about job requirements.
- You’ll get a feel for the company’s culture and whether it aligns with your preferences.
- Establishing connections with individuals working at companies early on can help you access hidden job opportunities. Many positions are filled through networking rather than formal job listings.
- Having a contact within a company can expedite the interview process and potentially bypass HR screenings. Additionally, many companies offer referral bonuses to their employees, which can motivate them to assist you in your job search.
You can find more details about the process and the email scripts to use in this article from Ramit Sethi. Here, you can find what questions to ask.
Crafting an effective resume
When you’re ready to apply for an iOS development job, you must create a resume. A well-crafted resume is essential, even if you’re connected with a personal contact.
If you conduct informal interviews with developers at your target company, you will know what they are looking for in new candidates. You should highlight that in your resume, which will give you a tremendous advantage over your competition.
Your resume should tell a compelling story that differentiates you from other applicants. Highlight your unique qualities, experiences, and skills that make you memorable.
Chapter 5
Devices and Technical Requirements
The two essential tools you need as an iOS developer are a Mac computer and Xcode. An iOS device can be helpful if you already have one, but it’s not required.
In this chapter:
FREE GUIDE - SwiftUI App Architecture: Design Patterns and Best Practices
MVC, MVVM, and MV in SwiftUI, plus practical lessons on code encapsulation and data flow.
DOWNLOAD THE FREE GUIDEDo you need a Mac to learn how to develop iOS apps?
To develop iOS apps, you need a Mac computer running the latest version of Xcode. A Mac is also necessary to submit iOS apps to the the App Store.
While it is technically possible to run macOS on a Windows or Linux machine, this process is complex and not permitted by Apple’s licensing terms. Therefore, I do not recommend pursuing this path.
However, I understand that Macs can be expensive.
Fortunately, you don’t need the latest Mac model available. You can often find affordable, second-hand Mac Minis on eBay, typically priced between $100 and $300. Check also Apple’s refurbished Macs or Amazon’s renewed options for discounts.
Ensure that the Mac you purchase can run the latest version of macOS and, ideally, the next one if Apple has already announced it.
Currently, I recommend a computer capable of running macOS Sonoma to learn the latest technologies. You can find a list of compatible devices at the bottom of the page.
Apple announces new versions of iOS and macOS each year at its Worldwide Developer Conference (WWDC), usually in June, so keep an eye on its website for updates.
Download the latest version of Xcode, provided by Apple for free
Once you have a Mac, the next step is to install Xcode, the integrated development environment (IDE) that iOS developers use to create apps. You can obtain Xcode for free from the Mac App Store or Apple’s website.
To beginners, I recommend downloading Xcode from the Mac App Store, as it’s the most straightforward method.
You can find the Xcode guide here, but I don’t recommend it as a starting point, so keep the link for future reference. It’s a user manual that assumes you already know how to write code.
It’s hard to understand why Xcode’s features are helpful when you don’t know what to use them for. It’s better to learn to use Xcode as you learn iOS development.
An iOS Device can be helpful for iOS development, but is optional
If you already own an iPhone or an iPad, these devices can be beneficial but are not required for learning iOS development. Xcode includes an iOS simulator that allows you to run your apps on your computer.
The iOS simulator covers all your learning needs. I developed my first iOS app solely using the simulator. I also worked for many clients where I rarely ran apps on real devices, if ever.
An actual iOS device is necessary for final testing before submitting an app to the App Store or for features unavailable in the simulator, such as multitouch, gyroscope, camera, or Apple Pencil support. However, these are advanced features that you shouldn’t worry about when starting.
If you decide to acquire a device, consider purchasing a second-hand one, as this can be cost-effective.
Ensure that the device can run the latest version of iOS, which, at the time of writing, is iOS 17. Check the list of compatible devices at the bottom of the page.
If you plan to develop apps specifically for the iPad, ensure the device is compatible with iPadOS 17.
SwiftUI App Architecture: Design Patterns and Best Practices
It's easy to make an app by throwing some code together. But without best practices and robust architecture, you soon end up with unmanageable spaghetti code. In this guide I'll show you how to properly structure SwiftUI apps.
Matteo has been developing apps for iOS since 2008. He has been teaching iOS development best practices to hundreds of students since 2015 and he is the developer of Vulcan, a macOS app to generate SwiftUI code. Before that he was a freelance iOS developer for small and big clients, including TomTom, Squla, Siilo, and Layar. Matteo got a master’s degree in computer science and computational logic at the University of Turin. In his spare time he dances and teaches tango.
I’m iOS Developer since 3 years. After this guide I know what to tell the friends whos want to learn to programming(due to casch they earn… and others). I mean not iOS only but overall.
if found me a words and arguments that are dominating in this kind of conversations.
Great article and guide.
Hi,
What do you recommend for learning about “algorithms and data structures”? Thanks
Unfortunately I learned all these in university, so I don’t know what to recommend.
Hi Rollo23. Not wanting to plug someone else’s stuff on Matteo’s blog (for which I apologise) but if your interested in Algorithms and Data Structures (specifically in Swift) you might want to check out Wayne Bishop’s book over at http://shop.waynewbishop.com/. I’ve no affiliation and and not read it myself but a few people I follow on twitter have said good things about it.
Indeed, I haven’t read it myself, but it might be a good start since it’s in Swift.
Wayne Bishop. (Wayne Newton was a famous Las Vegas entertainer back in the day)
My mistake. Corrected above. No idea where I got ‘Newton’ from! I guess what goes on in Vegas…
Wayne Bishop’s book, as mentioned by others, is a good one, and since it’s all Swift, all the time, it’s probably your best bet.
The man who wrote The Book on algorithms — Robert Sedgewick, PhD under Donald E. Knuth, if that name means anything to you — still teaches the topic (for free!) over at coursera. That class is all Java, though, so unless you’re familiar with that (or similar) languages — or are willing to learn — it may be more difficult to follow.
Hi Matteo,
In terms of learning programming, can you elaborate a little when you say that programming concepts are only tools and how it’s important to understand how to reason about problems and solve them using these tools. Do you mean in terms of knowing how to apply these concepts to real world examples or in relation to iOS down the line?
Thanks,
Hasan
This does not have to do much about programming to start with. It’s more about decomposing problems into small pieces.
Let’s say you need to go buy milk at the supermarket and you want to get the cheapest option. This is a simple problem that you already fixed and know subconsciously, but how would you describe the problem?
At a high level you would say: go to the supermarket, get the milk, come home. But these can be broken down further.
Go to the supermarket: exit your house, turn left, walk down the road, turn right at the crossroad, walk until the supermarket, enter the door.
Get the milk: walk to the refrigerator section, find the cheapest brand of milk, walk to the counter, pay, exit the supermarket.
Come home: the steps in the first point, reversed.
You can still break these down. For example, find the cheapest brand of milk would look like this:
get a carton of milk
check the price
get another one
if the price is cheaper than the one you already have, this is better
repeat for every carton of milk and at the end you will have the cheapest one
This is exactly like programming. You are decomposing a problem in a series of instructions. You can give these instructions to someone that does not know how to solve this problem.
Programming is the same, you decompose a problem into instructions you give to a computer to execute. My example of finding the cheapest milk includes common programming concepts: if statements (if this then do that) and loops (repeat this for every carton).
As you can see, these concepts stand alone, regardless of language. I am explaining them to you in English, but I could do it in Italian or French. The concepts would be the same.
Programming is the same. There are many languages, but the fundamental concepts don’t change.
Ahh I see, thank you for your response very helpful!
Ahh I understand, thank you so much for your response very helpful!
Thanks Matteo. I started to dive deep into learning iOS Development, Programming and Swift last summer with doing all the video tutorials I could find from Udemy, Udacity, TeamTreehouse and Lynda. They were fun and exciting to see a semi-finished app at the end but like you pointed when it came to starting to build my own apps I was pretty much lost.
Your site and guide have inspired me to start back at learning Swift and Programming concepts in detail and make sure I fully understand the core concepts of both before I take my first stab at building my own apps and changing my career.
My question is, once I have become much more comfortable with Swift should I go back and learn Obj-C? I have been looking around at a lot of iOS job listings and it seems like the majority want you to know Obj-C first and Swift secondary. Or should I have a good understanding of their differences and how they work together?
Thank you once again,
James
Yes, the only reason for which I would learn Objective-C nowadays is because a job requires it. But more and more jobs require only Swift, since many new projects in iOS are Swift only. The companies that require Objective-C are the ones that have apps that have already been written in it. It does not make sense to rewrite all this code that works and is tested in a new language, with the risk of introducing new bugs.
The good news, as I wrote in the article, is that if you understand programming in Swift well, Objective-C is easy to learn (more in general, moving from one language to another is not a big task for a developer). Objective-C has only a subset of concepts that Swift has. Enums and structs for example are very limited and cannot have methods. Objective-C has classes, protocols and extensions (called interfaces) like Swift does, but it does not have protocol extensions. The biggest difference is syntax, but you can overcome that easily.
Mostly iOS development is not the language, but the frameworks, Foundation and UIKit above all. But these work the same in both languages. A view controller works the same wether you use Swift or Objective-C.
Also, I would not look into how Swift and Objective-C work together until you have to actually use them together. Many companies with apps in Objective-C keep them in one language only. Learning how they work together is not hard, Apple did a pretty good job to make them live in the same app. When you understand the two languages you can learn this in an afternoon.
This said, on Natasha’s newsletter you can often find jobs that require only Swift. Have a look there: http://swiftnews.curated.co
Nice article!
I am new to iOS technology and don’t know where to start. But your article gives me a clear picture of Swift and Obj-C.
Thanks!
I really like this: “First of all, do not panic: you are not going to become obsolete”
I saw technological unemployment many times in my life and it freaks me out
What do you mean by technological unemployment?
I favor people who have practical experience as opposed to having theoretical experience. In other words, show me your experience on the App Store. I don’t care about theories. Seeing is believing.
Hi Matteo, this is the best article that I’ve seen. Great job !! Thanks for sharing …
Overall, this is an outstanding, well-considered column, clearly born of experience.
The only thing I would disagree with is the assertion that answering “What is a memory leak?” cannot be done in two sentences. In fact, I believe it can be answered in a single sentence.
There are language-specific details behind that, including why it cannot be released, but at its core, that’s what a memory leak is.
The simplest case is C, where memory allocation and release is strictly manual. Allocating memory returns a pointer. If the program then loses track of that pointer, it no longer has a means to free the memory. Boom — instant memory leak.
Matteo’s deep dive into memory leaks in Swift is outstanding, of course, but it goes far beyond the conceptual question of what a memory leak is.
Hi Matteo!
When learning programing language swift, How do I go about reading the book that you recommend (the big nerd ranch guide)? and how do I practice what I just learned? do you have a guide for me on how to learn the programming language effective and what I should be doing while reading the book? you mentioned that you learned the programming language in school, how did you memorize/grasp the information that you learned? Thank you for this article and I hope to hear from you soon!
Just make sure you apply what you learn. The book will for sure have some exercises, so do those.
Programming is a practical skill, so you won’t learn it by just reading. Applying it will make sure you absorb and retain the information. What you are learning is putting together the various pieces of a programming language to solve specific problems.
Some exercises might sound silly at times, but they are usually less that they might seem. When writing apps, you will have to solve similar problems.
Good luck!
Не со всеми утверждениями согласен.
А почему?
Сможешь нам сказать? Кстати я тоже в России живу.
(Lol, I speak some Russian tho. I live in Russia. iOS devs seem to be in high demand here. Max says he doesn’t agree with everything Matteo said, and I’m just asking him to tell us why.)
This is an amazing article, gave me a lot to think about and consider on my self taught journey.. so appreciate the thought behind it all. I would like to link to my website & fb page if this is ok with you Matteo :-)
Sure, any link is appreciated. Thanks!
Hi Matteo!
That’s aweasome article with practicale advices!
I am backend developer and interested in iOS development. I learned Standfort course, read Swift 5.3 and took some courses and other staff, emphasizing SwfitUI. But I have two question about ios developer perspective
1. What is the highest level of mobile developer, what are the responsiblilities? In backend world you can level up design architecture and as for me it is more interesing than just writing code that often time is iterative task.
2. What do you think about app builder/constructer ? Can it cut off demand on ios developer in future, how do you evaluate it’s influence on ios field?
The titles I usually see in most job ads are simply junior, medior, and senior (I don’t think “medior” is a word, but they definitely use it). I did a quick search on LinkedIn and, by the look of it, people simply qualify themselves as iOS developer / iOS software engineer. They might then have some additional titles, like “team lead”.
I suggest doing a more extensive research and see what comes out. You can pick big companies like Facebook and filter the people that work there as iOS developers.
Architecture is important also in iOS apps, especially in larger ones, so it’s definitely a skill you need to have. AFAIK though, no iOS developer only works on that. I have both seen companies with a single, large team, or with smaller teams, but the result is usually the same. Each developer owns a part of the codebase and decisions about architecture are done collectively.
For your second question, solutions other than native have always existed, but they don’t really change the market. Most companies hire native developers. You can find on Google articles about companies like Facebook and AirBnB dropping those solutions in favor of native technologies.
What about people who want to start developing but they are over 40? Is there a place on the market for “aged” developers?