Following ways below can help you grasp some good iOS skills without much effort. Let’s talk about it one by one:

Listen to some cool iOS podcast:

Swift by Sundell podcast is one of my favourite in the list. You can listen to different developer ideas or tips which can save some big time in your project. Swift over Coffee podcast is pretty cool keep yourself refreshed about swift updates, latest features and best practices. Swift Coders: Interviews with swift developers is also my favourite as you can listen to stories of different developers. learn from their approach and practices for development in other startups/tech firms.

There are many more other podcasts like Accidental Tech Podcast, The raywenderlich.com podcast etc. More important is you follow at least one episode a day from a podcast and try to implement those things in your code.

Read swift/iOS related books/turorials:

Advance Swift Book by objc.io is one of the solid advance swift learning book. Before you start this book make sure you are well aware of basic swift syntax and use cases. Raywenderlich has been a fantastic contributor for iOS/swift content over the years. I really like to read their tutorials in my free time. The Pragmatic Programmer is one of my favourite book. It’s not about swift but more about good software development practices and loaded with tons of cool programming phrases. one of my favourite is “Cat ate my source code” 😄

Development tips:

Try to use more advance swift code/functional programming to improve your code readability. Just to start with something let’s take an example of traditional for loop. You can replace it with foreach, map, flatmap, compactMap, reduce whenever possible. Let’s try a simple code example to try it out. This sample code simply prints fibonacci number’s square in a array:

Now let’s use this piece of code with map:

You just saw above how functional programming can make code more cleaner and better in readability.

2. Use of Closures, Generics, Struct, Enums and Protocol Extensions make code more swifty. Try to make use of them in your code base.

3. Less use of third party libraries makes your code more self-driven and less dependant on other libs. I tend to write my own code to do some heavy lifting work(e.g UIViewAnimations or Network libraries) instead of just importing some library unless necessary. You can always check code for other libs to get an idea to start with your own logics. (I call it learning from stealing 😄)

4. Unit tests are a great way to level up your development skills. Applying TDD to your projects can help you think first to cover all (most of the) test cases for your business logics and then write them in actual project. This way you will know whenever any tests fails you have to fix that part of the code.

5. Strong command on Git can improve productivity. You can integrate git completion tool to enter commands faster and auto-complete them. you can use git aliases to further improve it. I like to add aliases for my commands for example:

git checkout -b feature/hello-world can be reduced to:

git co feature/hello-world

6. Make use of fastlane to automate your day to day development and release process. This is a great step to pivot yourself towards senior level. You can try to automate the complete pipeline for your build process. It will really help you to understand end to end flow for deploying any iOS project. You can also look at travis or jenkins too for more advance level CI/CD setup.

7. Last but not least try to work together with your fellow developers. Adapt pair programming and review each other’s code once in a while. This can greatly help to eliminate lot of mistakes at early stage. If you have junior developers in the team then try to encourage them not scare them 😄. Instead of criticising someone’s code try to advise for writing better code or share what you have learned from doing it in your approach. Becoming a good team player is very first step to lead a team.

I hope this article can help you guys to improve your development process and help many iOS developers to change their direction from junior/mid-level to senior role. Please feel free to leave comments to add more good points in addition.

Cheers 🍻