The Other Things An iOS Developer Should Know (Besides Swift & iOS)
Introduction
The world of iOS is ever-changing. Each year Apple introduces new devices with new or improved capabilities, along with new or improved frameworks, APIs, and tools to enable developers to utilize these features. And in recent years, Apple even introduced a brand new programming language: Swift. It's safe to say, you'll never stop learning as an iOS developer.
However, there are many more aspects to iOS app development than iOS app development. Inspired by this tweet by @EltonAOrtiz, I thought it would be helpful to categorize the complementary skills an iOS developer should become knowledgeable about or gain proficiency with, in addition to Swift and the iOS SDK.
Being a Master of None is OK
You should not regard the skills listed in this article as a must-have before you go looking for a job as an iOS developer. If that was the case, there would be no "competent" iOS developers, myself included. Rather, you could look at this as a guide for continuing education as you progress in your career.
Disclaimers
This article represents my best efforts to list the complementary skills I have identified are important over the last ten years as an iOS developer, and group them into meaningful categories. Some categories overlap others. And undoubtedly, I have forgotten something in version 1 of this article. So, stay tuned for updates!
I have also included a few skills that could be considered part of an iOS developer's core skillset. However, it is quite possible and all too common that these skills may be lacking in otherwise highly-competent iOS developers, so I have erred on the side of comprehensiveness.
The List
This list comprises skills you may consider learning about or gaining proficiency with, in addition to Swift and the iOS SDK.
Sections are presented in alphabetical order. Within each section, I've listed items in the order I would personally approach learning them.
Additional Languages
- JSON
- C
- Objective-C
- Unix shell scripting
- Python
- C++
- JavaScript
- HTML
- CSS
- YAML
- XML
- Markdown
- Swift Intermediate Language (SIL)
- LLVM IR
- Assembly
Accessibility
AI & Machine Learning
Augmented / Virtual Reality
Beta Testing
- TestFlight
Collaboration & Mentoring
- Code reviews
- Slack
- Web API design and development
- Kotlin
- Android SDK
Databases & Query Languages
- SQL: SQLite
- NoSQL: Firebase, MongoDB, Realm, Azure, GraphQL
Dependency Management
- CocoaPods
- Swift Package Manager
- Carthage
- Git submodules
Design Patterns
- Gang of Four
DevOps
- Source control: Git, GitHub
- Continuous Integration and Deployment
Environments
- Unix and CLI
- REPL
- macOS
Graphic Design & User Experience (UX) Design
- Apple Human Interface Guidelines - Make this an annual read.
- Mobile user interaction
- Sketch
- Figma
- PaintCode
- Bitmap (raster) and vector images
- Color theory
Knowledge Sharing
- Giving lightning talks
- Presenting at conferences and meetups
Marketing & Business
- App Store
- User acquisition and retention
- Analytics
- SEO
Mathematics
- Algebra
- Calculus
- Big-O notation
Networking
- TCP/IP and UDP
Physical Fitness & Mental Health
- A healthy body and mind will do wonders for your success trajectory as an iOS developer, or in any other profession.
Project Management
- Agile
- Scrum
- Kanban
Quality Assurance (QA)
- Integration testing
- Build acceptance testing, aka smoke testing
- Regression testing
Security
- Encryption
- Penetration testing
Web Services
- REST
- (SOAP)
Writing & Diagramming
- API documentation
- Tutorials
- UML diagrams
Software Developer at Moebius Solutions, Inc.
4 年I’m intrigued by ML — and I started on an MS in AI decades ago before moving and dropping the pursuit — but thus far I think the only applications I’ve seen for ML are in image recognition. How do you see ML being applied in iOS or macOS apps?
Passionate iOS Developer, Productivity Nerd, and Music Lover
4 年Thanks for the great article! I will use this as a guide to further myself an iOS engineer. Much appreciated! ????
Wow! This is very very helpful. I will save this article and start researching more about these fields. I sincerely think that everyone should learn something every day, even though it is something small or not so significant, but, at the end of the day you are getting more and more knowledge and that can help you in the future. Thank you!
Software Engineer at Starling Bank
4 年I’m working on the algorithm and big o part just now but you’re right there are a lot of other areas it’s really helpful to be proficient in, even if we don’t particularly master them like continuous integration and yaml etc. ??