Snow Patrol - a Danish app with Polish impact
At ProData Consult’s Nearshoring Center in Warsaw, two ProData consultants have developed an intelligent app in collaboration with LE34 that lets the Danish municipalities track snow removal live during the winter months. In this interview, the developers explain how the choice of database and programming language was decisive for the creation of a successful app.
Interview with Michal Stawarz and Przemysław Pańczyk, app developers at ProData Consult, working for LE34.
In collaboration with their client LE34, iOS developer Michal Stawarz and Android developer Przemysław Pańczyk have developed Snow Patrol, a brand new app. The app is designed for Danish municipalities and their employees to enable them to track the progress of snow ploughs live in connection with snow removal work in the winter months. With the new Snow Patrol app, the municipalities can get live data on the snow ploughs, which makes administrative coordination simpler and more efficient. At the same time, it gives drivers a quick, easy overview of their snow removal routes and lets them document their work in relation to the municipality. The entire foundation of the app is based on live data.
From ProData Consult’s Nearshoring Center in Warsaw, the two Polish developers were given responsibility for the app project – from idea to finished project – in mid-2016. And even though a Snow Patrol app already existed at the beginning of the project, the developers quickly realized that starting over was the smartest move for the client.
“The existing app was created a few years ago, which was a burden as the technology already was outdated. To understand the product better, we performed a code analysis that indicated the project would gain a lot from deep code refactoring. However, that process would be extremely time consuming and wouldn't guarantee the stability and safety that we wanted to achieve,” explains Stawarz.
Not only was starting over the best choice in relation to the quality of the project, the two developers also agreed that it would also be more efficient.
“Making the necessary improvements to the existing app would take much longer than building a new app from the bottom up. So we recommended starting the new project from scratch,” says Pańczyk.
LE34 backed up their recommendation, which meant that the two developers were given the green light to start the project. And less than three and a half months passed from project initiation to the presentation of the finished app, which meant that the app was ready to be used in the winter of 2016/17.
Put yourself in the user’s place
To get the project off to a good start, the app developers began by laying a firm foundation of preparation. Precisely the initial phase of a project is decisive to its success, according to the two developers. In particular, they spent time and energy on putting themselves in the place of the user and the business, because it was crucial to understand the client’s requirements and expectations of the app, in addition to the use scenarios the app would be functioning in.
“We had to understand what situations the app would be used in, and how to take that into account in the development process,” explains Stawarz.
And it was precisely the process of understanding the user and the business which led the two Polish developers to two important conclusions which were decisive for the app’s technical requirements. The most important conclusion was that the snow ploughs often worked in areas with low or no internet connectivity. This meant that in order for the app to become a success, it was absolutely necessary for it to be able to report live data even in situations with bad or no internet connectivity – otherwise, it would be useless.
The preparatory phase also revealed that the app would be used while the driver was sitting in the snow plough. This meant that it had to be easily accessible, quick to use and extremely simple – which put demands on UX and UI. Pańczyk explains:
“The user couldn’t spend too much time using the app. It had to be simple and easy to use. The less time the user spends on the app, the more he or she can focus on the work.”
The choice of database was the key
The largest challenge in getting the app to operate as intended was making sure that data would be stored in spite of a bad internet connection. This meant that the developers had to find a solution which could compensate for a bad connection. The choice fell on a Realm database solution. A solution which unlike traditional server-side databases, can be used directly in an iOS or Android app. This makes it possible to store data and queries locally on the device.
“With Realm, we could solve the biggest challenge with the app and ensure that data was stored safely and consistently, even without an internet connection,” explains Pańczyk:
“All you need is a GPS. The app continually collects data from it and stores it until it becomes possible to synchronize. The Realm database will contain the data until the connection allows the app to synchronize with the backend.”
And even though Realm is not the most obvious choice, as it is not bases on SQL, it provided the developers with a common platform – because Realm is compatible with both iOS and Android.
“When developing an app, you want to use tools that are compatible with both iOS and Android. And Realm is. When we implemented something on one platform, we could quickly and easily transfer it to the other platform. This made the development process more effective,” explains Stawarz.
Based on state-of-the-art technology
The app developers wanted to base the code for the app on new, state-of-the-art programming languages – not only to improve quality, but also to future-proof the app. With these considerations in mind, they chose Apple’s programming language Swift for iOS, and the programming language Kotlin for Android.
For Pańczyk, who was responsible for the Android development, Kotlin was an obvious choice, despite being a relatively new programming language:
“Kotlin is a state-of-the-art programming language which is based on and 100% interoperable with Java. Programming on Android with Java only allows us to use features available in Java 1.7, while using Kotlin opens up to Java 1.8 and much more.”
As a result, Kotlin gave the developers more options. The new programming language was also developed with Android in mind, which meant it was an obvious choice for the project. So despite having to work with version 1.0 of the language, which meant that the Android developer had to figure out some ‘work arounds’ in the course of the project, the advantages of Kotlin definitely outweighed its limitations.
And according to the Michal Stawarz, the choice of Apple’s own programming language Swift for the project was motivated by many of the same considerations:
“With Swift, you get access to new language features that has not been available in its predecessor - Objective-C. The language puts emphasis on strong typing that makes code safer and helps unveil code issues earlier. Another great thing is that Swift evolves constantly by incorporating new ideas.”
But the constant development of Swift also presented challenges. Occasional language updates can cause the existing Swift code base to become outdated, requiring additional work from the developers.
“When choosing Swift, you have to make sure that you understand how evolving the language is at the time. With each major update, you will have to spend some time to refactor your code to keep it in line with the current syntax. However, breaking changes are less frequent now as the language become more mature.”
And although both languages are relatively new and untried, both developers see them as having such major advantages that they would make the same choice again:
“The example of the Snow Patrol app proves, that going with new technologies does not have to be seen as a threat to stability or quality of the product. The described technology stack, helped us deliver an app that is safe, future-proof and brings great value to both LE34 and their customers”, concludes Stawarz.
Swift
- Swift is a programming language developed by Apple for creating apps for iOS, Apple TV, Apple Watch and Mac programs
- SWIFT was introduced in 2014
- Most recent version launched is SWIFT 3.1.1
Kotlin
- Kotlin 1.0 was introduced on 15 February 2016
- Jetbrains is the company behind Kotlin
- Kotlin is 100% interoperable with Java
- Most recent version launched is version 1.1.2
The consultants’ perspective on collaboration across borders
Both Michal Stawarz and Przemysław Pańczyk have been working for and in collaboration with LE34 as consultants through ProData Consult for some time. During this time, they have learned a lot about how to develop the optimal collaboration with a client/employer located in another country. We’ve gathered their best advice here:
- Getting started – The beginning of a new project is crucial to its success. Take the time to talk through the goals of the project and brainstorm together about ideas and possible solutions to the challenges of the project.
- Understand the business – It’s important for the developers to understand the business and how it operates. A thorough introduction to the business gives the developers a better foundation for providing the right input and making the right choices in the development process.
- Communication – Make sure that it’s possible to communicate on a daily basis. Use one of the available systems, like Slack or Hangout. Categorize conversations by subject, so that everyone knows what information is relevant for them.
- Documentation – It’s a good idea to write down requirements and expectations to give the developers something concrete to relate to. It’s also a good idea to make sure to provide good documentation to whoever will be taking over the work later.
- Don’t make assumptions – Make sure to align your expectations with the developers, and don’t make assumptions on each other’s behalf.