8 ms·
The thing is front end dev is actually very different from back end dev. Having done a lot of both, I can say that they require very different skillsets and dif
by Silhouette 6y ago
The thing is front end dev is actually very different from back end dev. Having done a lot of both, I can say that they require very different skillsets and different knowledge, so it is quite normal that they're not done by the same people.
I've seen this argument many times, but as someone else who has done a lot of both, I've never really understood it. It's just programming, like any other software project. Sure, you might use different languages and each might have its own tool chain, but unless you're using radically different languages or tools in the two cases, those are probably superficial differences. Most experienced professional developers can probably work in several languages, and you pick up a new tool chain in days if you need to. But the fundamentals of programming are still much the same whatever you're building. Certainly different applications also have different knowledge and skills -- writing a business automation tool is likely to be quite a different experience to writing a control system for ABS in a car, say -- but for a typical web app, the front and back ends are usually going to overlap a lot in this respect.
As I mentioned in another comment, the huge exception to this is junior roles, because at that stage in someone's career they probably haven't gained much diversity of experience yet and you probably should start by focussing on one particular aspect. So if your project team consists of many relatively junior people and not so many seniors with broader experience, sure, you're going to put most people specifically on front-end or back-end, at least to start with.
- beefbroccoli 6y agoi've worked with way too many programmers who were great at math but couldn't match their shirt and pants.
- Myrmornis 6y agoI think the issue that the article skirts around is that front-end work involves UI design and styling. So sure, both involve using sophisticated modern programming languages etc, but the presence of visual styling work is unique to the front end and specifically what a lot of back end programmers feel they are unable to contribute to. I know that many javascript engineers feel similarly about their design and styling skills, but still, in my opinion the presence of UI design and styling in frontend work is the main contributor to the cultural/team separation.
- Silhouette 6y agoWe have been rendering HTML and adding styling from the back end since long before JS was cool... I think the real distinction here is between programming and interface design, which are also separate skills that any given person might or might not have, but that is true whether they happen be coding for the front or the back end at the time.
- d--b 6y agoWell depends what you call "backend", I tend to think of it as the business code that the interface operates with. Namely the API. I work in finance, so there the backend consists of gathering data and applying statistics on it. The frontend is a presentation of the data and a way to interact with it. The webserver code that renders web pages definitely belongs to frontend dev.
- Silhouette 6y agoPersonally I would call code running on the user's device the front end and code running on some server or other remote device the back end. YMMV. Maybe this explains the difference in our perspectives. To me, other than perhaps the very first data collection where maybe the source is only accessible from the back end, whether things like statistical analysis or rendering of the results happen on the front or the back end is something you will decide on its merits for each project, not something that is necessarily tied to the mechanical programming skills or libraries on one suffer or the other.
- deleted 6y ago[deleted]
- bcrosby95 6y agoThis would mean server side rendering is back end development. Traditionally working in templated languages was considered a front end job despite being translated server side.
- real_ben_michel 6y agoActually, programming is just a small part of the product development process. A huge amount of work is spend on communication, architecting, planning, gathering user requirements, maintenance... Then you need deep knowledge of the technical domain. In that regard, I would say FE and BE differ tremendously. The constraints are different, the people with whom you engage are different, the objectives are different. It won't be very obvious in small companies and young product teams where everyone does a bit of everything. As things scale up and gain maturity, people have to specialise, and it becomes very hard to be the best at both. You have to pick: making great UI components, or storing data optimally. You can be average and do a bit of both, but if you want to be an expert engineer, you'll need to specialise in one (which is what I think d--b was referring to).
- Silhouette 6y agoOf course there are many other skills involved besides programming, but I don't make the big distinction you apparently do. For example, the part about storing data optimally is going to be handled by the database in most web applications, and using that tool well is a distinct skill set from both front- and back-end programming. Indeed the latter two have far more in common than either has with designing an efficient database or optimising queries that access it, or with designing a good UI for that matter. At the very top of each field, sure, there will always be those specialists who live and breathe that subject and can do the things no-one else can, but most people will never achieve such proficiency in any field during their career and most businesses will never hire anyone on that level, so I'm not sure it is going to generate much insight to talk about extreme cases. For anything below elite levels, you certainly can have the same person with expert skills in both front- and back-end dev, or in back-end dev and DB admin, or in front-end dev and UI design, or just about any other combination of relevant skills.
- murgindrag 6y agoUnderstanding how to, for example, efficiently organize a database is a very different skill set from, for example, making a response, accessible CSS/HTML5 design. The core skill set is only vaguely similar. Doing back-end well requires in-depth knowledge of algorithms, networks, systems, and computer architectures. Doing front-end well requires in-depth knowledge of human beings. I think the problem here, though, is trying to overgeneralize. I've worked on projects where you want to split things vertically (apps / plugins / etc. which have isolated functionality and handle back+front end), and horizontally (front-end / back-end split). That comes back to what the system does, as well as the make-up of the team (full stack developers will do different things well than teams of specialists). The danger comes in when you try to mix pieces of the two. I had a system with a simple, elegant architecture with a vertical abstraction. A junior engineering team came in, who had only seen horizontal abstractions. They didn't understand it. They didn't get functional code either (they had only seen OO). They decided it was all very confusing spaghetti code, broke all the vertical abstractions, put in half-done horizontal splits, and the system became unmaintainable.... You can blame that on junior team from the high-level descriptions, but the deeper problem for that system was mixing abstractions and programming models.
- Silhouette 6y agoIt is becoming clear to me that much of the perceived difference of opinion here is just because of terminology. I was thinking of "development" as meaning specifically the programming side of things. This is quite distinct from the other skills you mentioned like responsive design or database design. Of course someone might have both front-end programming and user interface design responsibilities on the same project, but I would no more assume that than I would assume the same person would have both front- and back-end programming roles, and the skills for the latter combination are much more closely related. My point here is just that everyone has a different mix of skills and trying to pigeonhole people or restrict anything to only certain combinations is not necessarily either realistic or helpful.
- jasode 6y ago>, I've never really understood it. It's just programming, like any other software project. [...] But the fundamentals of programming are still much the same whatever you're building. It doesn't matter if the underlying programming fundamentals are the same because the human brain still has preferences on what it wants to work on. The mistake is applying some "umbrella term" (i.e. "programming") for an activity and thinking that will automatically make all sub categories attract the same interest level. It doesn't work that way. This same phenomenon happens in other intellectual activities such as mathematics, writing, painting, etc: One mathematician might prefer to study algebraic topology while another mathematician prefers to work on number theory. Thus, saying, "I don't get it -- it's all _math_ so why should one person have more interest in one branch vs another?!?" ... does not remove the preference. One writer may prefer to write political analysis essays and never writes fiction -- but another writer prefers to write fiction and never opinion pieces on current events. Therefore, saying, "I don't get the fiction/non-fiction dichotomy because both activities are just the same task of manipulating _words_?!?" ... doesn't make a preferred interest disappear. Yes, some authors write both fiction and non-fiction but the existence of them still doesn't remove the preference of other authors who specialize in just one. Even within sub-category of fiction, you get sub-specialization of "mystery novels" instead of "romance novels". Likewise, saying "painting is painting" does not change the fact that an artist might prefer to always paint landscapes and never horses or people. >It is becoming clear to me that much of the perceived difference of opinion here is just because of terminology. I was thinking of "development" as meaning specifically the programming side of things. [...] and trying to pigeonhole people or restrict anything to only certain combinations is not necessarily either realistic or helpful. Some people naturally just want to pigeonhole themselves. I've done frontend work on old DOS machines (text-based UI), raw Win32 API, VB/C# GUI forms, Javascript/HTML -- and I don't like any of it. I prefer to program the backend algorithms. Yes, coding a loop to "iterate through all window controls to enlarge them by 10% in the GUI" has something in common with "iterate through all nodes of a graph to optimize a path" ... because they're both "loops" ... but they have very different levels of intellectual satisfaction. I won't argue with you if you feel that they should feel exactly the same because they're both "programming" but I can't help it that I don't derive the same enjoyment. If I was employed by Google, I'd enjoy working on the backend ranking algorithms. To a lesser degree, I'd be ok with working on the spider crawlers. But I'd quit if they assigned me to work on the web frontend where users type in queries. But I'm also glad there are developers who prefer to work on the frontend instead of the backend because it allows people like me to stay with my preference.
- bregma 6y ago> It's just programming... Ah, yes. Quite.