Coherent Solutions is a software product engineering and consulting company with 2000+ professionals. Headquartered in Minneapolis, USA, the company’s core competencies across multiple locations worldwide include product software development, IT consulting, data and analytics, machine learning, mobile app development, DevOps, Salesforce, and more.
Project DescriptionWe are seeking a passionate and experienced iOS Engineer to join our campus mobile team. This team is responsible for mobile applications that have a significant impact on users' daily operations. As a member of our team, you will play a key role in designing and developing diverse and complex features that revolutionize how users interact with our software by enabling efficient processes, streamlined workflows, and enhanced user experiences. You will collaborate closely with our US teams and have the opportunity to challenge yourself and grow within our R&D site.
TechnologiesProficiency in Objective-C and SwiftExperience with Foundation and UIKit frameworksUtilizing the Swift standard libraryKnowledge of design patterns and programming conceptsModel-View-Controller (MVC) design patternAsynchronous and multi-threading patternsCocoa design patternsOther object-oriented programming patterns and concepts
Job Requirements3-5 years of experience building iOS apps in Objective-C and Swift using Foundation, UIKit, and the Swift standard library.Demonstrated skills in writing and testing (unit, automation, integration) high-quality, readable, well-architected, and efficient code.Experience with MVC, asynchronous/multi-threading patterns, Cocoa design patterns, and other object-oriented patterns/concepts.Ability to design and build complex UI hierarchies.Understanding of the iOS app lifecycle and Apple's recommended practices.A creative and agile team player with a passion for product quality and attention to detail.Advantage: Experience with backend or Android development.
ResponsibilitiesDesign, implement, deliver, and test iOS features in the main Coherent user app, understanding our products from both technical and business perspectives within the context of our larger operations.Break down complex problems into elegant technical solutions that are user-friendly and comprehensible.Communicate effectively with leadership, product owners, and other technologists to develop working software based on an understanding of business and technical priorities.Write effective automated tests with minimal guidance.Follow and improve upon coding standards.Perform code reviews within your domain and apply quality standards to existing areas of the codebase.Develop awareness of technical debt and strive to avoid introducing more of it.Recognize and suggest opportunities for additional automation.Monitor, debug, and resolve moderate complexity performance, stability, and reliability issues.Understand security-related issues, design solutions, and execute them.Work comfortably within existing established processes.Continuously learn and adapt to new technical areas.Mentor and guide other team members, helping them grow their understanding of the team's domain through code reviews, pair programming, or mentoring sessions.Assist with onboarding new team members.Demonstrate awareness and sensitivity to differing perspectives and cultures, striving to create an inclusive work environment.Communicate clearly and effectively with engineers and other stakeholders on technical tasks.Collaborate with engineers from other teams to achieve shared goals.Participate in team discussions, sharing context and background when interacting with others.Manage expectations around the delivery of their work clearly.Have a deep understanding of their technical area and adjacent areas, recognizing their impact on the broader business.Know when to seek additional data or expertise from other contributors and stakeholders when making decisions.Execute tasks within team projects, demonstrating ownership from conception to completion.Tackle small to medium issues independently and work with the team to break down large, complex issues into more granular tasks.Step up on tough issues and embrace new challenges.Provide accurate project estimates and execute them.Propose changes that improve team efficiency.