“The purpose of software engineering is to control complexity, not to create it” — Pamela Zave (American Computer Scientist)
Frontend is a branch of software engineering which is related to the presentation layer of data in a form of a graphical user interface. It’s a practice of translate one design into a usable technological product. The term is used to refer to the web interface in particular, but given the current state of our technology — nowadays, it’s also being used to refer to other interfaces as well such as mobile and desktop apps.
There are a lot more aspects to frontend development than just “slicing” a design given by the designers. I observed that each interface has its own concern or things that they should pay attention to respectively. In this case, I’m talking about the two most popular frontend interfaces: mobile apps and websites. From what I saw, websites are more sensitive towards the horizontal plane (space) and mobile apps are more sensitive towards the vertical plane (time).
Space in Web App Development
One aspect that web developers always pay attention to is browser support. We can’t control how users gonna open our web app. While most people are using Chrome now, there are still people who use Safari, Firefox, Edge, or even underdog browsers like Brave or Opera. That’s only the popular ones, not counting thousands of browsers that are available out there.
It’s essential for web developers to always give users the same experience regardless of what browser their users open with. It’s called cross-browser compatibility. There even a website that most web devs refer to to check this compatibility.
Can I use... Support tables for HTML5, CSS3, etc
"Can I use" provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile…
Web developers need to create their websites to be rendered beautifully, at least for the popular ones like I mentioned above. That’s why I associated that web development is more heed to “space” or the horizontal plane. It’s like a concept of “multiverse” in comic books where each of the browsers is their own “universe”, and we need to create one app that can live in all of those universes respectively.
Comparatively, web apps seem don’t get bothered with the “time” aspect in which here I associated with the software version. Instead of getting installed into a user’s device, a web app is actually stored someplace else on a server called a web server. Browsers are just a tool to access it via request URLs and the server response to give contents that need to be “painted” which is the website itself.
Meaning, regardless of what browsers used to access it — users always got the same version of the web app, the latest one stored in the web server. So most of the time, web devs are only focusing on comparing two web app: the one on the current web server vs the upcoming one with updates.
Yes… in this modern web development, sometimes developers still need to pay attention to the version because of the cache mechanism, PWA, etc. But that rarely happens.
Time in Mobile App Development
On the contrary, mobile applications are a type of software that users installed into their mobile devices via a specific platform based on the administrator. Since it’s installed, users have a choice to update their app to get the latest features. That means, there is a multiple version of the apps installed across devices. I might have the latest version, while my friends get stuck on the other version.
While the app may have different versions, they are still getting data from the same server and database. That’s why it is important to create a service and database which support all version available across client’s device. It’s what we call backward compatibility for software.
Not only its dependency to BE services. Sometimes apps are also storing data inside the user’s mobile devices. As an app developer, it is crucial to make sure the data reading would stay consistent or at least not breaking in many of the app versions. That’s why I associated that mobile app development is more heed to “time” or the vertical plane. Because app developers are not only paying attention to the latest app versions but also need to think about the multiple previous versions as well — whether it would break with certain changes from BE or even the app itself. They need to leap thru “time” like the Avengers in Endgame. They often have tools to see the adoption rate of their app versions in the market, then make reconsidering decisions based on it. All for the sake of consistent behavior and make sure old versions won’t break with the upcoming BE/App changes.
Contrarily with the web, mobile apps don’t care so much about the “space” aspect. Each mobile operating system has its own standard programming language to create an app inside its environment. For Android Apps, it is written in Java whereas apps in iOS are written in Swift or Objective-C.
That means, there is no way to create a single app that can be installed on both Android and iOS. Many startups are basically created two separate kinds of apps in Android and iOS with an exact similar UI and experience. Mobile apps engineer basically only cares about their own operating system environment, cause their app would only live in one single “universe”. That’s why mobile apps are often referred to as “native apps” cause they are native to their own operating system.
Yes… in this modern app development, sometimes developers still need to pay attention to the compatibility across manufacturers for the same version of the operating system because of the device permissions, file system control, etc. But that rarely happens.
Even though they’ve been both branded as “frontend” nowadays, I think mobile apps and websites still ununifiable. Each of the interfaces cares about different aspects. Websites seem more care toward “space” which I can translate to be “accessibility” while mobile apps seem more care toward “time” which I can translate to be “inclusivity”.
Do you see what I see? Hope this story entertains you as it entertains me.
Cheers 🍻— ferzos