Top 20 iOS Tech Lead Essentials
Image credits: james schipper - Fotolia

Top 20 iOS Tech Lead Essentials

For a successful iOS product/application development, there must be 360 degree thinking and a checklist to adhere.


iOS Lead/iOS Architect must have this critical thinking and it should be backed by higher management.

Following is ''iOS Tech Lead essentials'' listed in no particular order. Also, some points are applicable not only specific to iOS but also to the Tech Leads in general.

This is high level checklist and not necessarily mean that all points applicable from the day one. Even, some might not be applicable at all in certain scenarios like while managing legacy code or having third party dependency or even higher management constraints like budget/time/resources. Actually, the essentials are listed considering bigger picture and long term scalable solutions for medium-to-large scale applications. Moreover, such practices are possible in Agile methodology with a good number of team members only.

NOTE: Each point here is itself needs a separate article and it is not in the scope of this article. Hence, only specific points with little description are covered.

  1. Coding Standards and Guidelines : Code looks consistent, readable, organised and it is easy to debug/maintain in longer run. iOS Tech Lead must make sure that such guidelines are prepared/documented and properly communicated to all team members.
  2. Branching and Merging Strategy : Irrespective of your version control tool, a good branching strategy helps developers to easily collaborate. Branching model/strategy may defer depending upon application release management/team size/organisation's need. Merging strategy is nothing but the ability to frequently (and automatically) merge code to avoid complicated merge conflicts. iOS Tech Lead / Architect must make sure that a super-efficient branching and merging strategy is created and followed.
  3. Dependency Management : iOS applications consist of code dependency whether it is external(third-party framework) or internal(reusable code created within organisation ). Try to avoid third party dependencies at first place depending upon the nature of application domain, banking/financial application for example, are critical and security could be at risk because of 3rd party framework. Code reuse can be achieved by creating and distributing the packages from central repository as independent source code(with its own versioning). There are popular package managers like cocoa-pods, Carthage, git submodule including Swift Package Manager from Apple. Considering all options and looking at their pros/cons, the decision for internal dependency management must be taken and if possible adhere to only one type of package manager in application for all dependencies. Do not select one option based on comfort zone but rather think long term and take informed decision for the benefit of team/organisation.
  4. Application Architecture : iOS Application Architecture is vital for development. Gone are the days organisations could underestimate importance of robust and scalable application architecture. There are many famous architecture patterns like VIPER, MVVM, MVP, MVC etc. Choosing the one is critical to the application's success and long term future. Moreover, a well-defined application architecture can help us maintain code base efficiently and distribute work among team members easily. Strict policy of clean and less code including no duplicate code within application architecture can be crucial. iOS Tech Lead/Architect must think through this aspect while defining overall architecture of application and it must be properly understood by all team members so that they can contribute well for all future requirements/changes.
  5. Folder Structure : This is equally important to Application Architecture. In fact, the folder structure depends upon the architecture we are following. Well organised and logical folder structure helps us to put related source files together. And when code becomes huge, such practice
  6. Low Level Design (White board style design) : Often, it is tendency to start coding without thinking or planning. Low level design is nothing but doing some draft work/mind mapping before writing actual code(on paper/white board). Such practice can help avoid bugs because of avoiding edge cases. Also, it can help to set the expectation of certain design patterns/best practices/edge case handling scenarios before code review(PR) and hence so many comments could be avoided. This kind of practice should be followed by all team members and must be reviewed/brain stormed quickly with Tech Lead/Architect before jumping to actual code writing.
  7. Code Review : First of all, code reviews should be done by both peers and Tech Lead. Effective code review strategy must be outlined and revised based on feedback and learning within team. Aim is not to point out anyone's mistake or humiliate someone but to find out logical errors, design related issues, to check standard software principles applicability. It gives developers opportunity to learn some standard practices, save overall time on obvious bugs/issues and gives chance to learn other perspective from reviewer. Tech Lead must ensure about effective code reviews within the team and make sure team members understand the importance of the same.
  8. Task/Work Distribution : It is the responsibility of iOS Lead to set expectation of technical story from Given business requirements/features. For example, any reusable framework/module/class related stories must be described properly and communicated with proper expectation and justification. Lead must ensure fair share of work distribution and at the same time try to make sure it is not so tightly dependent on other developer's work. Hence, ultimately, avoiding complex merging issues/conflicts. Moreover, iOS Tech Lead must know the comfort area/ expertise/ interest of individual developer to provide him/her proper tasks. Lastly, iOS Tech Lead must be available and ready for picking up individual story development for himself.
  9. Known Issues and Backlog management including Technical Debt : Even in best of the teams/organisations there will be certain items/tasks/issues left behind due to some or the other reasons and iOS Tech Lead must be responsible to have a list of such items and plan together with manager understanding the criticality, business priority and availability of team.
  10. Application Security Best Practices : This itself is a topic with lot of supporting points to consider. iOS Lead should be responsible to understand how critical application domain is. Aside from that, user privacy/safety of user data must be taken seriously. Accordingly, one must have a list of all security concerns and action items how to deal with them. Obviously, this is not just the responsibility of iOS Tech Lead to achieve end to end security goals of application.
  11. Data Management Strategy : This aspect must be covered considering offline data management, client server architecture setup decisions and online/offline data sync strategies. Also, data caching process/practices must be defined and applied. Also, iOS Lead and Architect must make sure that data layer is isolated and does not tightly depend upon UI layers. Data layer and its multi threading and other scenarios must be handled separately and it should not impact business and UI layer. Again this best practice and strategy should be organisation/application requirement specific. Also, consider application scenarios in offline mode and its responsiveness.
  12. Crash/Critical Bug/Production Issue Management : There must be provision to get instant crash reports through email to concerned team members. Always, crashes and production issues must be tackled with highest priority and prompt action must be taken. Crashlytics and Instabug are worth considering options. Keep it simple and set a standard process to deal with such high priority items.
  13. Code Documentation and Workspace Setup document including required KT document/process for Onboarding new team members : Often, new team members are clueless or struggle understanding the full application and face problem for contributing quickly after joining. To deal with such issues, iOS Lead must take initiative and prepare a document for workspace setup. Additionally, there must be KT(Knowledge Transfer) plan or at-least a solid plan to get new colleague on-boarded quickly.
  14. CI-CD Strategy : Many engineers are talking about it and very few gets a chance to work on this. Again this itself is a broad topic to discuss about and deserves multiple articles around it. Take baby steps towards mobile DevOp process. There are several choices available for CI/CD like fastlane, Xcode server, Bitrise etc. iOS Tech Lead must research well and understand the process and try to create strategy around this. Also, it is vitally important that its benefits like faster build process, critical bugs identification, automated email notifications and automated testing are documented and backed by data points for stake holders to review and understand. Most importantly, such process requires participation of all team members to understand and be on the same page. Do not rush implementing this without reaping mentioned benefits from this.
  15. Technology Stack Upgrade : In this fast paced technological world, it is essential to adapt latest available versions of language, tool or framework. Also, eliminating outdated tools/process or deprecated frameworks after getting better alternative is important for organisations' success. Here, key is to prioritise and understand the value being added to the application including repercussions of not doing so. Communicate and document well about certain deprecated frameworks and set proper time line. iOS Tech Lead must take initiatives around this proactively and should not ignore any team member coming up with something around this.
  16. Developer Level Testing and Automation Practices : Have you ever heard someone saying QA should do that or it is QA's responsibility mate! Such mindset must be changed in Agile and we must thrive to deliver bug free feature. Certain practices like doing Developer Level Testing, adding UI/Unit test cases for your functionality or having automated scripts for testing some key functionalities are beneficial for reducing bugs upfront. One can start with native apple frameworks XCUITesting and XCTest. Fail at your desk before it is delivered to QA. iOS Tech Lead must ensure about addition of certain best practices. Needless to say, keep everyone in loop and try to get data points including code coverage reports over the period of time and let stakeholders know about the positive results of such practices.
  17. Application Performance Tuning : Do not wait till you have performance issue raised by someone. Keep an eye over this aspect since beginning. In addition to that memory leaks and retain cycles detection must be ensured through Xcode instruments or Memory Graph Debugger. Best of us might mistakenly write code that can lead to memory leaks or retain cycles. iOS Lead must realise the value of the same and add such practices as part of daily activities to avoid critical performance problems in future.
  18. Application Distribution/Deployment : Set efficient and productive application distribution/deployment process. This might be slightly correlated to CI-CD strategy pointer. Also, keep your code signing assets like certificates, provisioning profiles, p12 files readily available and revoke when necessary. Make sure about giving and restricting certain rights from Apple Developer Account to team members. Also, it is necessary for minimum 2 team members including iOS Lead knows about the process and can contribute on demand/in high priority situation. Involving senior developers and delegating such tasks to them could be wise and again it depends upon team size and organisation. iOS Lead must set expectation and document the process around this as well.
  19. Xcode Build Scheme/Settings/targets Management : It is imperative that iOS Tech Lead understands this and how to get best out of it. This helps achieving certain tasks like different application environments, mapping actions specific to target, and configurations specific to building/archiving/testing. It is necessary deep dive into this and research well.
  20. Internal knowledge transfer/presentation sessions : Everyone is busy in today's time. However, setting some time in between for conducting knowledge transfer sessions is a good sign of a healthy and cooperative work environment. No harm in doing this at least once in a month if not possible to do so on weekly basis. Who does not want to learn new things? Actually, such initiatives are good team building exercise and provides opportunity to gain technical/non-technical knowledge. Everyone within the team should be given chance to learn something new and share knowledge to everyone. It can help develop good presentation skills and at the same time knowledge is shared. "Knowledge is power" and "Sharing knowledge is powerful".

Tu summarise, these are some key pointers I believe should be taken into consideration by iOS Tech Lead and it can work wonders for team and success of organisation as a whole.

Please share your thoughts/feedback in comments section. Also, feel free to add more points to the list. Thanks for reading.

Jasmin Mistry

A seasoned architect with expertise in Node.js frameworks (Nest.js), PHP frameworks (Symfony, Laravel), React.js, and Azure cloud technologies.

4 年

Very helpful ??

要查看或添加评论,请登录

社区洞察

其他会员也浏览了