paint-brush
The Future of Mobile Development: Navigating Trends and Challenges in 2023by@alexlash
744 reads
744 reads

The Future of Mobile Development: Navigating Trends and Challenges in 2023

by Alex LashkovApril 25th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Mobile development is one of the most rapidly advancing fields in IT. Valentin Telegin is a seasoned expert with 20+ years of experience in mobile technology. He worked his way up from a developer at Yandex to a CTO of a large IT holding company.
featured image - The Future of Mobile Development: Navigating Trends and Challenges in 2023
Alex Lashkov HackerNoon profile picture

Mobile development is uncontroversially one of the most rapidly advancing fields in IT, with new frameworks and technologies emerging almost every month. To sync my basic knowledge with what’s going on in mobile development in 2023, I have talked to Valentin Telegin, a seasoned expert with 20+ years of experience in mobile technology who worked his way up from a developer at Yandex to a CTO of a large IT holding company. 

Multiplatformity seems to be a must in today’s world. Can you elaborate on modern approaches to cross-platform development?

Yes, one of the main trends in mobile development is cross-platform development, which entails designing an app capable of running on multiple platforms at once. This approach offers several advantages, such as ease of maintenance, testing, and evolution of shared code, as well as compatibility with a variety of platforms like Android, iOS, web, and desktop.

For example, in a project where we developed a user app for a telecom company’s subscribers, we used Kotlin Multiplatform Mobile. It allows writing shared code in the Kotlin language, but you still need to create separate UIs for different operating systems. This way, the app appears native to users, while development is accelerated by using shared code.

Another option for creating cross-platform apps is using Google's Flutter SDK. In this case, the app code is written only once and shares a common interface across all versions. Our company has also implemented such apps for internal purposes. One key advantage is the much faster development process, which can be several times quicker than creating separate apps for iOS and Android. However, since the interface is the same for each system, it may look non-native to users. For example, buttons or animations might display differently and so on.

Flutter now occupies a niche that used to belong to projects based on the React Native framework. A lot of Flutter developers have web project backgrounds, and some of them also had experience with React Native. Despite the necessity to learn the Dart language and the new framework, the Flutter developer community is rapidly growing. After all, the benefits of Flutter make it one of the fastest options to create a mobile app from scratch.

When it comes to native Android or iOS development, software engineers build the entire app for each operating system separately. While these apps may run faster, they demand double the resources for development: writing the code twice, designing the interface, and then testing, among other tasks. Although this conventional approach is how most apps are developed, there are methods to enhance cross-platform development efficiency.

Cross-platform mobile development is a relatively new trend. Are there currently enough experienced software engineers specializing in this domain?

Yes, that's a very good question. Indeed, the lack of qualified personnel in cross-platform development and, as a result, the prolonged hiring process were the reasons why I started developing a training program at the Epic mobile development academy. 

With this program, junior developers who already have some experience and would like to dive into the world of mobile development and ramp up their skills, have an opportunity to gain a new specialization. Those who have successfully completed the training can join us or another large IT company and apply their knowledge to solving complex technical tasks on high-loaded projects.

Low- and No-code mobile development has gained in popularity in recent years. What do you reckon about these approaches?

Well, this topic raises quite a bit of hype. There are dozens of different Low-code/No-code courses available, and they're being promoted as an easy way to enter the IT industry. For instance, some common ways to get into the field are through testing, Python, or Low-code/No-code development.

There are a number of tools that allow you to build an application without writing a single line of code. This can be a good solution for certain kinds of tasks. But I have to admit that these tools are actually more suitable for very simple tasks such as quickly creating an MVP app from scratch without any design or building a prototype to test an idea.

Creating full-fledged apps, let alone those for a large number of users, is challenging with Low-code/No-code solutions. These solutions are so generic that apps based on them tend to look templated and perform similarly, with mediocre speed.

So yes, this trend exists, but I wouldn’t attribute it to serious product development. Large companies usually don't engage in this kind of projects.

Can you share with us some popular frameworks for mobile development as of now? 

When it comes to mobile development, there's a current trend to transition towards UI frameworks that use a declarative approach, where developers create interfaces using code. This means that a developer describes functions that define how the interface should appear, such as how a button should look and respond to presses, all within the code.

In the past, the approach was quite the opposite. For example, in Android development, screen layouts were described using XML files, which specified the placement of buttons, nesting of elements, alignments, and so on. This was a static method for defining interfaces.

Now, everything is written directly in the app using code, without any predefined XML or other visual representations. Everything is done dynamically through code.

For Android, there's the Jetpack Compose library, which is very popular at the moment. We try to implement new apps or new features in existing apps using Compose because it's faster and simpler. For iOS, there's the SwiftUI library, which allows the use of a declarative approach for describing the app's appearance.

