Morgan Hah
Phone: (***) – ***-****; Email: ***********@*****.***
SR. ANDROID DEVELOPER
PROFILE SUMMARY
I'm a results-oriented Android developer with 10+ years of expertise crafting top-notch mobile applications and 11+ years of experience in IT. My passion lies in building innovative apps that users love, leveraging the latest technologies and best practices.
Here's what I bring to the table:
Specializing in languages such as Java, Kotlin, C/C++, JavaScript, JQuery, and JQuery Mobile, with a strong command of HTML and CSS.
Proficient in the latest Android Jetpack Compose and experienced in utilizing Continuous Integration tools like Jenkins or Travis CI.
Possesses an advanced understanding of Kotlin and Java programming languages, complemented by expertise in CoreAR, OpenGL, and other 3D technologies.
Brings a robust background in location-based technologies, real-time computer vision, and modern GPU programming, including CUDA, OpenGL, and OpenCL.
Applies a range of architecture and design patterns, including Singleton, MVP, MVVM, and Dependency Injection (DI), alongside MVC.
Highly familiar with various integrated development environments (IDE) and frameworks, such as Dagger2, Bluetooth, Android Studio, Eclipse, Android Annotations, Robotium test framework, Espresso test framework, Mockito test framework, SpongyCastle cipher suites, Jenkins, JUnit unit testing, and Visual Studio App Center.
Adept at leveraging Android Jetpack components like ViewModel, LiveData, RoomDB, WorkManager, and Jetpack Navigation.
Demonstrates expertise in designing software for robotic or AR/VR devices, with experience in consuming REST services and utilizing GraphQL.
Proficient in augmented reality, encompassing modeling, coding, and creative processes, with familiarity in 3D model formats like GLB/USDZ/FBX.
Demonstrates proficiency in efficiently loading data and updating databases using Android frameworks and APIs such as Loaders, Kotlin Coroutines, and live data.
Expertise in native Android development, utilizing JDK & Android SDK, Android JNI, and NDK, along with IntelliJ IDE, to create high-performance applications.
Highly familiar with Android third-party libraries, including Volley, Retrofit, Picasso, YouTube, Location API, Maps View, Google View, Google Maps, PayPal, Stripe, Android Pay, Butterknife, Dagger, Google Wallet payments, and Android Annotations.
Skilled in testing and developing Android applications using Espresso, JUnit, MockK, Mockito, and simulated design patterns, adhering to Android Material Design guidelines and user experience best practices.
Experienced in Agile development teams utilizing Scrum, with proficiency in Android design patterns and development tools like Android Studio and Eclipse.
A quick learner, self-motivated, and adept at programming logic, with a keen ability to adapt to new technologies. An effective communicator within cross-functional teams using Agile/Scrum methodologies.
TECHNICAL SKILLS
Programming Languages: Kotlin, Java, C#, C/C++
Native Android Development: JDK, Android SDK, Android JNI, Android NDK, IntelliJ IDE
Development IDEs: Android Studio, Visual Studio, VS Code, NetBeans, Eclipse
UI/UX: Material Design, Material Dialogs, Calligraphy, Exo Player, Video View, Chromecast, Push Notifications
Architecture Design Patterns: MVVM, MVP, MVC, CLEAN
Design Patterns and Practices: Adapter, Factory, Builder, Singleton, Extension Function, Data Class, Handler, Parceler
Project Management: JIRA, Sketch, MP Android Chart
Software Development Methodologies: Agile, Scrum, Waterfall
Continuous Integration: Circle-CI, Jenkins, NDK, Firebase
Dependency Injection: Hilt, Dagger2, Android Annotations
Messaging: Urban Airship, Google Cloud Messaging
Databases: SQLite, RoomDB, Firebase Realtime DB, MySQL, MS SQL
Security: AES/Cipher, Spongy Castle
Debug/Testing/Performance Frameworks: JUnit, Espresso, Hugo, Robotium, Mockito, Leak Canary, Bluetooth BLE
Version Control: Git, GitHub, GitLab, TFS
Analytics: Crashlytics, Google Analytics, Mix panel
Networking/Web Services: REST, JSON, Retrofit, GSON, Ok HTTP, WebAPI2, Volley
Events: Event Bus, Otto
Threading: Rx Java, Intent Services, Handlers, Job Scheduler, Coroutines
Payment Processing: Braintree SDK, Papal, Stripe
WORK EXPERIENCE
Lead Android Developer Royal Caribean Cruises, Miami, FL August 2024 – Present
App Link: https://play.google.com/store/apps/details?id=com.rccl.royalcaribbean&hl=en-US
Project Summary: As the Lead Android Developer at Royal Caribbean Cruises, I spearheaded two Android development teams, driving high-quality code standards and resolving critical issues such as ANRs, crashes, and bugs. I was responsible for triaging tickets to prioritize engineering tasks, effectively balancing team capacity with input from cross-functional teams including Product and Analytics. I provided mentorship and support to Android developers, helping them navigate technical challenges, while conducting thorough code reviews to uphold code quality. I collaborated closely with backend and design teams to ensure seamless integration, while also planning, executing, and delivering projects on time for smooth and timely releases.
Lead the design and implementation of scalable, secure, and high-performance Android applications for vacation planning, cruise booking, loyalty management, and travel-related services.
Architect solutions that integrate complex app features such as flight and lodging booking, cruise itineraries, dining reservations, and onboard experience planning (e.g., shore excursions, spa reservations).
Develop and optimize features for cruise booking across global destinations (Europe, Alaska, the Caribbean, Asia).
Build and maintain functionalities like viewing and booking deals, purchasing beverage and internet packages, managing loyalty program (Crown & Anchor® Society), and exploring VIP passes and pre-cruise deals.
Implement modules for onboard experience management, such as checking in, safety briefings, and setting up daily planners for activities, shows, and dining.
Implemented Kotlin Multiplatform Mobile (KMM) solutions to facilitate code sharing between iOS and Android platforms, achieving a 40% reduction in cross-platform development efforts and improving feature consistency.
Established and optimized CI/CD workflows using Jenkins and GitHub Actions, streamlining deployment processes, enhancing deployment frequency by 50%, and minimizing integration issues.
Followed Agile Scrum processes, including daily standups, sprint planning, and backlog grooming, ensuring the timely and efficient completion of tasks.
Conducted thorough pull request reviews to ensure code quality, adherence to best practices, and efficient resolution of merge conflicts.
Assessed and prioritized issues based on severity and business impact, ensuring critical problems were addressed promptly.
Built and enhanced Android applications using both Java and Kotlin, implementing new features and optimizing existing functionality with Kotlin coroutines for asynchronous operations, enhancing the app’s responsiveness.
Transitioned app architecture from MVP to MVVM, utilizing ReactorVars for better separation of concerns and more efficient view management.
Optimized app performance using Android JetPack components like Room for persistent storage, ViewModel for UI-related data management, and WorkManager for background task scheduling.
Integrated Jetpack Compose to build modern, declarative UI components, improving UI consistency, performance, and maintainability.
Identified and removed outdated or unused libraries to streamline codebase and improve app performance and maintainability.
Suggested and implemented quick hotfixes for high-priority bugs or urgent issues to minimize disruption and maintain app stability.
Coordinated branch alignments across development, staging, and production environments to ensure smooth integrations and prevent code divergence.
Reviewed code and mentored developers through pull request feedback, ensuring adherence to Android best practices and clean coding standards.
Presented sprint demos to clients, showcasing completed work and aligning client expectations, while providing leadership in developer working sessions to accelerate project progress.
Acted as a liaison between the analytics, development, QA, and product management teams, leading cross-functional collaboration to align on analytics tasks, user feedback, and development priorities.
Presented demos of new features to stakeholders, showcasing functionality and gathering feedback for further improvements.
Created comprehensive tickets outlining bugs or issues, including reproduction steps and impact, to facilitate efficient resolution by the development team.
Actively participated in PI (Program Increment) planning, contributing to the strategic roadmap and outlining objectives for the upcoming quarter.
Stepped in to tackle complex or unresolved tasks that required advanced problem-solving and deep technical expertise to ensure project continuity.
Tech Stacks: Kotlin, Java, Kotlin Multiplatform Mobile (KMM), MVVM (Model-View-ViewModel), Jetpack Compose, Android Jetpack (Room, ViewModel, WorkManager), Agile Scrum, Jenkins, GitHub Actions, ReactorVars, Kotlin Coroutines, Git
Lead Android Developer Target Corporation, Minneapolis, Minnesota August 2023 – Jul 2024
App Link: https://play.google.com/store/apps/details?id=com.target.ui&gl=US
Project Summary: The Target Corporation app revolutionizes the shopping experience, enabling users to effortlessly shop and save from anywhere. With a focus on convenience and savings, the app offers a plethora of features designed to enhance the customer journey. As a passionate member of a tight-knit Android team at Target Corporation, I had the privilege of contributing to an innovative project aimed at enhancing the Target app's functionality and user experience.
Led the adoption and implementation of cutting-edge technologies, including MVVM data binding, Kotlin Coroutines, and Jetpack components like Paging and Nav Graph, while managing a four-person Android development team within an agile scrum environment
Participated in daily stand-ups, grooming sessions, and retro sessions to ensure effective communication and collaboration within the team.
Spearheaded the development of new features using modern frameworks like Compose, identified reusable elements, and implemented lazy layouts to ensure optimal performance and enhanced UI consistency.
Provided technical guidance and mentorship to a team of Android developers, fostering their professional growth and ensuring adherence to best practices and coding standards.
Designed and implemented UI for reviewing membership in Target’s In-home feature.
Integrated analytics tools like Yabas and Spelunk to monitor user behavior, log errors, and continuously optimize user interactions, while actively participating in sprint planning and demos to represent the team's progress and ensure alignment with project objectives and timelines.
Managed data streams asynchronously using Flow API and coordinated concurrency with coroutines.
Implemented unit testing using JUnit to maintain branch and code coverage above 80%.
Developed features using MVVM architecture and Hilt DI for reusability of classes and decoupling of dependencies.
Modified logic for the referring a friend feature to enable associate members to refer.
Designed UI specified in Figma / Zeplin to ensure alignment with design guidelines.
Monitored errors and user journey during on-call using Splunk and Queries for troubleshooting and optimization.
Implemented deep links for the Refer a Friend feature to enhance user engagement.
Facilitated effective communication and collaboration within the Android development team, ensuring alignment with cross-functional teams, including designers, backend developers, and QA testers.
Implemented efficient state management solutions in Flutter applications utilizing providers, Bloc, or Riverpod, to effectively manage application state, thereby guaranteeing smooth navigation and optimal performance.
Developed the MLP (Marketing Landing Program) for the In-home feature to facilitate user interaction and offer display.
Worked closely with Membership Management Care and Data Acquisition teams to develop UI enhancements and integrate analytics.
Provided assistance and mentorship to teammates during their onboarding process, resolving doubts and explaining Target features.
Actively participated in sprint demos to represent the progress of feature development, ensuring alignment with project objectives and timelines.
Conducted regular performance evaluations and provided constructive feedback to team members, recognizing achievements and identifying areas for improvement.
Tech Stacks: MVVM data binding, Kotlin Coroutines, Binding adapters, Koin dependency injection, Mockk for TDD techniques, Jetpack components: Paging, Nav Graph, Work Manager, Compose, GraphQL, Yabas, Spelunk, Flow API, Junit, Hilt DI, MVVM data binding, Splunk, MLP
Sr. Android Developer Goldman Sachs Bank, New York City, NY Jan 2022 – Jul 2023
App Link: https://play.google.com/store/apps/details?id=com.marcus.android&gl=US
Project Summary: At Goldman Sachs, I spearheaded a transformative project aimed at enhancing the Marcus platform's capabilities. Our mission was to empower users to grow and manage their savings effectively. Leveraging cutting-edge technologies and best practices, we developed a comprehensive solution that enables seamless navigation and intuitive user experiences
Develop a Layered Microservices Architecture and implement the MVVM clean code paradigm across three distinct layers: the presentation layer (front end), middleware layer, and backend layer.
Craft an intuitive user interface and seamless navigation experience utilizing Jetpack Compose, with a special focus on optimizing the payment process. Leverage the Kotlin Flow API for efficient backend communication.
Create a versatile UI module using Kotlin Compose multiplatform and build a Kotlin-based payment module for iOS using KMM coupled with Ktor, SQLDelight, and Kotlin serialization libraries.
Enhance accessibility features through the integration of Jetpack semantics API, particularly targeting the 'Rewards screen' and 'Main transactions' screen. Conduct thorough accessibility testing using tools such as the Google App scanner, Magnification gestures, and TalkBack.
Transition data storage solutions to DataStore, implementing both Preferences DataStore and Proto DataStore to accommodate various data types and ensure robustness.
Implement robust security measures including end-to-end encryption to safeguard communication and multi-factor authentication to fortify account security.
Leveraged React Native's component-based architecture and JavaScript to develop scalable and efficient mobile applications, incorporating native modules and libraries as needed for platform-specific functionalities.
Configure real-time push notification services through Azure to promptly notify users about any account changes or suspicious activities necessitating immediate attention.
Employ advanced tools to monitor connectivity status, meter connection, and optimize battery usage. Utilize Battery stats and Battery Historian to profile battery consumption and optimize for Doze and App Standby modes.
Utilized React Native's ecosystem and third-party libraries to implement advanced features and functionalities, optimizing performance and user experience on Android devices.
Facilitate efficient workflows using Bitbucket for version control and Jenkins for build management.
Integrate a proprietary transaction authentication library developed in C using JNI (Java Native Interface).
Adhere to industry best practices such as Test-Driven Development (TDD) with JUnit, Mockito, and Espresso for testing, alongside utilizing Jira for documentation, task tracking, and backlog management. Foster knowledge sharing through Confluence.
Managed the development lifecycle of React Native applications, from initial planning and prototyping to deployment and maintenance, ensuring timely delivery and adherence to project goals.
Nurture a collaborative culture within an Agile team, actively participating in scrums, sprint planning, and retrospectives.
Lead backlog refinement sessions to ensure alignment with Goldman Sachs' strategic objectives.
Utilize a diverse technology stack including Jetpack Compose, Azure, MongoDB, Express.js, Angular, Node.js, SonarQube, Django, Browser Stack, Bitbucket for version control, JIRA for ticketing, Gitflow, Bamboo, and Jenkins for CI/CD, alongside incorporating additional tools such as FICO2 and AI-powered chatbots for enhanced functionality.
Tech Stacks: MongoDB, Express.js, Angular, Jetpacks compose, Azure, Node.js, SonarQube, Jenkins, Azure, FICO2, AI-powered chatbot, Django, Browser Stack, Bitbucket as VCS, JIRA ticketing, Gitflow and Bamboo tool.
Sr. Android Developer American Airlines, Fort Worth, Texas Aug 2020 – Dec 2021
App Link: https://play.google.com/store/apps/details/?id=com.aa.android
Project Summary: At American Airlines, we embarked on a mission to revolutionize the travel experience through our mobile app. With our app, travelers are empowered with timely and relevant information, ensuring a seamless journey from start to finish. Whether you need a mobile boarding pass or want to locate the nearest Admirals Club® lounge, our app has you covered.
One of our key innovations is the dynamic home screen feature, which intuitively understands your travel journey and provides easy access to the tools you need at each stage. With personalized assistance at your fingertips, navigating your travel experience has never been easier.
Implemented core functionalities of the American Airlines app using Android Jetpack Core components to ensure robust development.
Designed and executed the app's architecture with a focus on scalability and maintainability, leveraging Android Architecture Components.
Integrated Firebase for real-time data synchronization, authentication, and cloud messaging, enhancing app functionality. Optimized data transfer within the app by implementing VersionedParcelable for efficient Parcelable structures. Streamlined development processes and ensured code integrity by utilizing annotations for metadata and code generation. Enhanced the user interface by developing and customizing UI widgets with Android Jetpack Widgets.
Ensured a consistent user experience across Android versions using AppCompat.
Integrated GCM for seamless push notifications and real-time communication.
Implemented AndroidX Activity for modern and efficient activity implementations and employed AndroidX Loader for efficient and asynchronous data loading.
Managed activity saved state to maintain optimal user experience during configuration changes.
Utilized core utilities from the Support Library for enhanced functionality and implemented Cursor Adapter for efficient data binding with Cursors.
Enhanced communication within the app by employing Local Broadcast Manager.
Implemented Support Library Print for improved printing functionality.
Efficiently parsed and serialized JSON data using GSON and FasterXML Jackson.
Enhanced code readability and maintainability by developing and optimizing components using Kotlin.
Implemented ViewPager2 for swipeable screens to enhance user navigation.
Scheduled background tasks efficiently using WorkManager and utilized JetBrains Annotations for enhanced code analysis and generation.
Leveraged IntelliJ IDEA for efficient development and debugging and integrated Picasso for efficient image loading and caching.
Handled HTTP requests effectively using Retrofit and Volley for network requests and data retrieval.
Enhanced web-based functionalities within the app by leveraging Chromium.
Ensured encoding and decoding functionalities using Apache Commons Codec.
Tech Stacks: Android Jetpack Core components. Android Architecture Components, Firebase, VersionedParcelable, Android Jetpack Widgets, AppCompat, Google Cloud Messaging. AndroidX Activity and Loader, Json, Kotlin, Picasso, Chromium
Sr. Android Developer Prudential Financial, Newark, New Jersey Sep 2018 – Jul 2020
App Link: https://play.google.com/store/apps/details?id=com.prudential.android.pgimevents&gl=US
Project Summary: At Prudential Financial, we developed the Prudential Events app with the aim of providing our attendees with a seamless and interactive experience during our events. This innovative app serves as a comprehensive guide, offering access to event agendas, speaker profiles, logistical information, and other pertinent details.
One of the standout features of the app is its interactivity, allowing attendees to actively engage with the event. Through the app, attendees can submit questions to speakers, participate in live polls, and share valuable feedback, fostering a sense of involvement and collaboration throughout the event.
Implementing reactive programming techniques using ReactiveX libraries such as RxJava and RxAndroid, leveraging a variety of operators for sequence manipulation and precise execution control with Schedulers to enhance financial application responsiveness.
Developing innovative and impactful features for Prudential Financial's Android applications, utilizing Java and Kotlin to deliver high-caliber solutions that consistently meet or exceed client expectations in the financial services sector.
Improving application performance by migrating existing Java code to Kotlin, enhancing code readability and maintainability, specifically tailored to Prudential Financial's stringent quality standards.
Transitioning from the conventional MVC pattern to modern Architecture Components—LiveData, ViewModel, and Room—to enhance the robustness and scalability of financial applications, ensuring they meet the dynamic needs of Prudential's clientele.
Creating user-centric home screen widgets for live financial market data streaming, enhancing usability and providing real-time insights to Prudential's customers.
Designing Video Upload Services with enhanced geo-aware capabilities for location-specific financial updates and market analysis, ensuring Prudential's clients stay informed.
Maintaining a hybrid codebase by integrating Java-based legacy code with the KTX Android Plugin for seamless feature integration and backward compatibility, tailored to Prudential Financial's unique technological landscape.
Configuring Google Cloud Messaging to facilitate real-time delivery of push notifications, including live market updates and financial alerts pertinent to Prudential's clients.
Implementing Dagger Dependency Injection to optimize code stability and facilitate interaction between legacy and new layers within Prudential Financial's applications.
Introducing custom and compound views to improve data visualization of financial metrics and enhance the user interface for Prudential's clients.
Implementing runtime permission management to ensure secure access to user financial data, facilitating personalized financial updates and analysis for Prudential's customers.
Managing XML data parsing from various financial APIs to ensure accurate processing and presentation of financial data within Prudential's applications.
Addressing synchronization issues, asynchronous API challenges, and enhancing offline features to continually improve application functionality and user experience, specifically tailored to Prudential Financial's financial services offerings.
Tech Stacks: ReactiveX (RxJava and RxAndroid, Java and Kotlin, LiveData, ViewModel, and Room, User-centric Home Screen Widgets, Google Cloud Messaging, Dagger Dependency Injection, Custom and Compound Views, XML Data Parsing.
Android Developer CVS Health, Woonsocket, RI Dec 2016 – Aug 2018
App Link: https://play.google.com/store/apps/details?id=com.cvs.launchers.cvs&hl=en_GB&gl=US
Project Summary: Our team focused on enhancing user experience and efficiency through the CVS Pharmacy® app, ensuring seamless navigation and convenient features. With a primary goal of simplifying the checkout process, we implemented innovative solutions:
Checking out. Easier.
oSeamlessly save with ExtraCare® and effortlessly pick up prescriptions with a single scan (simply tap “Show Card”).
oExperience streamlined 1-tap Rx checkout after the initial prescription prepayment, making future transactions hassle-free.
Through collaboration and dedication, we aimed to empower users with a more efficient and enjoyable pharmacy experience, aligning with CVS Health's commitment to customer satisfaction and well-being.
Collaborated with a cross-functional team, including 4 Android Developers, 4 QA professionals, and 3 UI/UX designers, within an Agile environment to develop the CVS Health Android application.
Led the transition of the code base from MVP to MVVM architecture, improving the app's structural design and maintainability for patients and healthcare providers. This facilitated easier management of medications, access to health records, appointment scheduling, and connectivity with the CVS Health network.
Played a key role in migrating from Java to Kotlin, optimizing the app's performance and leveraging Kotlin's language benefits to enhance the CVS Health mobile app.
Utilized the Flutter framework to develop the CVS Health mobile app for both Android and iOS platforms, ensuring a consistent user experience across devices and expanding CVS Health's digital reach.
Worked closely with backend developers to troubleshoot issues and create comprehensive documentation for multiple endpoints, ensuring seamless integration with CVS Health's backend systems.
Enhanced the Retrofit network API by implementing a Singleton approach, restructuring the callback strategy using Lifecycle Observables, and revamping the Retrofit network API to improve data retrieval and network performance for CVS Health users.
Utilized GitLab for version control within the CVS Project to enhance collaboration among the development team, enabling efficient tracking of changes in native Android development processes.
Managed code repositories, conducted thorough code reviews, and ensured continuous integration and deployment, maintaining high code quality and streamlining development workflows for the MyNissan mobile app.
Designed and implemented custom widgets and user interfaces in Flutter to improve usability and user experience, aligning with CVS Health's commitment to customer satisfaction.
Integrated push notifications, analytics, Crashlytics, and dynamic features using Firebase to enhance performance and user engagement, keeping CVS Health users informed and engaged with the app's features.
Developed an efficient cache strategy as part of the Retrofit client to optimize data retrieval and overall application performance, ensuring smooth and responsive user experiences for CVS Health app users.
Employed Charles Proxy to enhance network endpoint consumption performance for swift and efficient data retrieval and transfer, ensuring timely access to CVS Health services and information.
Collaborated on the login feature, implementing various sign-in options, and utilizing the device's fingerprint authentication feature for enhanced security and user convenience, prioritizing user privacy and security.
Conducted effective debugging using Logcat/DDMS, Crashlytics, Charles Proxy/Splunk for crash reports and network-related issues, ensuring smooth app performance and reliability for CVS Health users.
Implemented XML for seamless data exchange between the CVS Health app and external systems, facilitating effective communication and integration with healthcare facilities and personnel, supporting CVS Health's mission to improve healthcare access and coordination.
Implemented robust security measures, including AWS Identity and Access Management (IAM) and encryption protocols, to safeguard sensitive user data and adhere to healthcare regulatory standards, ensuring the confidentiality and integrity of CVS Health user data.
Leveraged the Android Plot API for visualizing multiple data sets from the server, improving data analysis and presentation, enabling CVS Health users to make informed decisions about their health and well-being.
Created multiple logging processes using the Logger API to identify investment flow and monitor the application's functionality efficiently, ensuring the reliability and performance of the CVS Health app.
Addressed code issues to support multiple screen sizes and developed multiple layout qualifiers, ensuring optimal app performance across various devices and screen resolutions, providing a seamless user experience for CVS Health app users.
Developed Custom Views to streamline project development and increase code reusability across different sections of the application, reducing redundancy and enhancing efficiency.
Tech Stack: Agile, MVP, MVVM, Java, Kotlin, Flutter, Retrofit, Singleton, Lifecycle Observables, Firebase, Charles Proxy, Logcat/DDMS, XML, AWS IAM, Android Plot API, Logger API, Custom Views
Android Developer Nissan, Franklin, Tennessee Jan 2014 – Nov 2016
App Link: https://play.google.com/store/apps/details?id=com.nissan.mynissan
Project Summary: Our team has meticulously crafted the MyNissan mobile app, introducing cutting-edge features and seamlessly integrating the latest Android libraries. From robust payment gateways to intuitive navigation and captivating UI/UX design, every detail is tailored for an unparalleled user experience. With an Agile development approach and continuous integration, coupled with advanced features like Google Fit SDK