Personal blog

Why are there no full stack mobile devs?

The term “full stack devs” seems to be reserved to the web only. What’s worse, as a web dev I’ve always felt pressure to know well both frontend and backend.

On the other hand, I’ve worked with many mobile devs, none of whom I would call a full stack. Typical mobile dev needs another dev (backend dev) to create a full-fledged app.

I still don’t understand why. Let me debunk a few typical answers that I’ve heard but I don’t find true.

Disclaimer 1: this post may look like a hate on mobile dev, but it’s not. I’m really looking for an answer.

Disclaimer 2: I’ve never developed even a half of mobile app, so I’m obviously biased here.

Common refrain 1 – because mobile is harder

I’m not one to measure the difficulties of development branches, but…

Me in this post

If you say “there are hundreds of devices to cover in Android code“…

…I say “there is an almost endless number of possible screen dimensions in the web“.

A typical app has to cover 3 layouts (mobile, tablet, desktop) but it doesn’t mean devs have to implement only those three. Hell no, each of those 3 designs should display properly on every possible width. For example, you have one design for mobile (screen width < 760px) but it should render well for 759px, 758px, 360px etc.

I don’t see how this is easier from Android development, not to mention iOS (which is commonly recognized as easier one because of low number of devices).

But wait, there’s more. There are different browsers. It could be like 100 of them, but only ~10 are usually important (please remember mobile browsers too).

Browsers not only render HTML differently. Nowadays, browsers are like operating systems. Users add plugins which can interfere with the web app. And you’d better test it against race conditions, because if the user opens the app in multiple tabs…

Enough. The web isn’t really easier than mobile in my eyes.

But that was only the presentation layer. If you tought about more complicated stuff…

Common refrain 2 – I am a full stack, mobile consists of frontend and backend

They say It’s not like on mobile you only present data in pretty way. There’s a lot of networking, databasing, computation etc. going on.

But what if I told you web frontend is the same?

The web is no longer static. Modern frontend frameworks and ecosystems (Angular, React. Vue) use a lot of data transfers, dynamic page loads and whatnot. It happens that presentation is only a very tiny layer on top of huge JavaScript code. More and more responsibilities are being transitioned to frontend part of the web apps.

Nowadays you have to think of frontend as a separate app.

I simply cannot see things that you do on mobile and not do on web frontend. With one exception – low-level communication with devices via BT. Fair enough – it requires knowledge about protocols, networking etc.

But to me it doesn’t compensate all the things that you have to know on web frontend. CSS alone is enough to learn for a lifetime.

Common refrain 3 – I am a full stack, I can Firebase

I’m not against Firebase but such tools have limited capabilities. Therefore they are easier by definition.

For example, they contain only NoSQL databases, which are (opinion here) easier only at the surface and cause you much problems as the project scales.

I wouldn’t compare it to the capabilities of modern backend. Typical backend dev (=full stack too) is knowledgable in cloud technologies and bare-metal SQL too. NoSQL databases seem like a toy compared to those. It’s a nice tool for some purposes – but not in general purpose. I wouldn’t call myself a full stack if NoSQL was the only backend I know.

I believe this extrapolates to the whole Firebase and similar tools.

Besides, how many mobile devs actually can use Firebase extensively? I picture them doing 10 clicks from time to time, to add a NoSQL document if it’s needed. If there’s anything more complicated involved – analysis, performance – they usually need help.

Common refrain 4 – There are no full stack web devs, either

Touché. This is close to the truth.

Most full stacks web devs I know are essentially backend developers who aren’t scared of frontend. Relatively less often they are:

  • former frontend dev knowledgable in backend
  • frontend – backend fair 50-50

This means that (some) full stacks are masqueraders. They rattle off frontend tasks only to go back to their backends and databases where they feel safe.

As I said – it’s only some of them.

Let me put it this way. My definition of a full stack dev is someone who can move the project forward alone. It could take them more time, the quality could be worse than with specialists – but they can do it and want to do it.

In these terms I’m always trying to become a full stack as soon as possible in a new project. Mobile devs – I don’t think they try to go out of their mobile cave.


My opinion

The lack of full stacks on the mobile has nothing to do with the difficulty of the technologies. Rather it’s the matter of timing and PR.

Historically, there was no separation between front- and backend. As the technology grew, the two become two monsters but somehow the demand was to know both. Possibly because the technology development was imperceptible month by month, but tremendous over the years.

In the meantime, mobile development popped up. Mobile devs kept being smart enough to insist on the narrow specialization of their job.

And pays tell they might have been right.


What is your opinion? I’m really interested!

7 Comments

  1. Danny

    It is an interesting question.

    So as mobile devs underestimate supported screen sizes of desktop, you underestimate point 2 and it holds most of what you are looking for as an answer imho.
    A website, even if javascript heavy, is far from what a native app does.
    Websites often don’t need API, a lof of things get generated server side. This implies you need to look into server side as well. You need to look at database serverside.
    None of this is true on our side!Ever! On Mobile the API is your only connection to the backend! Always!
    This is why we are much stricter in discussions with backend team and put much more work in a good client side API (does not mean restful).
    On some teams the mobile developers would take this over (backend for frontend at Soundcloud, the hype of GraphQL…) because its key for our success.
    And the repository layers an app has are normally much more complex than a few key/value pairs that are stored in some browser storage. They live through many versions, so we our own migrations paths…. as our app lives much longer than you will ever have a browser open.
    I think you underestimate the level of complexity here.
    I would agree that what we do in mobile is frontend and backend in one thing. Like you use the look at your backend to fulfill your frontend needs.

    And delivering something that shows content is normally the first part of an app, where mobile and web doing similar work. Everything beyond that will make a great app experience: tight integration with the OS, push notifications (and no please dont say the web has them now too ;)), background services (and no, dont start with some background worker), great transitions, a thoughtful navigation stack… our work starts when the frontend is done and there is enough work to do 🙂

    • Bartek

      Thanks Danny, that makes sense. I’m not going to bid with you due to my zero experience in mobile :). I suspect underestimation here.

      If I were to defend my position, I would ask again – how much of that you don’t do on modern web frontend? 🤔 By modern I mean something more than “a few key/value pairs”.

      But then again, I think it comes down to “who did what in what scale” which is incomparable if we have different examples in mind.

      • Danny

        Hi Bartek,
        maybe at some point, we can discuss this in depth! Would love to!

        Nice coincident: I am doing some backend Groovy right now but it’s the very first time in a long mobile career. But this is a rare thing even with really good mobile developers. So there is definitely something in this question 🙂

  2. Michał Sikora

    I think that the question is loaded. If we go with a presented definition of a full stack developer – “a full stack dev is someone who can move the project forward alone” – then there are plenty mobile developers, who are capable of doing both backend and frontend work.

    • Bartek

      Are you one of them? 🤔

      What would they do if their backend guy got run over by a bus? How long would they carry on the backend work?

      Would they look for another guy ASAP to finally go back to where they feel safe and in place? Because this is how I picture so-called “full stack cross-functional mobile devs”.

      That definition might be imperfect. I certainly see some kind of permanence in being a “full stack”. In my eyes, this permanence kills most aspirations.

      • Michał Sikora

        By this definition, yes I am. I worked on a couple of project where I had to do backend programming. In some of them ratio was even skewed towards backend work. However, I don’t consider myself a full stack.

        As for the other questions, I can’t really answer for the developers. I just know that they are knowledgable of the backend work and most often are quite comfortable with it.

        I would definitely agree that it is a rather rare expectation of mobile developers to also know/do web backend. But I also consider it to be a healthy situation. Same as I consider healthy not to expect from front end dev to be back end devs and vice versa, which unfortunately is often not the case.

        • Bartek

          I see your point. I think your closing argument is in line with what I described under “My opinion” paragraph. Whether it’s healthy or not, I don’t really know…

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

© 2024 Bartosz Krajka

Theme by Anders NorenUp ↑