Finnish retail giant Kesko’s K-Ruoka service – which I’ve worked on for a year and a half now – is no exception. My name is Tomy Salminen and this post is a behind-the-scenes look at what it’s been like building what has recently become one of the fastest-growing apps in Finland, and what I’ve learned along the way.
Now, when I introduce myself, I typically say I’m a full stack developer. But in reality, having worked in projects using native, React Native and lately Xamarin, I consider myself a mobile developer first.
I’m currently working on the K-Ruoka mobile client (find it on App Store and Google Play Store), and also managing some of its backing services. The app started out as a tool for making grocery shopping more convenient, but has since evolved to serve many more purposes – online grocery shopping, e-receipts, collecting stamps into digital loyalty coupons, and monitoring your personal buying habits, to name a few. The app itself has reached quite the audience within Finland, receiving hundreds of thousands sessions and unique users on a weekly basis.
The ghost of a mobile OS past
The client itself is built on Xamarin, and when the development started back in the day, there wasn’t really an alternative. The desired time-to-market, combined with a small development team necessitated a cross-platform framework, and the requirement for a Windows Phone client narrowed the number of viable options down to exactly one. So Xamarin it was.
I joined the project in late 2018, well into the lifecycle of the application. Having never used Xamarin – and having heard a bunch of horror stories about the framework – I was very conservative with my expectations. In my mind, the tech choice is always a key success factor, and at a quick glance, what had initially been the only choice, was considered a suboptimal framework by 2018 standards – especially given that supporting Windows Phone was no longer a requirement. It was hard for me to imagine how the project could remain successful.
Turns out I was wrong. Partially, at least. While Xamarin is indeed the cornerstone of our woes and worries sometimes (looking at you, regressions in the framework unexpectedly breaking our production builds), the project’s success does not, for the large part, depend on the framework.
Instead, I’ve come to realize that the most important success factor is the people driving the project forward. Smart feature scoping, realistic deadlines, acknowledging Xamarin’s limitations and adjusting accordingly, and a human-centric team instead of a delivery-centric one, etc. easily eclipse any tech choice in importance. A badly managed team will have a hard time delivering a great product even with the best tools for the job, but a brilliantly managed team can make even a suboptimal tech work.
At Futurice we talk a lot about co-creation. Over the course of this project, I think I’ve finally figured out what we really mean by it.