An Interview With … is a regular section where our Manager of Apps & Web Development, Fernando Toro, interviews different Technology members within Pelmorex. These conversations are open & honest and aim to reveal the true nature of what it’s like to be part of the Technology team @ Pelmorex.
This interview is with Lydia Zhu, one of the Android Software Developers at Pelmorex.
How long have you been working here at Pelmorex?
I have been working here since October, 2018.
All right, and what exactly do you do here?
I am a software developer working on the Android platform.
What does a typical day look like for you here?
My typical day starts with a scrum. I get together with my team and my team consists of developers, a product manager, a designer, and a scrum master. Our scrum master will also invite our managers to come and we’ll discuss how’s our sprint going, what are the plans we have for sprints and how we are planning to tackle it, or if there’s any risks and obstacles that we need to be aware of. So it’s really a meeting that we get together to discuss how we can make the sprint better.
We also look at what we have in plan and we prioritize, we look at what’s the highest priority and then we look at who’s available on the team for the day. We decide whether we were going to mobbing some stories or are we going to pair, or do individual work on those stories.
So once this meeting is over, what happens then? What else do you do on that day?
We split into teams or we mob together on one story or multiple stories. It sometimes depends on which day in a sprint. We also have different meetings such as demos and retrospectives. We talk about how we did for the sprint. In the demo, we showcase to the whole clubhouse, which is our whole engineering team, how we did with the whole sprint and what are the cool things that we have done and what we’ve learned from them.
Okay, cool. So you said that sometimes you split into teams and sometimes you mob, how often do you do each one of these things and what does that look like?
It really depends on how the team feels. Sometimes we feel like a story is better to be worked on in a mob – perhaps because it’s complicated. Perhaps it’s a dependency of many other stories that we need to knowledge transfer and get everyone’s expertise on this so that once we split up, we all have that base knowledge for stories extending from, for things extending from that story or maybe we are learning a new technology such as a couple of months ago we were doing Flutter and it was a new technology we decided to implement, which is really cool. We are one of the few development teams that are trying out Flutter and we decided to use Flutter and we’d been mobbing for a couple of months actually on Flutter to learn about it and actually put it into a development code and implemented a brand new feature on Flutter.
What is the most exciting part of your work for you?
The most exciting part of my work is that I get to constantly learn about new technology and just solving different problems. I think programming is like a puzzle sometimes that you’re trying to solve. You have no idea what kind of issues that can be encountered for the day, whether it’s a new feature that we’re implementing or it’s about the coming in or some challenges such as making the output perform better. They are all very unique issues because they all depend on the language you’re working with, the platform you working with, the business that you’re working in. So it’s not just one answer for all. We have to all think about it and tackle in different situations. So it’s interesting.
What are some of the exciting technologists you’re working with?
So one of the things that we recently tried out is Flutter, which is a cross platform language that we can use. This could bring up new possibilities for the company as we could reduce a lot of dev time into half. We will no longer have to develop a new feature in both Android and iOS. We just need to develop a Flutter app that can be deployed for both Android and iOS platform.
Have you found any disadvantages to using Flutter?
Oh yes – especially because it was in beta when we started using it. We found that there’s not a lot of support in terms of the platform. So if we encountered some issues or with the beta, we found that we have no idea how to resolve. This would take us a really long time to trouble shoot and solve those problems. Also, integrating Flutter into Android, existing legacy code with Kotlin and with Java was quite challenging as well.
Let me ask you, are there any technologies that you would like to work with in the future? Anything that’s upcoming in terms of technology?
Yeah. So we’ve been talking a lot about microservices, which I think some of our tech leads are working on that we can possibly implement into our upcoming roadmap. So that’s something very exciting. Also, we’ve been working with Android, Jetpack. Jetpack is a new engine of components and it’s making Android development much simpler and easier to do. So we are working with live data, the models. So it has been helping us a lot to make the code less clunky and more easy to work with.
Can you tell me a little bit about Android development? For example, what language are you using? What architecture? Is the code all sparkling and new or do you have a lot of legacy code and how do you handle all these things?
Yeah, that’s a good question. In terms of Android development, we are working a lot with the legacy code because I think most of the team members have only been here for around one year on the team. I think our app has been around for what, 10 years or something? I don’t know.
So in order to support the older code and a new code, it’s been tough. Especially recently working with widgets and some of the legacy color widgets. It can be very challenging, but it’s also giving us a lot of opportunities to understand what has been written here. We’re talking about rewriting that code, which is very exciting. In terms of languages, we’re using Java and Kotlin. Java is the old way of doing Android development. We’re moving slowly away from Java and converting more coding to Kotlin and we’re trying out different things… There’s quite a different architecture components, too. The models we’ve been using. We’re trying to move more towards unified architecture such as NVP or MVVM, but it’s still in the process of making it more consistent.
Can you talk to me a little bit about how you do testing, dependency injection, functional programming?
We use Dagger 2 for dependency injections and it has really helped us to properly create dependencies and into an easy, more manageable way of pretty instances without having to create new users every single time and easily plugging in and out, plugging in instances and this way also, we found that using dependency injection can help us a lot in terms of testing, making testing much easier. What’s the other question?
Your team works very hand in hand with QA, is that true? How do you guys do testing?
We don’t quite do test driven developments, but we are leaning more towards acceptance. ATDD: Acceptance Test Driven Development. We make sure that every single acceptance criteria is tested. So we are about 80% test code coverage. It’s a combination of unit testing, integration testing and UI testing. So we have a set of automated tests that make sure that every time we push new code, it can catch any wrong business logic or any issues that we might encounter in our app.
In terms of CI and CD, are you doing any of that?
Yes, we do. We have our CI/CD pipeline that every time we push new code it goes into Jenkins and then it will start running the pipeline to run the tests, the unit tests and the UI tests. Once that’s finished, if there’s no test failing then it will be pushed into our alpha build, which is we have different stages of builds, which is alpha, beta and production. So it will automatically be pushed with each alphabet. Any other alpha testers can download our apps from the Google Play Store.
Oh so it pushes the alpha directly to the Google play store?
Yeah, to Google play store. If the tests fail then it will give us a log of which tests failed and then we can do some fixing and then do another push.
Throughout the time that you’ve been at Pelmorex, almost a year, what have you noticed in terms of how the quality of the code base is doing?
I definitely see that there has been a lot of good changes in our team. We consistently drive for better code quality. We really push for the boy scouting rule. When we’re developing new features, we change the architecture to what we currently agree on as a team and also we will clean up the Todo’s that we have in the code base. We refactor to make the architecture better, to make the methods smaller, to rename any function that doesn’t make sense. Then we also try to add more tests to the existing legacy code.
Can I ask you, how does your work here impact Pelmorex? Impact the company?
Wow. That’s a big one. I think I see my work at Pelmorex as two fold … there’s two aspects to it. One is my individual contribution and another one as a team player to the Android team. Oh actually I would say three. Another one is representing the Android team in terms of how we handle the cross function teams. For example, as an individual, I make sure that I work on the most important things on the board to help deliver the sprint, the stories as fast as possible and also consistent deploying in things that I believe that can help the sprint or help the team, help the code base by fixing things that can make things run faster. As a team player, I make sure that I continue to voice my opinions about how we can run things better.
How do you feel that your work impacts the end users of the app?
We’ve been getting some really sweet and nice reviews in the Google Play Store from users and it’s really great to see that some of the users feel like it has changed their life, that they check their weather and helps them to organize their life. So that’s a really awesome thing to see. We’ve been reading those reviews in our demos as well just to show that the kind of impact that we have on our users and you can tell the users are very observant of the changes that we make. Sometimes we make a new feature and you can see some of the feedback that we see on the reviews and how that is affecting their day to day interactions with the app.
Cool. So as you think back of when you first started working here, what are the most significant differences in how this company works compared to other places you’ve been?
Right. The one thing that really stood out is how much this company wants to change. One thing that I noticed we had when I first joined, was that there were a lot of meetings in terms of agile developments. There was a lot of training. We hired outside professionals to teach us what a true agile development process looked like. It wasn’t just training within the team itself, but the entire company. So I think it’s awesome to see that the company wants to make such a big change, not just within the team but also how the team is, how the different teams are interacting with each other. So I think that’s one of the biggest things that I noticed the most.
I hear that there’s a lot of laughter within the pirate ship?
The pirate ship, yes.
What’s that pirate ship all about?
Oh yeah, so the reason we call ourselves pirates is because we feel like we don’t just play by the rules. We define our own rules. We are constantly changing and we’re constantly trying to challenge the status quo. We’re very direct with each other. I think that’s one of the things that are really good about the team. If there’s something that we see that we don’t like, we speak up. We always speak up and we challenge each other and we tell each other how it is and, we make fun of each other sometimes.
Are there any stories of your time here that exemplifies what you think this company is about?
Stories. I guess when I was hired, the CEO was willing to talk to me to give me more information about the company. I thought that really showed that our leadership really cared about the talent that they hired and was willing to put the time and effort in to answer any questions that someone who was interested.
What can you tell me about the culture of Pelmorex?
it’s not afraid to change. Yeah. I think there has been a lot of change. I think Pelmorex is very established and has been around for a really long time. If you can see that it has some old ways of doing things, but it’s not afraid to challenge that. So I think that’s what’s amazing about it. It’s like you have no idea what kind of potential this company will have because of that.
Cool Is there anything else you would like other people to know about Pelmorex?
We get ice cream trucks to come to here, right into the parking lot.
Oh, what other cool, interesting activities and events do you guys have?
We have tons of lunch and learns and like some learning activities and leadership opportunities and hackathons. So far I have enrolled in this program called Catalyst, which was really cool that I get to meet with a mentor and a few other people from different departments and we get to talk about the things that we find challenging. Get to really know each other and push for new boundaries, and how we can grow as a person in the company. So that’s really cool. Another thing that we did was I think there are like some design leanings that we have. A bunch of designers who teach us about design thinking and we have multiple hackathons. Yeah, so there’s a lot of interesting events and we can be creative and learn.
Thanks for taking the time to talk to me.