Back end vs Front end – where to start? The continuation of the android reading challenge leads me to attempt to solve this important question.
Currently I have read much of the Android documentation on the new architecture.
To roughly sum it up for those who are interested, Android's app architecture follows the layer-based design pattern.
The first layer is the UI layer (user interface layer). This is the part that represents everything that is visible on the screen as well as interactions with the application.
The second most important layer is the data layer. It does not only concern databases but much more. It takes care of everything used to extract and produce the data.
Then there is the domain layer which is optional. Its existence depends on what your android application will do. Its role is to manage the complex logic of your application.
It usually contains reusable functions for your entire program. To be used only when really necessary.
For more information, read the page of android architecture overview.
After a long reading and good reflection on this section of the documentation, a question came back to me. This is an important question that we often come across.
To develop an application should we start with the front end or the back end?
What is the back end and the front end?
Back end and front end are not new terms. you will often hear them by the terms back end developers or front end developer or fullstack developer to designate both.
We talked above about the layered architecture of android. If you read the introduction, the back end consolidates the data and domain layers. The front end concerns the UI layer.
To make it short, thehe front end concerns all the tasks that the user can see and/or interact with.
In a text editor, this is equivalent to clicking a save button.
The back end concerns all the tasks that the user cannot see in your application.
If we go back to our simple text editor as an example, the back end is equivalent to writing your text to a file after clicking the save button.
Now that we know what a front end and a back end are, we can now ask ourselves where to start if we want to program an application. Do we design and code the front end first or the back end first?
Back end vs Front end – where to start?
In the design and development of an application, android or other, we are often confronted with several dilemmas.
Do we start with graphic or visual design? ie the front end? or are we working on the architecture of data and functionalities? i.e. the back end?
Several arguments compete.
Arguments in favor of the back end
I often started my personal development projects from the back end because we were often taught that in my studies.
Starting from the back end allows more flexibility in the project and helps to save time.
This is true because when we do the back end we create a kind of kernel that can be used over and over again for GUIs.
If we do our architecture very well, the back end can have several types of graphical interfaces and be adapted for several designs.
Starting with the core allows you to have a kind of base on which to build whatever you want.
Problems with the back end
When I started working with freelance clients, I found that almost everyone judges the quality of your work by what they see.
I personally don't know any customer who will be satisfied by the fact that we tell him that we have done X functionality and he remains Y without seeing the result with his own eyes. It's normal and it's human.
Even if we have to make a kind of prototype to reach an agreement with the client, it is still the visual or the front end of the program that is put forward.
Another problem I often find is that back end development is often not linear. It can happen that I have interruptions for a long time and then I come back to the project.
These interruptions may be work on a more pressing project.
In this case, it is often difficult to remember what work remains to be done if you come back to it.
There are strategies for noting progress and what remains to be done, but they are not the easiest to implement because it requires discipline and organization.
Starting with the back end would force us to dig into the code to find the gap to work on each time.
Arguments in favor of the front end
Personally, I only started with the front end very recently. In my studies in programming and in my entourage, I was often advised against it.
Recently when I started with this strategy, the benefits were almost immediate.
Starting with the GUI:
I can immediately show the customer the visual appearance of his future product.
You can very quickly agree on the visual details of your product.
The client has an idea of what his software might look like and he has time to study it and suggest improvements.
On my side as a developer I have a kind of model that will allow me not to lose sight of the progress of the project.
After agreeing with the client it is easier to focus on the back end.
If it's a personal project I constantly have the motivation to continue the development because I have the appearance of the software already in front of me.
Having the appearance of the product makes it easy to market the application even before the start of the development vote.
This collects the contacts of prospects who are interested in the product to facilitate its launch.
The front end gives more visibility on what we need to do the back end.
Unless you know all the details of a project, starting with the back end is not without profound change for later.
When you start with the front end, it is easier to have the project validated and to confirm the contents of the forms and certain details that can be used for the development of the back end.
Problems when starting with the front end
This section may be biased because I just started with front end practice first.
The first problem is that the visual design of the user experience is not my forte. I can't go further than native android interface or boostrap or materialize frameworks.
If visual app design isn't your forte, starting with the front end could quickly turn into a nightmare.
If the project must be ported to several platforms, screens or systems, the design of the front end can quickly become complicated
It is at this time that the back end is important, the kernels give a base on which we can adapt and easily evolve the front end.
Apart from that, I only found qualities. I am waiting to have more experience and elements to develop this section.
So which strategy is the best? the back for the front?
It all depends on the project and the technology you use to work with. Generally among web application developers, the separation of front and back is clearer than among android developers.
In my opinion, doing the back end suits the developer more than the clients, while doing the front end suits the client more than the developer.
I vote for the front end first and by default because each time we lose motivation in the back end, the front is there to bring us back to reason.
Also, it makes it easier to work with clients rather than if I start with the back end.
I will start with the back end if the project will be ported to several platforms or/and I have absolutely no idea how I will design the front end.
To be a good developer, you have to know how to put yourself in the customer's shoes, so front end first.