A new level of support and guidance during pregnancy… It sounds innovative, doesn’t it? A team of unique experts from Košice have had the opportunity to participate in its development and maintenance since 2019. If you want to discover more about the project, hold onto your hats… Ready to dive into the tech wizardry behind this powerful and comprehensive pregnancy app?
To understand and fully appreciate the work behind the project, it’s important to get to know the developers and testers who have been making it run smoothly and meet its goals. Danka, Jakub, Filip, Vlado, and Marek have taken care of backend. Our creative frontend developers Robo, Majo and Kika have worked on visual elements of the app. And finally, testers: Stano, Timea, Lucka and Peťo have performed automated testing to find every possible bug. A few weeks ago, we arranged a meeting with these skilled developers and testers to discuss the project. Relaxed and friendly atmosphere was immediately apparent. When asked about the secrets of their success, they all spoke about the importance of good relationships, effective communication, and strong cooperation. These factors are the foundation of their work and have helped them overcome daunting challenges. Just observing their inside jokes about teambuilding and memes, and light-heartedness was enough to see the trust that underlies their teamwork.
Let’s start from the beginning!
Back in 2019, our client reached out to Unique People with an urgent request to build a development team to build the pregnancy app, as their previous contractor resigned. Our company is known for its “can-do” approach and quick solutions, so when the client´s request came in December 2019, our management reacted immediately. After some internal discussions, we jumped into unchartered waters in the first week of January. Marek, the managing director, went to Germany with the team to attend our client´s workshop to find out what exactly the client expects. We used 2nd and 3rd week of January to build the team of IT specialist with the help our subcontractor. Minimum viable product was ready in March. The app was prepared in September, of course, some changes were requested by the client. We implemented those changes and by the end of 2020, the app was ready for the transition from development to maintenance phase.
As the project began very dynamically, we cooperated with our subcontractor´s team for a few months from the beginning. But as our Unique People family grew bigger, we were able to finish this robust app´s development and continue its maintenance on our own. The significance of the maintenance of this app lies in its large scope. Since the product contains personal medical data of patients, maintenance and security were extra important. Our team was responsible for smooth running of the app, security compliance, as well as regular backend and frontend updates for the app in Google and Apple store.
During the project, new colleagues joined the team, let´s see how they perceive it!
Robo: “Due to its length and complexity, the application became quite robust. With such a robust application, it is challenging for new team members to come on board and understand how it is built. The second important thing is that we successfully incorporated top testers who could reveal every issue of the app. Speaking from the frontend developers’ point of view, the polishing of this complex application took quite a long time, we needed to solve several design issues including pixelation shifts. It took me a week or two to go through the whole application, find out how it is built, and what is related to what.”
Filip: “When I came to the project, I started by observing the code, studying it. Then we created the integration tests with Kubo and Danka. Afterwards, we started to implement small changes, for instance we added data, created new records or columns in the tables…”
Kubo: “…as Filip said, after the integration tests, we implemented client’s request. However, this process was not without its drawbacks. There were instances when we added and reworked features based on client feedback over and over. Despite the challenges, we learned to read and edit code to current standards, which was especially valuable for me as a junior developer in my first job.”
Kristína: “This project was my first real code in a real application. The most complicated thing for me was to understand it, of course, but it was good for me to learn to how to read it. In the beginning, I started with simpler tasks, for instance when something was missing, or the client wanted to add or move a button… and I gradually started to learn from it in small steps.”
Stano: “We implemented testing soon. It takes 10 – 15 minutes of clicking to fill the form in. So, we could also use frontend testing and automate the creation of users and thus each test, as it passed, created a new user which means that we had more and more people in the database for testing purposes. We filled the database with user data, such as gender, month of pregnancy etc. and created lots of users to simulate real-world usage scenarios. These users allowed us to filter them and so we could explore functions and detect errors.”
So, guys, what challenges have you had to face while working on the project?
Robo: “Sometimes it happens that the client requires a seemingly small design change to be applied. But when we analyse it, we find out that it deals with front-end as well as back-end and so it needs to be completely remade. For example, in our pregnancy app, when we added value for doctors, the client thought we would just quickly add it to front-end and back-end. But also, tests needed to be written in the background and the implementation was not simple. Sometimes small change also affected pdf reports, we had to analyse the bug, to validate it, etc.”
Despite the challenges, the team has managed to maintain a positive and fun atmosphere throughout the project. They often share memes and jokes, especially Stano, Robo and Kubo, and even find humour in the bugs they encounter in the code.
Who makes the most bugs?
Marián: “I don´t really know who makes bugs. In the phase of maintenance, we often find ourselves fixing existing code. However, the code is very complex. So, if something is being fixed or redone, the code itself is already set in such a way that there is a good chance that he/she will make a mistake along the way. I wouldn’t say it’s specifically someone’s fault, but the type of the code causes it.”
Danka: “Even a developer is just human, everyone can make a mistake.”
Who grumbles and complains in this team?
Filip: “Kubo grumbles a lot, I think…”
Kubo: “Danka taught me, so, 😃 as a team leader.”
In fact, all team members agree that the communication and cooperation have worked well since the beginning. They have been able to divide the tasks, brainstorm, analyse problems and help each other on the way.
Who takes care of others the most?
At first, they all looked straight at Danka, but later Kristína added that Robo has always been helpful with any problems regarding frontend, backend as well as testing. Obviously, it must be true. Even Timea, who only spoke her mind on crucial matters, felt the urge to contribute to this discussion.
Timea: “He can find time when we need his help, to say the right things and guide in a friendly and humane way.”
Robo: “Don’t make me blush! This is true about whole team. I already have a lot of work experience, but I have never met such a team. For example, when we have a problem on the backend, all team members are ready to get involved and look for a solution. We’re indeed a versatile team and we try to solve issues together. The biggest plus of the team is communication. No one is afraid to ask… So, if someone has a problem and sends us a message, we are happy to help. So, there is no need to be ashamed to admit not knowing something, we can still find a solution together.”
Behind the Scenes of the app…
At first, during the development phase, the team worked in scrum sprints. While in maintenance, they opted for quarterly releases, with special releases reserved for bug fixes. When it comes to technologies, they work with German standard tech. For the backend, Java is the language of choice, while Angular and Ionic are used for the frontend. They also work with Java Spring Boot, MariaDB database and Gitlab. DevOps uses Azure and Ranger. Task tracking is managed through Jira and Confluence. Thanks to Selenide, the team can thoroughly test and validate the frontend components of the app.
This app’s complexity is highlighted by the fact that it takes two minutes for the automated testing software to fill the form in. In real life, doctors put the data into the system manually, which can take much longer. There are numerous options and select boxes, including questions about patient’s substance abuse, medical examinations, and their results. This recorded data is used to predict a child’s health risks. The doctor has own web application to fill in all the info regarding the mother and its child up to labour. Patients have a mobile app interface which allows them to view their data, schedule appointments, and communicate with doctors via real-time messaging. Multiple doctors can manage a single patient’s data, plus midwives are able to access the system.
There is multi-level hierarchy for registration of users and a two-factor authentication is a standard. Security is essential when working with such sensitive data. It’s not just GDPR, there has been a higher level of personal information in the app. On the other hand, safety of patients and their children is even more important, so the team needs to make sure everything is displayed and recorded correctly all the time.
One of the main challenges was the fact that while iOS devices are relatively standardized, there are many different types of Android phones. This led to a problem that some plugins did not work on certain devices and required in-depth analysis to find a solution for this issue. Plus, the app included several supplementary services such as real-time messaging, notifications for administrators, and QR code scanning, all of which added to the complexity of the system.
Have you ever got stuck on a problem and couldn’t move forward with the project?
Marián: “Yes, the app suddenly stopped being able to use a camera. We brainstormed and searched for a solution – but it did not make any sense, since it was only happening on certain devices. After many attempts, we discovered that the issue was caused by an outdated library that was not supported on certain versions of Android. It took us about a week of investigation. We eventually replaced the library with a newer version, so we were able to overcome the issue and move forward.”
Why has this project been meaningful and important for you?
Danka: “Starting a project after maternity leave can be daunting, but for me, it was the perfect way to get back to work. This project grew close to my heart. Although it hasn’t always been perfect, I love it. One of the best things about this project is the opportunity it provided for our team. We all have had the chance to work on a real project and gained valuable experience that we could use in the future.”
Robo: “Well, I guess when you are a developer and your code actually gets into production, it’s such a satisfaction that it made sense and that people, in fact, use it.”
…and the cherry on the cake!
Marián: “I would also highlight one specific thing. Danka’s ability to create names for the patients. Legends such as Ms. Štachitková were created during this project.”
Filip: “… even her first name was Jozefína. That’s nice 😃.“
Danka: “I mean… after that there were just ordinary names, but Jozefína Štachitková… 😃 she had everything, she had… I don’t know how many questionnaires filled in, she went through all the treatments, examinations, and she’s already given birth.”
This funny conversation among our developers is a great example of the friendly and collaborative atmosphere that we have here at Unique People. If you’re interested in working on exciting projects like this one or getting to know the key players mentioned in this article, just contact us and we can find a way on how to make our cooperation come true.