Mobile app developers are a subset of software developers who expertise in platforms like android and iOS. During the initial launch of smartphones, mobile developers were developing apps only for smartphones. After 10 years of android and iOS, these platforms are not just used for smartphones but for a variety of microprocessors and controllers that run on your TV, voice assistants, refrigerators, thermostats, etc. Apart from that, it is true that web and mobile development and standards are almost at the age of merging together. This leads to a whole new expectation of development and developers – ‘Modern, mobile full-stack engineers‘.
Enterprises are looking forward to hiring these modern-day mobile full-stack engineers with the following expectations –
1) Make a solution that runs on multiple clients (Ubiquitous computing and experience) – Globalization 4.0 at WEF has talked more about increasing accessibility and inclusivity through technology. I see ubiquitous computing as one of the ways to achieve accessibility and inclusivity. Ubiquitous computing means to have computing accessible through any device, any time and any location. All these devices come under one big umbrella – ‘Mobility‘. Enterprise solutions will focus more on running their solution on any device rather than just smartphones. This requires developers to understand the UI and UX of mobility devices. It will be expected out of mobile developers to understand and work on any of the devices like – smartphones, tablets, voice assistants, home monitor and security, auto, tv, wearables, clocks, health bands, etc.
2) Go serverless (Cloud-Native-First computing) – Servers are typically managed and maintained by the backend server team. This is not the norm anymore. Also, the paradigm shift towards cloud and edge computing have taken the burden of managing and maintaining servers from the server developers and admins, resulting in offerings like Cloud-Native-First computing from popular cloud providers like AWS, GCP, and Azure. These simplifications and more mobile cloud offerings like Firebase, Amplify, etc are helping the mobile frontend engineers to understand, learn and develop on cloud-native serverless components easily than never before. Expectations of cloud-native serverless development would require capabilities to develop solutions for authentication, API gateways, micro-services, storage, database, analytics, machine learning, etc.
3) Multi-platform engineering (Architecture and solution design) – More focus towards write-once and run it on multiple devices. More like cross-platform development for smartphones, enterprises expect developers to understand tools and solutions involving cross-platform development for ubiquitous computing.
a) Programming languages and tools – Recent frameworks like Flutter gives more flexibility towards developing cross-platform solutions across mobile, web and desktop in a native way than any of the earlier cross-platform frameworks. This is a must to have skill in addition to traditional kotlin and swift. Understanding on how to integrate the app to consume the backend services using tools like amplify, firebase, etc., are also needed. Basic knowledge of ML and the ways ML can be used in frontends in the form of API or on-device processing using tools like TensorFlow Lite.
b) Platform capabilities – Android and iOS are the 2 major mobility platforms very widely used across devices. Core understanding of the platforms (Not just the programming language used to write apps that run of these platforms) is important.
c) Hardware support – Like the platform support, it is important to understand the hardware support for each of the platforms. As there is a growing number of devices running on platforms like android, iOS, raspbian, etc., not every feature of these platforms will be available in all the devices. So understanding of the hardware support across devices is crucial.
4) Take responsibility for securing your apps (Cloud and On-Device security) – Major security concerns arise over the following areas in modern-day mobile apps development –
a) Data transfer over the network to cloud services – Other than the traditional REST services, many enterprises are moving towards GraphQL, which is a better REST service. Even though GraphQL adds enormous power to the clients, developers should know some of the key security principles in GraphQL like
Frontend– Handling timeout responses from server
Backend– Setting timeouts at GraphQL server
Frontend– Knowledge on setting the query depth and handling error in case when the query depth exceeds the set level
Backend– Setting maximum query depth at GraphQL Server
Frontend– Understanding and validating the queries before submission for query complexity
Backend– Adding restriction using query complexity at GraphQL server
Frontend– Set dynamic timeouts if in case a query takes too much time to complete because of throttling
Backend– Throttling requests based on assigned server time and query complexity
b) Local storage of data on mobile devices – Since the storage and computing capabilities of the mobile device have increased a lot, there has been an increase in usage of the on-device storage and on-device machine learning. Secured way of storing and processing data without data leak is must for a mobile developer to know.
5) Know your consumer’s privacy (GDPR, CCPA, etc) – Data collection and data processing is very common these days. Every mobile app generates a huge set of data on the customer by collecting information likes button clicks, navigation, screen idle time, etc. All these information are later used for analytics or ML at the cloud or on-device. As more consumer privacy acts are being put together, it is important for the developers to know about to what extent the data about the user can be collected.
6) Understand business needs (Business intelligence) – Enterprises like Uber, Amazon, etc rely on technology to run their business. Apart from general coding skills, the domain knowledge on the business is important. Technology is the anchor for these businesses to run. Developers should be able to pick the right tools and technology for the use cases. A close working relationship with the business team will help the developers understand business models. Good interpersonal skills help in building good business relationships.
Let me know what other things would you expect from modern mobile full-stack engineers to know.