Sr Software Engineer iOS
This is an active and hands-on senior developer position, involving both the creation of new world class features as well as on going maintenance and bug fixes for one of the most popular applications in Apple's App Store and the premier mobile application for the consumer weather category.
The candidate will have the opportunity to help build and shape the #1 weather application on all mobile devices as well as assist in the development, technical design, and architecture for upcoming new products for both iPhone, iPad, Apple Watch, and Apple TV as well as other emerging technologies including cognitive applications for the mobile space.
The Weather Company, an IBM Business, is committed to delivering quality, world-class applications for a global market. As such the candidate should have a solid understanding of Agile software development, Test Driven Development, and be able to work well in a cooperative and collaborative environment. Additionally, the candidate should be able to show a clear understanding of and demonstrable abilities in finding code defects using a debugger and debugging techniques, as well as being able to optimize code for performance using a code profiler when appropriate. An understanding of code refactoring techniques is also expected.
The candidate will be expected to participate in code reviews as well as write unit and UI tests and producing understandable documentation. Emphasis will be placed on developing scalable, efficient, elegant, readable, and maintainable source code.
A strong grasp of basic programming techniques and principles as well as a good understanding of various iOS technologies and frameworks such as UIKit, MapKit, CoreLocation, Xcode, and Instruments is required. While a strong basis in Objective-C is useful and necessary, we are placing a heavy emphasis on developing new code using the Swift language and as such the candidate should have a solid grasp of the both the Objective-C and Swift languages. An understanding of basic iOS, tvOS, watchOS, and MacOS principles is required.
The candidate will be working in a Continuous Integration and Continuous Deployment environment.
• Design, develop, and maintain the next generation of applications based on product user feedback, strategic goals and customer/product/team collaboration
• Work with the Product Owner and Engineering Managers to develop comprehensive solutions to customer problems and company goals.
• Design, Architect, and Create reusable libraries that encapsulate commonly used behaviors.
• Create reusable user interface components.
• Work closely with peer developers and the supervisor to ensure all relevant and agreed upon aspects of the application are well-designed and tested.
• Guide and mentor junior developers.
• Maintain existing software applications through product enhancements, performance improvements, and increasing scalability.
• Create and maintain unit tests leveraging all available tools
• Design with test scenarios in mind (TDD)
• Provide assistance to others in localizing and correcting software defects.
• Monitor applications for performance, availability, throughput, and application workflow
• Work with the product and design teams to help determine the most optimal way to implement a given products vision
• Participate in agile team discovery process: communicate feasibility of all solutions
• Add value during team retrospectives
• Perform timely and meaningful code reviews of peer developed solutions