Backend or mobile. What to choose?

Hello! This post is a response to the article If you go to the right, you will come to the backend, and to the left, you will come to mobile phones. I have a similar experience, I worked as a full-stack developer for more than 5 years, then moved to Android in 2015. I came to different conclusions than the author and want to share my point of view on the question of “where is it better to live in back-up or mobile phones.”

Disclaimer: This article does not have the goal of devaluing the author’s experience, starting a holiwar, or claiming the absolute truth; the goal is to share my experience and opinion on this issue.

A little about my experience

I started working as a Java Enterprise developer in 2008 as a student, working as a full-stack developer. I got acquainted with Android while studying at LUT in 2010, it was an interesting experience, read more I wrote a post about it on my channel. Then, from 2010 to the end of 2014, he worked with Java Enterprise, on occasion switching to Android, where he completely switched since 2015. During this time, I had a large number of projects with both fullstack and Android, below I will try to give a small comparison.

Team and processes

Here I would like to dispel the myth that developing for Android means you have to do it alone. You can give an example of popular services or banking applications, in which over one application 50-100 developers can work, divided into teams. An entire team can work on one application screen, for example, the login screen. At the same time, there is a separate teamwhich is engaged in assembly.

There are situations when one developer works on an application; the most common cases are:

  • application prototype

  • freelancing

  • indie/pet project

  • the start of a project, when a developer is invited to recruit a team

In the “average hospital”, a team is assembled to develop a mobile application, if only because with the help of one developer, features will be delivered very slowly. In my experience, there was only one time when I was the only in-house Android developer, but this was exactly the case when the project team was selected further. As a rule, development processes are similar to back-end; usually something from Agile (Scrum, Kanban, Scrumban, etc.).

Finding bugs and rolling out new versions

I would say that looking for problems, especially non-trivial ones, is a challenge everywhere – both on mobile phones and in the back. In both cases, logs come in handy; in mobile applications, they usually also use analytics and crash collection systems. In addition, a common practice for both specializations is the use of feature flags to quickly enable/disable pieces of functionality. In terms of finding bugs for Android, the challenge can also be the reproducibility of the problem on a specific device, for example, some Chinese vendor.

It’s really easier to roll out new versions on the backend; features are delivered to the client faster. On the other hand, mobile applications of many services are increasingly use the BDUI approachwhich allows you to reduce the time-to-market and make it approximately equal to the back.

Amount of logic and project complexity

Modern mobile applications have become quite overgrown with logic. Everything depends greatly on the project, as I already mentioned – it could be an application for a complex service or bank, which is made by a hundred developers with a million lines of code, which is not inferior to the back in terms of the amount of logic. Plus, Android apps aren’t just about phones. But also about TVs, wearable devices, HMIs in cars and other devices, so depending on the project there can be quite a lot of logic.

Of course, there are certain specifics for each specialization. For example, in the backend you work much more with databases; the database structure is many times more complex. There are also often many integrations with various systems, receiving and transmitting data, etc. In mobile phones, on the other hand, there is a lot of work with multithreading, UI/UX optimization, and adaptation to different devices. In both cases, as a rule, much attention is paid to architecture, scaling and testing capabilities.

IT – constant development of technology

Both in the backend and in mobile, as well as in most other specializations, technology is constantly evolving. You need to constantly update your knowledge, learn and use new technologies. I can’t say that Android stands out in any way, and it is developing very quickly, but in my experience, being a full-stack developer, I was also constantly learning. From project to project, technologies differed, language capabilities were updated, and new tools appeared.

What to choose?

It turned out that although these specializations are different, the approaches and problems are in many ways similar. There are specific differences, but it seems to me that this should not be a factor in deciding which direction to pursue. To understand what to choose, try to find the answer to the question “what are you interested in?” – do you like working with devices, do you like making UI, do you like working with data, etc. If you choose a specialization based on this principle, you will be more tolerant of the difficulties that will occur in projects.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *