I am currently working at moldedbits, after working here for a few months as a back-end engineer, I decided to change my technical area from back-end to the front-end. I believe it is a good move for my career and it will surely add to my benefit. So basically I am drafting this to let you know about the challenges I am facing working on front-end development, after a couple of months experience.
Currently, I am working on Android Application Development. Android has an extremely fragmented ecosystem, with a multitude of devices in the market with varying screen sizes, memory, sensors and other configurations. So it gets challenging to predict how an app will behave across different devices, after the development of it.
- In Layout Design -: First and foremost challenge I am facing is to design layouts in Android. From my prior position’s experience, I have understood my role there did not require to beautify things. We presented things in their crude form. Thus, Backend developers don’t know much about the designing part of the screen, and I feel the major reason behind this is, that, our position doesn’t demand of the task to be achieved. Like I said, I had experience in the data flow kind of things (like retrieving data from database, manipulation of the same, according to business logic and then return it to the client). But as a front-end developer, I have to take care of how my Applications looks at each stage of escalation.
- The Runnable code is not centralized -: A major challenge in mobile development is that if any change is required in the source code, then the application needs to be updated across all devices where it is installed, otherwise its behavior can be ambiguous. So, during the development, we have to develop the app in such a way that if any change is needed in future, then that changes can be handled by server APIs itself. Despite all this, still we cannot cover all scenarios also it is quite difficult to deploy code on all devices in contrast to the backend, where all codes are kept on the server-side so deployment becomes an easy stuff here.
- Difference in approach -: When you have to simply transform your work style from one way to another, it welcomes a lot of challenges. The transformations; I will elaborate with the help of below points.
- In backend development you have to think of a solution with respect to server configurations and handle multiple requests at the same time. But on the front-end you have to think about multiple devices and a solution which can be feasible for all devices. In front-end, we only process that requests which are relevant for a particular user.
- We don’t prefer caching in backend for user related data because there are multiple requests which needs to be processed at the same time. But in the front-end, we may save user’s data in the Shared Preferences (a local storage for Android devices), as it is user-specific.
- In backend development, we have to take care about security and integrity of data, but the front end developers rely on backend developers for handling security related issues.
- In the front-end, app drive is dependent upon the API response and we need to engage the user until we do not get a response for a better User Experience (UX), an important fundamental in Software Engineering.
- Client acceptance -: This is also one of the major challenges in front end development because in back end there is an abstraction layer for the client, and he/she doesn’t know what is going beyond that layer. Client only interacts with the front-end design and it’s the responsibility of the front-end to handle and get the data which is required by the client. A client is never interested in the way a developer chooses to handle the API response. You can think of this as an analogy to a black box.
- Lack of software/hardware integration -: As different devices can have different capabilities, e.g. different number of cameras, extra sensors, applications need to handle all possible scenarios gracefully and provide alternatives to users.
Despite these challenges and many more which I may have skipped, the fact that these two areas of development are strongly related to each other and that it is very hard for any one of them to exist independently, cannot be ignored. My piece of advice would be to plan things while switching and gradually learn the difference in process under the guidance of some expert and do not rush into things. I believe, all challenges can be overcome if you have the desire and will to learn something. If you have the passion, eventually, everything will fall into place for you and will be understandable. There is huge demand for the Front-end and Back-end developers and nothing is over any other thing. Both, have its own importance. So keep learning and keep sharing.