In this article we will go through the fundamental areas that every iOS developer must know. Studying them will help you:
- Build a solid foundation of platform-independent skills that will allow you to easily study iOS as well as enter any other software development area.
- Improve problem-solving ability which is often considered to be the most important software developer’s skill.
Why these skills
The distinctive feature of software development is rapid obsolescence of tools and frameworks. Thus, we must constantly strive to refine and improve our skills to accommodate the changes of the information space and state of the market.
Mobile development is especially affected with this trend. Thereby, developers must focus on fundamental skills rather than learning individual tools or frameworks.
- McConnel, S. Code Complete: A Practical Handbook of Software Construction, Second Edition.
- Martin, R. Clean Code: A Handbook of Agile Software Craftsmanship.
- Fowler, Beck. Refactoring: Improving the Design of Existing Code.
- Gamma et al. Design Patterns: Elements of Reusable Object-Oriented Software.
- Humble J., Farley D. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
Nice to read:
- Fowler, M. Patterns of Enterprise Application Architecture.
- Hunt A., Thomas D. The Pragmatic Programmer: From Journeyman to Master.
Understand development methodologies
A software development methodology is the process of structuring, planning and controlling the way of developing a piece of software. There are not so many of them and you must understand pros and cons of each. Here is a top-level overview of the most popular methodologies you must know:
English > Swift
Unless you are a native speaker, the first language you must learn is English, and not Swift or Objective-C. The essential minimum for reading documentation is level B1.
You must be fluent in the following topics:
|Data structures||Understand the concept and best usage cases of Arrays, Lists, Sets, Trees, Graphs.|
|Algorithms||Understand the principles of basic search and sorting algorithms. The concept of O(n).|
|System programming||Basic understanding of compilation process and memory management.|
I recommend to study iOS in the following sequence:
- The only Swift book you need is The Swift Programming Language by Apple. It’s also available on iTunes. Don’t try to remember everything, the main goal of this step is to get the overall understanding of the language. You will refine your practical skills in the next step.
- Study Developing iOS 11 Apps with Swift by Stanford University video course. It’s the best practical course on iOS development and it’s completely free. Type and run every example and by the end of the course you will feel confident enough to implement a full-fledge app on your own.
Swift or Objective-C?
Undoubtedly you must focus on studying Swift. All fresh projects use Swift and Objective-C now associates only with legacy code.
However, do not be under any illusion that you can avoid studying Objective-C. A good iOS developer must know both of the languages.
Objective-C has been in iOS world for a very long time and all Cocoa frameworks consist of Objective-C classes. From time to time you will have to dive into Objective-C code and this will contribute a lot to your knowledge.
Develop pet-projects. Come up with an idea that inspires you, implement and publish it on GitHub. Aside from the invaluable experience, it’s a great advantage when finding a job both for beginning and seasoned developers.
Resume is often the first document that acquaints your potential employer with you. Make every effort to compose it with the highest quality possible, because there won’t be another chance to a make a first impression.
- Use English language.
- Ask for proofread.
- Consider using 3rd-party services, such as JSON Resume.
- Always keep you resume up to date. Cloud storage or version control system will come in hand.
- When applying for a job, accompany your CV with a cover letter. It looks professional and gives you an opportunity to stand out from the other candidates.
- If you haven’t already, sign up on LinkedIn. It’s great at finding jobs and establishing business connections.
- Take a professional-looking photo for your business profiles.
Your main goal as an iOS developer is to build a solid foundation of basic skills which will allow you to solve tasks of any complexity within a reasonable time frame as well as improve your problem solving ability. The latter is often considered to differ a first-class software developer from the average one.
Read classic books on software development; start practicing iOS development with The Swift Programming Language and continue with Developing iOS 11 Apps course; build beautiful pet-projects that inspire you. Create first-class resume and keep it up to date.
I am sure you are on the right track and you have everything you need to achieve your goals.
Thanks for reading!
If you enjoyed this post, be sure to follow me on Twitter to keep up with the new content. There I write daily on iOS development, programming, and Swift.