Business news

“Building High-Performance Mobile Apps: A Conversation with Farhana Haque, Software Engineer at Meta”

“Building High-Performance Mobile Apps: A Conversation with Farhana Haque, Software Engineer at Meta”

We are sitting down with Farhana Haque, a Software Engineer at Meta, with extensive experience developing mobile applications. Over the course of her career, Farhana has developed deep expertise in Android development, leading teams to create high-performance mobile applications from the ground up. With over 12 years of experience developing mobile applications, she has worked on both native and cross-platform apps, contributing to high-profile projects at major organizations like Meta, the United Nations, and Amity. Farhana is also passionate about sharing her knowledge and has conducted Android development training with Bhutan’s government ICT officers. She has also mentored a number of fledgling developers. In this episode, we’re going to hear her story and learn her mobile app development and mentorship playbook.

1. Your career encompasses many different roles across leading organizations, from Meta to the United Nations. In what ways have your experiences in these diverse environments influenced your mobile app development?

Every organization has its own motto and its own set of problems to solve. Working in these different organizations helped me shape my own way of handling mobile app development. Meta is a great place to work. But I joined not so long ago, and it’s too early to get a full picture. Over these few months, I’ve learned that I’m working in this fast-paced, innovation-driven environment where scalability, performance, and user experience are of exceptional importance. I’ve also learned to build apps that perform seamlessly at a massive scale and create delightful user interactions. And while at the UN, I worked on apps that sometimes had far fewer users, but those users were doing things that were immensely impactful to the causes they worked for. For example, I was privileged to work on an app that audited the equipment and services for UN peacekeeping missions.

2. You have directed Android development teams at both Amity and the UN. How do you breed collaboration and maintain alignment on objectives and practices among your team members, especially when they are working with cross-functional teams?

In a setting with many different parties, it’s essential that everyone can see the work that is being done. When working in a cross-functional team, there are several best practices to ensure not only visibility but also clarity regarding the division of labor and the timeline of the project. One best practice, for example, is to break down the main task into several independent sub-tasks that can be worked on simultaneously, tasks that can easily be assigned to different entities on the team. For instance, if there’s a need for something to be designed, then there are bound to be at least two entities (a designer and a developer) who can be working on distinct, yet related, sub-tasks of that main task.

3. Both Android and cross-platform development using React Native are areas where you have experience. When a new project comes to you, how do you make the decision of what technology to use? What considerations go into native versus cross-platform solutions?

Several key factors influence the technological choice, for instance, project simplicity versus complexity, resource availability and capabilities, and the all-important project timeline. Performance matters to us, and for that reason, native Android development is always our first choice. Despite the “write once, run anywhere” promise of many new technologies, the reality is that you can never optimize for an almost infinite number of different conditions (hardware, for instance) without going native. And if our project has a budget of under $300,000, a timeline of less than nine months, and a development team of fewer than four people, we will dissolve that team and undertake our next project only using the secret sauce of React Native.

4. You noted that performance is a top priority for you during development. Share some techniques or tools you use to ensure your mobile applications perform at their best.

Performance optimization is a complex topic and can’t be summed up in just a few sentences. There are many key factors to consider and many parts to pay attention to when one is both developing for and maintaining an application, whether that application be for Android or any other platform. I will try to focus on what I consider to be the main performance aspects. These include optimizing app startup time, the efficient use of networks, fast UI rendering, memory management, and battery optimization. These factors are often interconnected. Fortunately, a number of tools are available in Android Studio that can help pinpoint, identify, and resolve performance issues one might encounter on any of these fronts.

5. Throughout your career, you’ve had the opportunity to mentor new developers. What do you find most fulfilling about guiding, and how do you enable newer developers to flourish and advance in their careers?

Being a mentor is incredibly rewarding because it enables me to make a substantial impact on someone’s journey, both in the profession and in life. Watching someone evolve from a state of uncertainty to one of confidence, from lacking skills to displaying an impressive inventory of them, and from encountering stumbling blocks to clearing them without a second thought, is satisfying to the umpteenth degree. And knowing I’ve had a hand in these stages of their development, well, that’s just the icing on the cake.

