Passion can take many forms. From the drive we get when we discover something we love, to the desire of becoming better professionals by using all our resources to make the highest quality products out there. Sounds quite idealistic, doesn’t it? This is the story of how a team of developers with vision and grit grew together, alongside their product, and managed to inspire an entire community.
The year is 2014. A small team of young, yet courageous developers took on a project that has grown under their eyes: OK, an innovative app that aimed to disrupt the retail industry and provide a successful experience to the end-user. Almost 6 years later, their goal has been reached: they went from zero to thousands of satisfied users
What is OK?
In a nutshell, the OK App is designed to keep all your debit and discount cards in one place while also allowing you to pay for your purchases with just one quick scan and a simple OK. The app addresses the needs of both consumers and merchants, seamlessly integrating authentication, marketing and payment into a consistent experience across the board. Anything you can find in your wallet can be integrated into OK: coupons, tickets, receipts, gift cards, punch cards, payment cards, IDs. The platform is built around a REST API, which does the heavy lifting so that the client apps can focus on providing a smooth user experience. But more importantly, the platform is built to cover the needs of all types of people.
For example, if you are a person that has many loyalty cards, you can use it only for storing them, and if you make a transaction with a payment account added in the app, the loyalty card is detected automatically. If you are a shopaholic (like many of us) and you appreciate taking advantage of available discounts, this is the app where you can gather all the information you need without worrying that you might lose your coupons or leave them at home.
Plus, when doing payments with the OK App, the discounts are selected for you automatically from the app. Or, if you are a person that likes to go to events, the OK App enables a very fast way of buying and keeping tickets for many events, and you can share them with your friends as well.
OK aspires to be not just a mobile wallet, but an entire assistant of the user throughout his/her shopping experience. It has an attractive design, it is easy to use and it strives to continuously add new and creative features.
Yet further to the delivery of a pixel-perfect product that fulfills the standards of the industry and of the client, the team’s development is a success story in itself. The Romanian development team has grown organically: from two passionate colleagues to sixteen teammates, each bringing their ideas and desire to improve the product to the mix.
The road to being OK
The application started small. From the beginning, the team knew that they would need to adopt the latest technologies to make the product face a market that is so competitive. As the project and app grew, new people joined the team, and the mixture of perspectives called for new strategies. The end goal was to make the client’s vision, of developing OK into the best all-in-one mobile wallet solution, come true.
It began with open and effective communication. Learning how to deliver feedback within the team resulted in productive reviews that perfected the code, and good chemistry, which created an intimate and safe atmosphere, where team members could speak their mind and learn from each other.
The team members constantly analyzed their processes and results, adapting the way they worked based on the conclusions. They took each challenge as an opportunity to develop their knowledge and culture, stepped in to help each other with technical advice or moral support, and celebrated their successes together.
In this close setting, there was no hierarchy. From the very beginning, the client and the developers became one team that worked together like a well-oiled machine. Finding solutions rather than admitting defeat was the recipe for a successful collaboration, without any ego in bringing ideas to the table. The team all appreciated innovative solutions, regardless of who came up with them, whether it was the client or the team.
Brainstorming was the code word, and every idea was on the board. The team and the client would discuss openly anything that was remotely unclear, to refine it before committing to it. And the fact that the Dutch client team was willing to frequently travel to Iasi to have face-to-face discussions helped cement the partnership. The connection became real, the relationship grew closer, it brought confidence to all team members and made all the discussions and sessions (from roadmap planning, refining new functionalities or reviewing the current implementation) so much easier.
The client team also showed complete trust in the development team, and their input on what they consider is best for the product was taken into consideration, and not just pushed to the side. This added to the confidence of the development team going beyond being just a code-writing machine, becoming an important piece of the project puzzle, and taking on the responsibility to best prioritize the needs of the project.
This innovative spirit translated into the technologies they now use, which are all modern, as is the spirit of the application. With mobile users so eager nowadays for a seamless experience, the developers knew they had to bring their A-game into the mix. Our colleagues on Android use Kotlin, Java and RxJava, all on top of an MVVM architecture, and our iOS colleagues use Objective-C with an ever-growing Swift codebase.
The team’s Java web developers enjoy working with features from Java 8, cool features from Spring framework (such as Spring Boot, Spring Data, Spring Security and more) and MySQL RDS. Additionally, they have experience with RESTful services, Junit, AWS SDKs, JMS. When it comes to client-side development, they use Angular 7, Webpack, Jasmine and, of course, TypeScript.
Security and quality are two strong values in the project and team. Sonar, FindBugs, and the Lint suite are their best friends in the development activity, and the client team performs penetration-testing sessions to check the issues in the system and fix them with the help of the development team, to create a strong application and user experience.
Since the team strongly believes in fully tested applications for their users, there is a high coverage of automated tests for the product: API tests using JUnit5, REST Assured and handlebars and mobile UI tests making use of Appium server, REST Assured and JUnit 4. The quality assurance team grew together with the project, in size and skills alike, helping each other become better testers and maintain the standards of the product.
This entire development experience did not happen overnight, yet luckily, a complex project such as OK is a nice ‘get out of your comfort zone’ opportunity. Faced with challenges, you might be tempted to quit, yet this well-organized team used its high values and dedication to learn new technologies and new industries, from Scrum and Agile to processes, workflows and business. The client team always supported and stressed the idea of having new technologies and infrastructure, which motivated the team to support each other in learning and becoming better professionals.
We are all OK
A tight-knit group of iOS, Android and web developers, as well as QA engineers, has helped shape what is now OK, and with this process, a story was built. The story of experienced developers that perfected their skills and knowledge. The story of colleagues that started their first job with Maxcode and OK 6 years ago, and grew into senior developers that hold presentations at conferences and mentor new trainees. Of team members that started as interns, recognized the potential in the application and grew into accomplished developers and testers together with OK. Last but not least, the story of a group of people that helped build more than just a team and product, they created an entire mindset within the company.
The mindset is that of creating a family within a project, with the result of bringing fresh energy and desire to deliver high quality results every single time, taking advantage of the immense and diverse pool of knowledge at their disposal. This was possible due to the distributed nature of their extended team positioned in different corners of Europe, yet all united under the same goal.
The OK team learned that with motivation, the right amount of work and the proper tools they can do anything, for example, from performance testing to building a scalable infrastructure in AWS from scratch, or optimizing entire flows of the project with visible results for the application and user interaction. They took challenges as ways to test themselves and their limits to discover new hidden talents.
The lessons they learned they are now willing to share with their peers, to help and inspire them in times of challenge. Here are a few pointers, to help you on your road to success:
- Even if you think you understood a feature, ask again. Just in case you missed something;
- Rules are not made for breaking, they are created for preventing chaos in the time of need;
- ‘Default to clarity’ (clearly and efficiently communicating and writing code, asking the extra question) and ‘Default to transparency’ (being open in sharing your beliefs and decisions, giving constructive feedback, being honest) are the pillars of creating a united team;
- You can only go so far relying only on yourself, so having the right people around you is vital;
- Mistakes are normal and a necessary part of moving forward and evolving.
OK is now bigger than they could have imagined 6 years ago when the first ideas and drafts were taking shape. The relationship they have built with the client, the valuable experience they have offered to the OK users and the family that they have created within the team stand as testimonials that they are doing the right thing.