Our client is searching for a talented engineer not constrained or intimidated by how "things are usually done" and passionate about mobile technologies, automation and continuous integration.
Your mandate is to develop and implement best practices, be a lead contributor to your team, support peers and implement native iOS applications and supporting software services with the goal of continuous feedback loops while adhering to the technical approach of the company where possible.
A suitable candidate would be someone who is people-centric, who could multi-task and utilize both written & verbal communication skills to help our diverse range of customers and delivery teams.
- You will work and collaborate with product owners and Agile teams to understand, design, develop, and implement new features using engineering best practices, design guidelines, and principles.
- Convert designs from PSD designs/Invision Prototypes into mobile UI.
- Work on fixing bugs, analyse and optimise code for efficiency and improving application performance.
- Maintain existing iOS apps, upgrade to new versions of iOS and ensure backwards compatibility.
- Perform code reviews.
- Identify and correct bottlenecks and fix bugs.
- Ensure the performance, quality, and responsiveness of applications.
- Provide detailed estimates of work and ensure timely delivery of features.
- Produce and ensure delivery of quality, readable, and well-tested code.
- Unit-test code for robustness, including edge cases, usability, general reliability.
- Help architect and develop native iOS applications in Swift.
- Expertise in designing testable software and building large scale, complex applications.
- Desire to build and lead in-house team and manage a group of developers over time.
- Continuously discover, evaluate, and implement new technologies to maximise development efficiency.
- Provide technical guidance to junior members of the team.
Requirements & Skills:
- 5+ years experience in iOS Development.
- 1-2 years management experience.
- Proficient in Swift, with a good knowledge of its ecosystems.
- Solid understanding of object-oriented programming.
- Familiarity with SOLID principles.
- Deep understanding of Swift design patterns (especially MVVM).
- Knowledge of multi-threaded, asynchronous code.
- Ability to write clean, well factored UI code.
- Have a strong focus on building reusable code and components.
- Solid understanding of Auto-layout in Xib files, Visual Format Language and using Layout Anchors.
- Familiarity with RESTful APIs to connect iOS applications to back-end services.
- Familiarity with various dependency management tools (Carthage, Cocopods).
- Understanding of Apple’s design principles and interface guidelines.
- Proficient understanding of Git.
- Passionate about writing clean, well organized, and production-ready code.
- Working knowledge of the general mobile landscape, architectures, trends and emerging technologies.
- Attention to detail regarding UI/UX to ensure the apps adhere as close as possible to the design.
- Excellent verbal and written communication and interpersonal communication skills.
- A passion for technology and the ability to learn new concepts quickly.
- Experience in writing Unit/Functional/End-to-End tests.
- Experience in the full life cycle of an app, from design stage to release and support.
Nice to Have experience:
- Experience in Objective-C.
- Experience designing and building Cocoa Frameworks and Static Libraries.
- Experience building mobile banking and payment apps.
- Experience and strong understanding in mobile authentication, security and data encryption techniques.
- Experience in setting up iOS build automation for continuous delivery (Jenkins, Fastlane).
- Experience in setting up and maintaining all aspects of the Apple Developer account and iTunesConnect.
- Experience in deploying Ad-hoc, In-house, Beta (Firebase/Testflight) and store releases.
- Experience in supporting non-native iOS applications. e.g. Xamarin, Unity, React Native etc.
- Desire and ability to expand expertise into additional mobile languages.