For the last two and a half years, at Moonpig/Photobox, I’ve been part of a great team dedicated to creating mobile solutions, always aiming for code and UI/UX quality. Now, it’s come the time to say goodbye and move on to new frontiers.
I started as part of a (brand new at the time) team called the AppFactory, an internal app making “agency”. Before that, the strategy was to transfer the responsibility for Android and iOS apps to third parties.
Involved with multiple brands inside the Photobox Group, I had opportunities to work on diverse elements of various apps.
On this piece, I’m going to talk about all the things that made me stay with the team.
Driven by watching (with pizza) and reading Uncle Bob, among others, we thrived to create systems that are easy to maintain and give us rapid feedback when something doesn’t go the way we expected. Test Driven Development (TDD) has been a magnificent tool to archive these on top of a couple of iterations on Hexagonal and Clean Architecture.
We had SonarQube watching over our pull requests and making sure that, based on static analysis, any new code was up to a given standard. It’s always good to have a (virtual) pair of extra eyes on what we are up to.
Internally, we used a CI server which helped with app building and distribution. Using these is crucial when working in an agile environment where several developers are touching the same code.
The one thing we often forget is that this process must be fast. If a build takes 1 hours is going to be a significant hurdle in your delivery cycles. Ideally, it should take less than 10 minutes.
We were using Appium for testing, and at some point, the builds were taking obscene amounts of time. The benefits it brought was sharing the same tests across iOS and Android. However, losing hours of build time outweighed such advantage; along with disparity in features and screen flows, which made the tests have too many “logic gates”.
We moved to Espresso and Firebase TestLab, reducing our feedback loop to a fraction of what it was before. It meant that instead of having to go for a full three-course meal to wait for the build to finish, we could just have a coffee.
We also had displays that showed the state of the projects in the server. Having such visibility meant we were more able to monitor failing builds. Failing builds must be attended. It’s important always to be aware, as it is the gatekeeper of quality.
There is always a great passion for trying new ways of dealing with technical and usability concerns. But not for the sake of using a new toy available to us. We are building something a user will utilise. We focus on making their experience enjoyable.
It’s not always apparent how a new tech is going to affect the end user. Improving out CI process, as mentioned before, means the user is less likely to find a bug in production and new features aren’t going to take a long time to get to them.
The team itself
I’ve learned. I’ve met amazing people. There have been meaningful discussions, lunch and learns, and social events. Always looking forward to constructively challenging each other. A great way to grow as a team and as persons.
Have to say that I will miss working there. But now, I have a new calling. New and exciting challenges. I’ll definitively be back for a cheeky pint every now and then. :)