Jumping straight from university to working at think3 has taught me a lot about working in the web development industry. From the get-go, I had to work on an extensive back-end system; Alphas Careers, which was developed in a framework I wasn’t particularly fluent in. I also ran into some frustrating debugging experiences, dealing with some outright peculiar errors. My most significant learning experiences, however, have been at times where I’ve had to dabble in front-end development. These experiences involved working on static websites, as well as developing interfaces for web applications. With my experience primarily in back-end development, this has proven a challenge, but one I was eager to overcome.
Initially, my understanding of the differences was quite simple. Front-end development involves an event-driven approach. Code is written to control what happens when an event occurs, events such as a click, or when the page is scrolled. It also involves working with styles, ensuring the interface looks and behaves exactly as the designer intended it to. Back-end systems, on the other hand, tend to be written in object-orientated code, to better represent data and provide a means of data handling to the front-end, through an API or rendered into the markup (as is done with procedural PHP). Beyond this, I never thought much of the differences I’d come across. This meant that delving further into this area was a very educational experience.
A different mindset
One of the biggest points I’ve taken away from my experience is that developing a front-end requires a vastly different mindset to developing an API or back-end for a web application. Development is primarily focused on the end user’s experience, whereas the back-end system is practically invisible to the user. Primarily, when moving from one end to the other, you are developing for a different audience. A good back-end makes the lives of other developers easier, while a good user experience makes the life of the user more comfortable.
Another important consideration is browser compatibility. When developing an API, having the front-end understand what the API is communicating is down to its developer. Front-ends, however, have to account for all available web browsers, which have more technical differences than the end-user would assume. Ensuring your website or web application is compatible with as many browsers as possible is vital to pleasing all of your target audience. Thankfully, we have technologies like Babel and polyfills, which help us with this.
A more visual approach
Working with the front-end has taught me some valuable lessons that I’m not only able to use in future front-end projects, but also back-end projects. For example, I’ve gained an appreciation for the work that goes into integrating the front-end with an API, which can be frustrating if the API’s documentation isn’t clear. It has taught me the importance of ensuring that APIs make sense to the front-end developer. Having an API which is concise, easy to integrate with and provides you with the functionality you need saves you a lot of work. This should be considered a priority, as it avoids the front-end developer having to cut corners to get their application to work correctly with your system.
Working with the front-end more has given me insight into how the back-end should behave to make the developer’s life easier. It has given me a new respect for developing user experiences, and all the considerations that must be made to ensure that it hits as many users as possible, and functions without issues. Browser compatibility and performance are both essential, making the user experience more pleasant and helping with SEO.
Going full stack
Overall, it is undoubtedly an area of development I would like to progress in. Developing full-stack gives you the pleasure of seeing the back-end and front-end work in harmony, and you can visualise the data moving from the database through your API to the end-user’s browser. This interest is certainly something that has grown during my time at think3, and I hope to work on UIs and user interfaces more in the future.