Roman Petrov, Developer in Vancouver, BC, Canada
Roman is available for hire
Hire Roman

Roman Petrov

Verified Expert  in Engineering

Software Developer

Location
Vancouver, BC, Canada
Toptal Member Since
September 25, 2019

Romain is a software developer with 17 years of professional experience. He's worked with many languages and technologies throughout his career—this solid foundation in computer science helps him learn new ones quickly. Roman's current main specialization is mobile application development. As a developer, he likes clean code, good architecture, and challenging tasks.

Portfolio

Patron Technology
Class-based OOP, Object-oriented Programming (OOP), Git, CocoaPods, Cocoa Touch...
GXB Development
Figma, Functional Programming, Team Management, Web Audio API...
Omega-R
AVFoundation, Core Animation, Core Location, Accelerate, Core Audio, Alamofire...

Experience

Availability

Part-time

Preferred Environment

Visual Studio Code (VS Code), Git, Android Studio, Xcode, MacOS

The most amazing...

...project I've worked on was a guitar training application where I developed a performance evaluation module.

Work Experience

iOS Developer

2019 - 2020
Patron Technology
  • Supported the big mobile application with a lot of legacy code.
  • Wrote the new Spotify SDK integration code.
  • Suggested improvements for the onboarding process for the new team members.
  • Upgraded one of the company's applications to Swift 5.
Technologies: Class-based OOP, Object-oriented Programming (OOP), Git, CocoaPods, Cocoa Touch, Xcode, iOS, Spotify, UIKit, Objective-C, Swift

Team Leader

2016 - 2019
GXB Development
  • Developed a robust and configurable Lua library for presenting tests.
  • Implemented video calls on a web application.
  • Helped with UX design of the main company project.
  • Developed a collaborative whiteboard module in a mobile application using the Flutter framework.
  • Built a chat module for a mobile application using the Flutter framework.
Technologies: Figma, Functional Programming, Team Management, Web Audio API, Prototype-based OOP, Unit Testing, Object-oriented Design (OOD), Object-relational Mapping (ORM), Class-based OOP, Object-oriented Programming (OOP), RxDart, OOP Designs, Android, Git, PostgreSQL, UX Design, Agile Software Development, Less, Sass, Immutable.js, Redux, Visual Studio Code (VS Code), Android Studio, HTML5, CSS, CocoaPods, Cocoa Touch, Web, Xcode, Project Management, Flutter, Dart, Swift, Lua, React, JavaScript

CTO

2012 - 2016
Omega-R
  • Led a development team of up to 25 members.
  • Created a real-time performance evaluation module for a guitar training mobile application.
  • Developed an offline storage and synchronization module for an internal mobile app for a bank's top managers.
  • Developed and maintained coding standards.
  • Created detailed technical documentation for various projects.
Technologies: AVFoundation, Core Animation, Core Location, Accelerate, Core Audio, Alamofire, XCTest, Team Management, Unit Testing, UIKit, Core Data, Object-oriented Design (OOD), Object-relational Mapping (ORM), Class-based OOP, OOP Designs, Facebook API, Git, UX Design, Agile Software Development, StoreKit, CocoaPods, Cocoa Touch, Web, Xcode, Project Management, iOS, Swift, Objective-C

Software Engineer

2007 - 2010
Team Force
  • Developed a collection of arcade games for social networks.
  • Worked on a mobile app for automatic emergency calls for the Blackberry platform.
  • Developed different modules for a poker portal built with Drupal.
Technologies: Team Management, Object-relational Mapping (ORM), Class-based OOP, Object-oriented Programming (OOP), HTML5, Web, J2ME, MySQL, JavaScript, HTML, PHP

Acroplia

Acroplia is an education, team communication, and collaboration startup.

As a developer, I worked on various parts of the app:
• Implemented and fully covered with unit tests and a robust test passing library in Lua. The back end, iOS app, and Android app use this library.
• Developed the initial version of the test passing front-end code using React and Redux.
• Built a collaborative whiteboard module for the mobile application (Flutter).
• Created a chat module for the mobile app (Flutter).

As a team leader, I had the following responsibilities:
• Led a distributed team of developers (up to ten members).
• Managed project backlog.
• Helped to define project priorities.
• Helped with UX design.
• Participated in meetings with potential customers.

Guitarability (iPad App)

Guitarability was a guitar training application for the iPad. It contained over a thousand exercises on different aspects of guitar playing (rhythm, picking, strumming, legato, scales, bends, and other). Guitarability was a “dream project” for me because I’m a self-taught guitar player and I’m interested in digital signal processing, but I hadn’t had a chance to apply my knowledge of DSP in a commercial project. I managed this project and developed one of the core modules—a performance evaluation module.

The module has two parts: timing analyzer and polyphonic pitch detector. The most challenging one was the pitch detector. The application had to recognize not only single notes but chords too. Polyphonic pitch detection is a difficult task; there’s no “one and only true way” to do it; there are no commercial-grade open-source implementations.

Another challenge was that my module had to work in real-time on the iPad. I managed to get a 600% performance boost compared to the first implementation, which couldn’t even work in real-time. This performance improvement allowed the addition of smooth animations and video recording. I achieved the performance boost mostly by math optimizations.

Pistol Instructor Marksmanship Program (iOS App)

An iOS application for people learning to shoot a pistol.

I helped to redesign the UI of the application. The redesign focused on improved usability and increased retention rates. I also implemented a timing measurement module for different aspects of pistol shooting (used accelerometer data).

Make a Decision (iOS App)

A simple application that helped you to make a decision between multiple variants by assessing them on a number of criteria (a decision matrix).

I redesigned the UI of the app which significantly simplified the process of filling a decision matrix, which increased the app install and retention rate. I also implemented this new design version.

My911 (Mobile App)

A mobile application for iOS, Android, and Blackberry platforms.

App Features:
• Automatic calls to 911 in case of an emergency like falling or a car crash (used accelerometer to detect such events).
• Notifications about coming natural disasters based on a user's geographic position.

I led the development team and also redesigned the user interface of the app, which increased user retention and install rates.

Languages

Objective-C, Swift, JavaScript, Lua, Dart, HTML5, CSS, HTML, PHP, SCSS, Sass, Less, GLSL, TypeScript

Frameworks

Core Data, Flutter, UIKit, Defold, Accelerate, Redux, XCTest, Core Location, StoreKit, Cocoa Touch, React Native, Core Text, AudioUnit, Yii

Libraries/APIs

Web Audio API, React, Core Audio, WebGL, Core Animation, Alamofire, CocoaPods, Immutable.js, Facebook API, Core Graphics, Core Image, OpenGL ES, RxSwift, ShareKit

Tools

Xcode, Figma, Android Studio, Git, Sketch

Paradigms

Object-oriented Design (OOD), Agile Software Development, Unit Testing, Object-oriented Programming (OOP), Prototype-based OOP, Class-based OOP, Object-relational Mapping (ORM), Functional Programming, UX Design

Platforms

iOS, Web, Visual Studio Code (VS Code), J2ME, MacOS, Firebase, Android

Industry Expertise

Project Management

Other

OOP Designs, RxDart, Team Management, Spotify, AVFoundation, Carthage, ShareDB

Storage

MySQL, PostgreSQL, Realm

1999 - 2004

Master's Degree in Computer Science

Mari State Technical University - Yoshkar-Ola, Russia

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring