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
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…
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
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
But what if I told you web frontend is the same?
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
- 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.
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!
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.
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 🙂
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.
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 🙂
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.
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.
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.
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…