When it comes to developing junior developers, I take a thorough approach. I like to work with them on tasks where we can do some form of collaborative programming, pair programming is great, but code reviews are good, too, so I can share my thought process and guide them partway through the solution. I make sure they’re in an environment where it’s okay to ask questions and make mistakes because that’s part of the learning process.

I help them deconstruct big, scary tasks into small, easy-to-do segments, and I help them reflect on how they are doing in a way that keeps them moving forward. I don’t just tell. I show and I am involved. Sometimes when I engage with the people I mentor, it looks a lot like deep play. We explore in ways that let us get lost and find ourselves again. We share more than a few laughs, and we sometimes use online videos to augment the experience as we learn about some new tool or process.

6. When training Bhutan’s ICT officers for government positions, what were the principal hurdles you faced, and how did you tweak your approach to teaching in order to make certain that the officers could learn more effectively?

I had an incredible opportunity to conduct training for the ICT officers of Bhutan’s government. I went there twice as a trainer. The first time I visited, I ran into some issues with the programming language. I was there to teach Android app development, and at that time, the primary programming language used for developing native Android applications was Java. Many of the training participants, however, were not very familiar with Java. It became pretty clear that we would not be able to continue with the training as planned unless we filled this gap.

I had to modify my original training schedule to cover introductory Java. Even so, the learners were eager and picked up the language quickly. This meant that I was able to complete the Android training with minimal alterations to the course content. Furthermore, Bhutan’s ICT department was very supportive. They took my feedback seriously and arranged for a Java training session to occur before my second visit. This meant that the participants were much better prepared to handle the advanced material.

7. You’ve been responsible for the architecture and development of mobile applications. As a leader, how do you make archi-tectural decisions, particularly when balancing short-term delivery with long-term scalability?

The mobile application development process has many key factors, but app architecture is arguably the most important. I never cut corners on the basic principles of clean architecture. I always try to do the development planning in a way that allows the team to deliver individual components rapidly and that ensures the overall modular architecture holds together. I certainly do not cut corners on code quality, even when I have to write it under the pressure of a very tight deadline.

Ensuring that quality is not sacrificed for speed is an important part of my workflow. I do this through a combination of linting, code review, and some basic principles of programming. The first and most fundamental principle is to identify the minimal set of features that can fulfill the user’s immediate need and leave room for enhancement later.

8. You’ve had a role in research and development, including submitting patents at Samsung. Can you tell us about an innovative idea or project you’ve worked on that you’re particularly proud of?

I did not have any chances to submit patents, but Samsung had a portal where employees could submit their ideas and suggest that those ideas be considered for development, essentially, a place to propose potential innovations. I used that portal to suggest that Samsung look into unlocking a smartphone with a person’s fingerprint. My idea didn’t go anywhere, though, because another team was already working on a similar concept.

Still, I was fortunate to have the opportunity to work on some extremely fascinating projects at Samsung. If I had to choose one, it would be a social sharing app I co-developed with a group of incredibly skilled engineers. The app was meant to enable live broadcasts between two smartphones, as long as they were in the immediate vicinity of each other. The chief obstacle to overcome was ensuring a smooth and nearly instantaneous video stream.

9. With a strong background in Android development and enterprise application development, what advice would you give to up-and-coming software engineers who want to specialize in mobile application development?

Aspiring software developers should always try to gain experience across several platforms. By working on different platforms, you can understand their individual strengths and weaknesses much better. Tap into the knowledge you’ve gained from one platform to make another better. Push yourself to be innovative and efficient.

Another aspect to remember is that software development is a constant undertaking of acquiring knowledge and evolving. You must keep your knowledge updated to match the latest developments and breakthroughs to stay on pace.

Comments
To Top

Pin It on Pinterest

Share This