The declarative approach originally emerged in web development and later became a trend in mobile development. This is another reason for the rapid growth of the Flutter community and its popularity among web developers changing their specialization to mobile development.

Flutter initially uses a declarative approach, since it is a relatively new SDK. As a result, the development speed with Flutter is much higher. Firstly, the code is written only once; secondly, the app runs on multiple platforms right away, and the UI is designed in a declarative style.

What about modern approaches to project management in mobile development? 

Well, of course, the approach greatly depends on the specific project and company, but overall, there is a widely accepted Agile+Scrum approach. It is used by many teams, with some following the pure form, where all processes are strictly adhered to, while others find this excessive and only use the parts that are truly necessary for their work.

For instance, if a team needs to hold a demo or run a retrospective, they carry out these procedures. However, if something seems redundant, that part is ignored. There are many frameworks available, but, from my experience, most teams use a mix of different approaches based on common sense.

The specific configuration and effectiveness of an approach heavily depend on the team's size and experience. Experienced developers who have been working with scrum for a long time may abandon certain redundant procedures, or know what to replace them with. On the other hand, those with less experience may need to dive into these frameworks to understand how they work, when to handle tasks independently, and when to seek help.

There are also frameworks that serve as extensions. When a project involves a large number of people, they can be divided into sub-teams. Each sub-team works under Scrum, but all of them are united under a broader framework such as, for example, Large Scale Scrum (LeSS). They distribute tasks among themselves, but ultimately deliver a single, cohesive product. So, there are plenty of options available to use when it comes to project management.

Let’s now talk a bit about employees and team management. Many IT companies have shifted to a remote or hybrid work format. What are the advantages and downsides of these approaches?

The pandemic has enabled many software development companies to offer remote work options. Prior to the pandemic, there weren't many companies that allowed remote work during the hiring process; most positions were office-based. At best, you could negotiate to work remotely for 1-2 days. Now, it has become a widespread practice.

For example, when new employees join our company, they usually have three options: work from the office (which almost no one uses), a hybrid model where you must come to the office for a couple of days per week, or fully remote work with the option to visit the office but without an obligation to do so.

However, remote work has imposed certain constraints on team communication since you can't simply walk up to a colleague and ask a question. More formal communication methods, like sending an email or scheduling a meeting or call, are required. Oftentimes, organizing a  that requires the presence of several executives becomes a brain-bending puzzle. Developers, on the other hand, tend to avoid meetings as much as possible and devote their work time to writing code. Striking a balance between keeping the number of required team meetings to a minimum and bringing in only the employees actually needed for the meeting makes life even more difficult for managers. 

Another issue is remote interviews with job candidates. In the past, candidates would come to the office, sit in a meeting room, and have a face-to-face conversation. Now, interviews are conducted remotely, at best with video, but sometimes with a poor connection. When you can't observe a candidate's behavior directly, it is often more challenging to assess their social and soft skills.

So, there are challenges related to assessing a potential employee during remote interviews. Remote onboarding and team introductions must also be conducted to establish relationships within the team. This can be quite difficult, especially if remote team members can't go to lunch or attend an event together.

As one of the ways to address this issue, our company organizes various online and offline events. There are also regular online meetings, such as technical syncs, where colleagues working with the same technology can communicate, exchange information, or present on specific topics. For instance, if someone has implemented something cool in a project, they can share that information with other developers from other teams.

It's also helpful when a team can meet in person in an informal setting at least every few months to feel the overall spirit of the team. Remote work doesn't offer the same sense of belonging as being physically present with colleagues, especially if you have never met them in person, and only know them through their avatars.

Do you think that holding hackathons, including in the mobile development field, will help promote this domain and attract more talents?

Hackathons bring together completely different people — developers, designers, product managers, analysts, and entrepreneurs — to solve a specific problem or create something new. 

I really like this format. I have participated as a jury member, expert, and mentor in a number of hackathons, such as Digital Breakthrough, VirusHack, and IoT hackathon by GeekBrains. It has been an invaluable experience that helped me to get other perspectives on the solution of various problems as well as be charged by the energy that comes from this ‘broth of ideas’ concentrated in one location within a short timeframe.

Hackathons provide a platform for participants to unleash their creativity and find innovative solutions to complex problems. They are an excellent opportunity to gain hands-on experience and learn new techniques from colleagues, mentors and experts, while improving technical and communication skills. Besides, networking at such events is a great chance to meet like-minded people and industry leaders. Quick development deadlines help participants develop immunity to working under stress and learn to get results fast.

During hackathons, mobile developers provide an opportunity to present a prototype of a product or technology in the most favorable light and often allow you to immediately see the result in the app you've created. Mobile applications, along with web applications, are the main way to implement a user interface. 

In my opinion, hackathons are a valuable experience for anyone who wants to improve their technical and soft skills, build a network of contacts and work on interesting projects with other enthusiasts.

Thank you for the interview!

Thanks!