Flutter Developer
2019 - 2021TeamGo Inc.- Worked on SOLID-principle-based architecture for the scalable and modular cross-platform solution.
- Worked on multi-module solution structure that enables different projects to use shared submodules.
- Did extensive unit testing coverage with the isolated setup-execution-verification approach.
Technologies: FlutterFlutter Developer
2019 - 2021School Village- Acted as a sole developer for the multi-tenant Android and iOS app solution for VillageSafety brands.
- Established and maintained CI solution with Codemagic.
- Did email and password authentication with FirebaseAuth and user records with Firestore.
Technologies: FlutterAndroid/iOS Developer
2018 - 2018LotusFlare- Applied clean architecture to native Android and iOS apps using three-tier separation. The bottom tier is the data tier and has no knowledge of other tiers. The middle tier is the domain tier that transforms raw data and applies business logic. The top tier is a presentation layer that contains native UI and user-facing logic.
- Wrote strongly-templated unit tests. Each test contained an explicit set up, calls under test, and explicit assertions or verifications. Each part was separated by a single empty line-break so that developers could easily spot what's being tested.
- Created and integrated RxJava wrappers for a clean architecture approach.
- Code-reviewed every PR from other team members. Every PR had to go through automated unit testing for functional verification as well as through manual code review for development transparency and continuity purposes.
- Collaborated using the Git feature branch workflow. Each developer worked on his/her own branch. After the development for a feature has been completed, he/she would create a PR to merge that feature branch into master. After a code review approval, the branch would then be merged and deleted.
Technologies: XCTest, JUnit, RxSwift, Swift, iOS, RxJava, Java, AndroidAndroid/iOS Developer
2016 - 2018Novomatic Lottery Solutions- Checked the MVP architecture for Android and iOS apps that it conformed to the separation-of-concerns principle.
- Performed unit testing with JUnit and XCTest test cases. Since we've used an MVP design pattern, it allowed us to mock any component while testing only the single implementation.
- Implemented protocol-oriented programming. Using new capabilities and practices in Swift language, protocol-oriented programming allows for greater flexibility and a higher level of abstraction than OOP.
- Configured and integrated Xcode server bots for continuous integration; also successfully configured a CI pipeline using native Xcode Server toolchain.
- Integrated Fastlane for faster and easier code-signing for iOS apps.
- Adopted Scrum (Agile) methodology. We used a scaled agile framework (SAFe) and had daily standup meetings and biweekly sprints with retrospectives and reviews.
Technologies: XCTest, JUnit, RxSwift, Swift, iOS, RxJava, Java, AndroidMobile and Web Developer
2014 - 2015Spart Agency- Developed social apps which focused on user-generated content. All the apps also integrated social networks (like Facebook or Twitter) for sharing app content or inviting friends to use this app.
- Set up GCM (now FCM) on both back-end and Android side; used Java on both back-end (using utility libraries for GCM) and client side (using Android SDK).
- Implemented the pair programming approach for both development continuity purposes and for exchanging knowledge and practices when the team was in the forming stage.
- Implemented audio playback on the Android platform. The media player was running inside a Service that was controlled through broadcasts from a content-rich notification.
- Collaborated remotely since part of the team was in France and part of the team was in Serbia. From time to time, there was a need to do the planning or product development through online meetings and synchronization.
Technologies: PHP, CSS, HTML, Java, AndroidData Collection and Labeling Associate
2014 - 2014Microsoft Development Center Serbia- Worked with a diverse student team. Everyone in the team had a unique background including philology, engineering, business as well as forestry, math, and so on.
- Collaborated remotely as part of a team that was contributing to Office products (namely OfficeLens application) which meant we also had to synchronize with teams in Redmond and other Microsoft offices.
- Evaluated the performance of neural network data processing. The team that I was part of was charged with labeling data and reviewing neural network output for previously labeled data.
- Validated the results of Microsoft's OCR technology.
- Reviewed and evaluated Microsoft products. I've submitted verbal and written feedbacks on upcoming Microsoft products that were in development and not published yet.
Technologies: Tools, Visual Studio