Sr. Software Developer (iOS) / Engagement
This is an active and hands-on developer position that will work with our product team to create new world class features as well as iterate over existing features to drive user engagement in 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 with an eye towards improving the user experience and helping to create a daily habit. This should leverage our premier weather forecasting systems as well as Machine Learning or IBM Watson where it makes sense.
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, 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 ability to work in a Continuous Integration and Continuous Deployment environment is preferred.
• Design, develop, and maintain the next generation of applications based on product user feedback, strategic goals and customer/product/team collaboration
• 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
• Help refine the quality of the user experience
• Help 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
Required Technical and Professional Expertise
• Bachelor's Degree (or equivalent) in Computer Science or related field
• 3-5 years' experience developing software in Objective-C, Java, C, C++, or C#
• Minimum 2 years Object Oriented programming experience or equivalent education.
• Experience in iterative software development environments (Agile, Kanban)
• Experience with Test-Driven Development, Continuous Integration and other Agile practices
• Comfortable using Apple's XCode for software development
• Comfortable in using standard debugging techniques such as logging, LLDB, and/or Instruments to localize and correct software defects.
• Understanding of the challenges related to mobile development including battery and radio usage as well as CPU and memory constraints.
Preferred Tech and Prof Experience
• Understanding of common design patterns including Model-View-Controller.
• Hands on experience using smart phones and/or tablets preferably iPhone and/or iPad.
• Strong understanding of ARC as it relates to iOS Memory Management, including the concepts of strong vs weak.
• Proficiency in Swift, Objective-C, and XCode (design and development)
• Knowledge of and experience using Agile Development processes
• Understanding of Test Driven Design software development
• Strong problem solving skills.
• Able to convey information concisely and clearly to all levels of personnel
• Able to work closely and effectively with peer developers and work on several active projects simultaneously
• Exceptional interpersonal and teamwork skills
• Proficiency with Git and/or GitHub
• Familiarity with JIRA (Bug/Issue tracking tool)
IBM is committed to creating a diverse environment and is proud to be an equal opportunity employer. All qualified applicants will receive consideration for employment without regard to race, color, religion, gender, gender identity or expression, sexual orientation, national origin, genetics, disability, age, or veteran status. IBM is also committed to compliance with all fair employment practices regarding citizenship and immigration status.
Meet Some of IBM's Employees
Leadership Development Solutions Leader
Peter works with a variety of teams within IBM to increase organizational clarity, equip leaders to serve well, and provide opportunities for employees to continually grow and expand their skills.
Back to top