- More than 7 years working as an iOS developer with more than 4 years as a senior iOS engineer.
- Experienced with Objective C and the different versions of Swift (Swift 2, 3 and 4)
- Have used architectures like MVC and MVVM and patterns like KVO, KVC, Delegation and Protocols, Notifications, Categories and Extensions and Publisher Subscriber.
- Created and used libraries to consume web services on either JSON or XML format.
- Worked on multithreading challenges using both GCD and NSOperationQueue.
- Experience using Cocoapods, Carthage and creating custom frameworks to modularize code and to obfuscate functionality if so desired.
- Persisted information with Core Data, User Defaults and SQLite.
- Worked with Authentication using Key Chain, Oauth and Token based systems.
- Debugged using Breakpoints, the LLDB and the caveman approach.
- Worked with ARC references and MRR calls.
- Experience with Storyboards, custom UIView classes and nib files.
- Worked with Google Maps, Gathered the User Location with Core Location and Used Map Kit.
- Worked with continuous integration with Jenkins.
- Implemented Apple Push Notification Services.
- Monitored the release of apps on the App Store.
- Managed version control with GitHub and BitBucket.
- Worked with a SCRUM framework that was customized according to project needs and team size.
- Developed classes using AVFoundation and HLS.
- Worked on prototype features using Core Bluetooth and iBeacons.
- Worked with a test - driven development philosophy using mocks, stubs and fakes.
- Coached junior developers into iOS programming and made code reviews for pull requests in several key features.
Unit Testing: Scrum
Cocoapods: Core Bluetooth
Core Location: Networking
Core Data: Objective C
Sr. iOS Developer
Confidential, Wilmington, DE
- Led team consisting of myself and 4 other iOS developers to deliver new features and bug fixes.
- Mentored Jr. developers through code reviews and one-on-ones.
- Used Story Boards and XIBs to design basic UI on a page-by-page basis or even so far as individual elements to be re-used.
- Enhanced Interface-Builder designs programmatically by modifying constraints, frames, colors, and font sizes.
- Used TableViews and custom TableViewCells to deliver a consistent feel across the application.
- Created router and service classes to enhance Alamofire and make easier network requests.
- Used Delegation to manage multiple threads.
- Used SlideMenuController to manage a slide-out menu for user navigation.
- Used SourceTree, Terminal, and File Merge to manage commits between local and remote GIT repository.
- Manually managed navigation controllers to provide a fluid experience forward and backwards throughout the app.
- Led Sprint Planning and Grooming to provide a path to implementing future stories.
- Used Bamboo to keep track of builds and run automated tests
- Tracked tasks and stories with JIRA.
- Guided effort to migrate from Native pages to WebViews to improve consistency across platforms.
- Managed interception of WebView requests to load native pages.
- Used break points to debug various methods and processes both in development and in bug fixes.
- Used XCTest to write Unit Tests for old and new classes.
- Used Test-Driven Development to design functions.
- Created mock classes to imitate dependencies and isolate classes to be tested or prevent unnecessary side behavior such as opening Web Browser when running unit tests.
- Used XCUITest to test native pages.
- Used Accessibility Inspector and Input Recorder to assist in creating queries for XCUITest.
- Used Event Kit and MXLCalendarManager to parse ICS files and create events within user’s calendar for appointments.
- Used Core Location to retrieve location for AQI and appointment purposes, and passed it to WebView.
- Used Safari and simulator to debug web views.
- Led team in Agile development process via Scrum implementation.
- Led standups, plannings, groomings, and retros.
Sr. iOS Developer
Confidential, San Francisco, CA
- Developed entirely on Swift and migrated through the different versions of the language.
- Used Auto layout, constraints and stack views.
- Made use of Core Animation to enhance the user experience.
- Created custom table view cells with xib files and through a programmatic approach.
- Worked on a SCRUM approach with daily standup, demo and retrospective meetings.
- Worked with an MVVM architecture using RxSwift to bind the view controller with the view itself.
- Worked with a TDD approach and used XCTest.
- Created a custom Networking class using URLSession, all network communications were secured with SSL.
- Custom frameworks were managed with Cocoapods.
- Made use of a custom internal chart library to represent data in a visually appealing way.
- Handled memory management properly to avoid retain cycles and memory leaks as well as dangling pointers (zombies).
Keywords: Swift, URLSession, UITableView, UICollectionView, UICollectionView, UITableViewCell, UIScrollView, RESTful, UISegmentedController, UITabBarController, SCRUM, JIRA, TDD, Push Notifications.
Sr. iOS Developer
Confidential, San Francisco, CA
- Worked on the migration from Objective C to Swift.
- Used Swift extensions to enhance the functionality of native and custom structures and classes.
- Developed with a light MVVM approach to facilitate testing and reduce the bloating on the code base.
- Made use Alamofire with Cocoapods to handle HTTP Requests to the API.
- Used Jenkins for continuous integration alongside HockeyApp.
- Used Bridging Headers to integrate Objective C classes into the Swift codebase.
- Used a Test-Driven Development style while developing features.
- Worked with Google Maps API to show the destination routes.
- Used push notifications to display user achievements and milestones.
- Made use of auto layout, constraints and stack views.
- Made custom subclasses of UI elements to enhance their feel and look (UIButton).
Keywords: Swift, Objective C, Alamofire, UITableView, UICollectionView, UICollectionView, UITableViewCell, UIScrollView, RESTful, UITabBarController, SCRUM, JIRA, TDD, Push Notifications, Google Maps.
- Developed with Objective C as the main programming language with the use of Categories to extend the functionality of native classes.
- Developed with an MVC approach using storyboards, XIB files and programmatic views.
- Made use of local model classes to represent data.
- Made use of NSURLSession to create a custom networking framework to consume the API endpoint.
- Worked with Jira to manage ticket creation and backlog.
- Important features of the application were unit tested to ensure quality of service.
- Used a Façade design pattern to enclose multiple classes in more cohesive pieces of functionality.
- Implemented custom table view cells with xib files using constraints and stack views.
- Created a custom collection view with custom cells to represent banking operations.
- Worked under a SCRUM project management approach.
- Made use of Apple Push Notification Service to display relevant information about the user’s banking operations.
Keywords: Objective C, NSURLSession, UITableView, UICollectionView, UICollectionView, UITableViewCell, RESTful, Jira, SCRUM, XCTest, Push Notifications.
- Used Objective C as the main programming language.
- Developed with an MVC Architecture using local model classes to represent data.
- Created views using XIB files and using a programmatic approach.
- Made use of custom third party frameworks using Carthage.
- Handled version control with Git.
- Solved tickets generated on Jira by the product owner.
- Fixed UI bugs.
- Made use of NSURLConnection to handle all communications to the API.
- Made use of Core Animations to enhance the user experience.
Keywords: Objective C, NSURLConnection, UITableView, UICollectionView, UICollectionView, UITableViewCell, Jira, SCRUM, TDD, Carthage.