I have a bone to pick with all those people out there happily expositing to the world about the difference between “front end” development and “back end” development. Go google it, and you will find people who sweetly explain that the front end is about the appearance and experience of things -the user interface and user experience while the backend is about server side code – managing and processing data. It is about algorithms and business logic that is necessary to make a web application work.
I would not advise you to do that. My point is that the premise that business logic belongs on the server, and that algorithmic code, or even API calls are always going to hide somewhere on the backend is simply not true.
There are things that are better to do in the client and the server respectively. Code that requires heavy processing or an extra level of privacy like a secret api key are good candidates for the server. Code that benefits from being literally in the palm of the hand of the user – like code that is fetching user GPS coordinates, or time zone – you want that in your client. There is a lot of wiggle room in the middle. There is a substantial amount of functionality that could be built on either the client or on the server. There are quite a few opinions on what should go where. I have my own opinions on that topic but I’m not going to wade into that discussion today.
What I want to talk about is the biased-B.S. There is a bias, a very prevalent bias, a little twinge belief that hides in the attitudes of dev managers and developers everywhere. That bias is the idea that backend development is more rigorous or more technical that frontend development.
It starts with something like the above suggestion that the business logic, the data management, or the “algorithmic” code must be in the backend and progresses to the suggestion that the frontend developers are working on “appearance” but not “functionality.”
Just a quick google search lead me to the following gems of B.S. from some otherwise respected bloggers, and vloggers:
- Frontend developers build how a website looks.
- Backend developers build how a website works
later in the article we see this:
“Backend developers, on the other hand, need to have critical thinking skills. A backend dev is often debugging code, as well as designing systems for how the user will interact with the website. “
We aren’t in that world anymore.
Not only that, but the world of web technology has been changing at an ever increasing pace. The premise that frontend development is less rigorous or that front end devs are less than, or lite developers is not even close to true. From my own experience, I found backend development to be a far simpler world than the one I now inhabit. The front end world is one in which code quality and a rigorous approach to development matters more, not less than it did when I wrote back end code.
But let me give you a little taste of what I have worked on in the past year.
I’ve had to write python, luckily I already had experience as a python developer. See there is this thing called server-side-rendering. That is when you build your client side appearance layer with server-side languages. So the idea that we front end devs might get by without knowing a server-side language is faulty at best. I’ve worked with PHP, python, ruby, and node.js. Node tends to be the preferred option for front end developers because you are likely already working with it, if you have any kind of task runner or build process.
I created my own build process for a front end application using node.js. We are on the server again. Funny how us front end developers can’t get away from server-side code even though we supposedly only work on the “appearance” of a web app. I also experimented with several libraries for that purpose – parcel.js, webpack.js, rollup.js. I am now mostly working with rollup.js. I occasionally work with gulp on my older projects. Gulp is a task runner that can double as a build process.
I built several client side applications in Vue.js. I started learning Svelte.js. I revisited Angular for a project, only to realize that it has changed dramatically since I last used it four years ago. I helped another developer get an extension spun up using React. I am not proficient in react. I am proficient in getting frontend libraries and frameworks to run in the SDK environment that I work in so I was able to help another developer get react working in our environment.
That is just a taste. The reason I’m feeling so bitchy about it is that I am not tolerant of the suggestion that what I do is not “development”. I’m not tolerant of the idea that I don’t need logic skills, critical thinking skills, an understanding of algorithms, problem solving and debugging skills, and a deep understanding of the ever changing technologies of the web. I’m not tolerant of the idea that my work is “appearance not functionality.”
“You don’t need to come to this meeting, it is about the server architecture in the SDK. It’s not relevant to you…” Me: “You mean the server architecture I run every day and build stuff on top of… that architecture.” I do need to know it. I did. I learned it. If I hadn’t I would be running to another dev every time I ran into a minor hiccup on my local server, why would I want to do that?!?
Do you know how many times I have run into a time-consuming problem only to discover that there is a great tool for that – a tool that makes fixing that problem quick and easy… “We would have shown you how to use that tool but we didn’t think you needed to know. You are just working on the UI after all.” Several times. Several.
I had no idea moving to front end would require gaining a far wider skill set than back-end coding, but would also mean regularly dealing with people who don’t quite understand that you are a developer. And while front end development necessitates solid logic skills – the kind you might have picked up in a discrete math class, what you really need is something most back end developers don’t have: spatial reasoning skills. Spatial logic matters on the front end.
I don’t want to steer anyone away from the front end, it’s a great career path, just keep in mind that backend development is much, much easier and no one will ever doubt that what you do is “development.”