Staff iOS Developer

Kinga
Wilczek

Work experience

Viessmann | August 2020 - present

Projects

Business description

The main purpose of the application is to allow users to easily and remotely manage their heating systems.

Architecture

MVP + Coordinators (after refactor) in the older part of the app, the newest part uses MVVM + Coordinators and configurators for Rx bindings.

Technologies

App - Swift 5.x, iOS 12+, Unit Tests (Quick, Nimble, RxBlocking), Modularized (many frameworks created to separate features)

Integrations - Google Maps, Firebase, PhraseApp Frameworks - SnapKit, SwiftLint, CocoaPods-keys, RxSwift (and more of Rx family), Swinject, Alamofire, DrawerView and more - all managed by CocoaPods Tools - Git, Jira, AppStore, Postman (mainly documentation), Zeplin, Bundler, xUnique.

Challenges

A code with a long history and a big technical debt. It was characterized by a non-uniform navigation system between the screens. It was a big challenge to introduce Coordinators, especially considering that the application consists of over two hundred screens and uses storyboards in conjunction with the Swinject-storyboard framework. The second big challenge was to bring back native navigation. The latest challenge was to introduce a completely new architecture for the newest part of the app (new tab). The new architecture had to be scalable enough to support complex conversions of various types of units (e.g. power, energy) and presenting them using an own framework for charts.

If I were to write some parts of the project again what would I change?

I Would put more emphasis on writing different types of tests.

Droids on Roids | April 2017 - July 2020

Projects

Business description

The main goal is selling products in an easy way via mobile, but the app also contains support for a loyalty program. The app is currently released on the AppStore, but new features are still being planned and developed. The app is targeted for over 1 million users.

Architecture

VIPER-based architecture with coordinators used for navigation instead of routers.

Technologies

App - Swift 5.x, iOS 11.2+, Unit Tests (XCTests), Modularized (many frameworks created to separate features), Native Networking Layer Integrations - Google Maps, Synerise, Firebase, PayU, AppsFlyer, Localise, Facebook Frameworks - SnapKit, SwiftLint, CocoaPods-keys, Sourcery, Swifter - all managed by CocoaPods Tools - Git, Bistrise, Jira, AppCenter, AppStore, Postman (mainly documentation), Zeplin, Bundler.

Challenges

A fully customizable home screen obtained from a backend server containing many components loaded from various sources depending on which the UI is displayed. Support for many markets via remotely stored configurations for each of them.

If I were to write some parts of the project again what would I change?

I would use coordinators per module (like in regular VIPER) instead of per each major part of the flow. I would create more decoupled networking layers with better dependency injection because as it is, it is hard to remove a singleton character.

Business description

The app was a requirement of a franchise contract. It was aimed to support only one market (Polish). Mainly focused on selling products in an easy way.

Architecture

MVVM-based architecture with coordinators used for navigation in the app.

Technologies

App - Swift 4.x, iOS 11+, Unit Tests (XCTests) Integrations - Google, Firebase, Facebook, PayU, Frameworks - SwiftLint, Moya, Nuke - all managed by CocoaPods. Tools - Git, Bistrise, Jira, AppCenter, AppStore, Zeplin.

Challenges

Just regular m-commerce

If I were to write some parts of the project again what would I change?

I would allow for better dependency injection, improve MVVM architecture and improve app monitoring especially for backend requests (crashlytics).

Business description

An app created during practice to support Let Swift community.

Architecture

MVVM-based architecture with Rx-like observables system and coordinators used for navigation in the app.

Technologies

App - Swift 3.x, iOS 10.3+, Unit Tests (XCTests, only for observables) Integrations - Facebook, HockeyApp Frameworks - SwiftLint, Alamofire, Fabric, and more - all managed by CocoaPods Tools - Git, Bistrise, Jira, HockeyApp, Zeplin

Challenges

The biggest challenge was to create Rx-like table view delegate and data source.

If I were to write some parts of the project again what would I change?

I would make the app decoupled and much more open for dependency injection and tests.

Human Device | March 2016 - March 2017

Projects

Business description

An app for ordering food for single and grouped users

Architecture

MVC

Technologies

App - Swift 2.4, iOS 9+ Integrations - Google Maps, GCM Frameworks - Alamofire Tools - Git, Gitlab, Postman

Challenges

Tracking bugs in massive view controllers.

I would consider another architecture based on business requirements.

I would consider another architecture based on business requirements.

Business description

An app for

Architecture

MVC

Technologies

App - Swift 2.4, iOS 9+ Integrations - Google Maps, GCM Frameworks - Alamofire Tools - Git, Gitlab, Postman

Challenges

Communication with barcode scanners.

If I were to write some parts of the project again what would I change?

I would consider another architecture based on business requirements.