Since I began my programming journey, I’ve had this weird misconception that front-end development is easier than back-end development. After all, being able to create intuitive user interfaces seems to have more to do with your imagination than it does your actual programming skills…right? Everyone with basic web development knowledge can create a barebones website via HTML, but you need a certain eye for aesthetics to bring the website to life. Or maybe this was just my lack of artistic ability talking. Because after spending the past few weeks working on Doge Parks, where my primary focus so far has been on the front-end, I no longer have this misconception. In fact, in many ways, I think front-end development is harder than back-end development.
When I think of back-end development, I think of data, relationships and tables. Even if you are using a NoSQL database for storing dynamic schemas, there’s still some type of structure that you need to adhere to in order to manipulate the data stored inside (key-value pairs, json documents). Once you understand certain rules, adding, deleting, retrieving, and modifying data becomes fairly simple. It’s also relatively easy to test whether or not your database is working properly and to gauge when you are “done”. You perform a CRUD operation, then check on your database to see if it looks the way it should. Someone on Reddit made a comment likening the back-end development process to doing math, and I like the comparison. If you know the correct formulas for manipulating your database, all that’s left is to solve the problem at hand. Of course, there’s plenty of complex and difficult back-end tasks too, but I’m speaking generally.
The front-end development process is more akin to writing an essay. And I don’t know about you, reader, but I’ve always hated writing essays. You have a plethora of tools available to you, in the form of frameworks (React, Angular, Vue.js, etc), languages (Dart, Swift, JavaScript, etc) and development kits. It’s your job to use them to create something that not only works well, but also looks good. This was something I didn’t understand before working on Doge Parks, because the most complex front-end project that I had completed up to that point was a personal website. But after working on a mobile application, where screen-space can be extremely limited, I realized you can’t just haphazardly display information everywhere. Furthermore, when it comes to mobile devices (and to a lesser extent, desktops), you need to think about responsive design as well. What looks proportionate on one screen might look wildly different on another. And then there’s state management (which I talked about in my previous post), API requests, styling, component lifecycles, etc…to worry about. Front-end development just has way more moving parts to worry about in general. Needless to say, I definitely have a newfound respect for front-end and full-stack developers now.