Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been to about 50 interviews in my life. Many of them I've done just to get experience, and keep doing.

The question I keep hearing again and again is

Are you more a front-end or a back-end developer?

I program mostly for the web, but 2-3 years ago I was database developer, and even wrote a desktop app. And if I remember correctly, I heard this question at interviews that had nothing to do with the web.

I can't remember exactly what I was answering. IIRC, usually I would say: it's hard to tell and that I had programmed an application X, Y and Z, and W. Last time I started answering and then said "Wait, how do you define backend?"

Now, does this question, whether I'm better at frontend or backend programming, really make sense nowadays?

  • a website has a front end, true. But it's backend is usually the admin website. There's little difference between them.
  • if I write a DB driver for a Django-driven website, is it really a front end thing?

I remember at some interview I asked what are front and back ends, and got an answer that front end is for clients and used or visited a lot, and back end is something for internal use. Well, it makes no big difference. Things must work and work efficiently on both sides.

I also led a dozen of interviews myself, and have never made this question, because it makes no sense and doesn't come to my mind.

Is this just a test whether I jump into the hoop and start speaking or if I try to clarify the question?

share|improve this question
24  
This is terribly misinformed a website has a front end, true. But it's backend is usually the admin website. There's little difference between them. Backend == business logic and data manipulation. On the web this is usually C#/PHP/Python etc. Frontend == presentation/UI. Things like HTML/Javascript/CSS etc. –  Paul Aug 12 '11 at 17:07
    
pauleck: Yes, I was misinformed. –  culebrón Aug 12 '11 at 17:22
2  
For some reason some places like to stick their developers in a box and not let them out. Either you do UI or you do business logic or you do database. I think it an incredible waste of talent but hey im just a programmer what do i know. –  Chad Aug 12 '11 at 17:24
2  
Completely disagree with pauleck1. Thats is completely wrong. HTML/CSS are web design responsibilities. The front end developer uses PHP/Python/java/whatever to create the user interface. This user interface is still software, but is abstracted with the software containing the business logic. –  user606723 Aug 12 '11 at 17:24
1  
@pauleck1: That's not universally true. A major IC producer for example uses the terms frontend and backend in their production software and thus it is present in the business domain and has a totally different meaning to the users. It's not uncommon for users to refer to an admin interface as the backend of their domain. –  Falcon Aug 12 '11 at 17:38

10 Answers 10

up vote 50 down vote accepted

The meanings of the terms frontend and backend are mostly defined by the context in which they are used. I think when being asked such a question and you aren't really sure about the context, then you should ask them what they define as frontend and backend.

Here are some common contexts:

  • Client-Server Applications: The client is often called frontend while the serverside is called backend. In such scenarios, the client-logic is a part of the frontend, even if you have a smart and rich client.

  • Web Applications: The UI is often called frontend (despite being served from the server side) and the application logic is called the backend.

  • Databases: Databases are often referred to as database backends.

  • Desktop Applications: Anything you see and interact with is the frontend, while the application logic is usually called backend.

  • Domain Concepts: Sometimes the users refer to domain concepts as frontend and as backend, for example when there's the frontend for the customer and the backend for the company users (admin interface).

So my advice is: If the context isn't obvious, then you should ask.

Now, does this question, whether I'm better at frontend or backend programming, really make sense nowadays?

Yes, it absolutely makes sense and can be answered. Just tell them what you'd rather work on, depending on their context.

Most commonly, though, as a backend developer you are focussed more on writing models/APIs for domain logic or database access (etc.) which other developers might use directly from their code, while a frontend developer typically focusses on UI-logic and -design which is presented directly to the end-user.

share|improve this answer
4  
+1 Couldn't have summed it up better myself... –  Marjan Venema Aug 12 '11 at 16:14
1  
@Falcon A minor nit. The UI is often called frontend (despite being served from the server side) and the application logic is called the backend. This is an assumption in technology choice, ie...SL/Flash are not served anything with regard to view; it is all client side. –  Aaron McIver Aug 12 '11 at 18:29
1  
even within a single org, there can be confusion. we use two databases, which the DB guys call 'front end' and 'back end' or sometimes 'front end' and 'middle tier', an app server which the .NET guys call the 'back end' and the web server which "of course" is the 'front end'. Except when some people refer to the web & app server code together as 'front end' and anything happening on either of the databases as 'back end'... Argh! –  StevenV Aug 12 '11 at 20:13

I think the distinction they're trying to get at is a pretty basic one.

Front End: The part of the software that interfaces with the user. This is code that presents information to human beings and gets questions, requests, or commands from them.

Back End: The part of the software that does the "real work". This is where information is stored, retrieved, relayed, and processed.

If your solo projects usually look very pretty but don't do very much, you're the stereotypical front end programmer. If your programs do things nobody has done before, but you have to use weird command lines to tell it what to do and you have to view the output with a text editor, you're the stereotypical back end programmer.

share|improve this answer

Front-end and back-end can have significance in the J2EE world, in that there are developers who know a lot about how to make UIs look and work great (using stuff like HTML, AJAX, and templating technology (JSP, Velocity, etc)), and can perhaps configure an MVC architecture. Ask them about database transaction boundaries, messaging, multithreading, and various inner workings of the system, however, and they are lost. Likewise, someone may know a ton about how to make an ORM tool sing, but would lost if she had to build a grid control on a web page. The skills are different.

Now, the answer you received seems aimed at something different. They were not describing the section of the apps you specialize in, but what types of apps you work on. They were defining front-end really as client facing: what are the caveats of building a highly available web site with thousands of concurrent users? These tend to be more on the lines of information delivery than transactional data collection and management tools.

Back-end sounds more like back-office, or enterprise application development, which often means heavy analysis of the types of data needed within an enterprise and enabling a company to work better through information systems. There are some different concepts--a single enterprise probably will have fewer concurrent users but will probably have more interaction with other enterprise systems.

So, you are right to ask, as it could be the type of applications you prefer or the areas within the applications you excel at. If you really know and can do it all, that's fantastic and you should say so, but if most of your work is in one area, you can either say how good you are at that (because that's what they want) or how you really want to branch out and have been working on this other stuff in your spare time.

share|improve this answer
    
I don't have edit rights, but you should close your parenthesis that opens in the first paragraph and never closes. –  Lotus Notes Aug 12 '11 at 20:33
    
Thanks! Looks like cHao did it for me. –  Matthew Flynn Aug 13 '11 at 4:20

I think this has validity in understanding what you like and don't like within software development.

A front end developer when involved with the web stack may focus on HTML/CSS/JS coupled with whatever framework they want to leverage. The back end developer may focus on business logic (this can also exist on the front end) and the serving of the data via a database or other means within a Java based environment. Outside of the web stack; a .NET desktop application being served data via Web Services; it becomes readily apparent what is the front end and what is the back end.

If the front end development includes UI design, UX design and other components only specific to the front end, a typical back end developer may want to avoid them at all costs. Perhaps the back end includes a publicly exposed API; a typical front end developer may want to avoid that effort like the plague.

All in all it is just software development but there are certain types of software development individuals favor more than others and as the interviewer you know what the candidate will be developing.

share|improve this answer

Basically, it boils down to this..

Front End Developer responsibilities

  • Customer facing user interface.

Back End Developer responsibilities

  • Correct implementation of business logic with adequate performance.

EDIT: apparently this is not sufficient as some others are still getting it wrong.

Front End Developers use the -same- technologies as the Back End developers. Common technologies-

  1. jsp/php/phython/java/C# whatever
  2. Message Queues
  3. SQL
  4. Probably a ton of other stuff.

In a good application/system, the front end is abstracted from the back end. The front end compiles user interaction and delivers it to the Back end. It can use whatever technology it wants to do that.

The back end receives this compiled user interaction and does the appropriate action based on business logic.

Fruther more, every good application/system can be abstracted to fit the client/server paradigm.. even if if there is no client/server. There is the client that interfaces with the end user.. and there is the server that takes this interaction and does the appropriate operation..

Now I say 'every good application' lightly. Surely there are good applications that don't follow this because they didn't need to... but most business apps don't fall under this catagory.

share|improve this answer
    
I would add that "Customer" is any end-user, internal or external, as the OP seems to not understand this. –  Paul Aug 12 '11 at 17:12
    
Well, that depends on priorities. Customer would be any 'high priority end-user' or maybe 'sensitive end-user'. Back End developers may design crude administrative utilities used by internal users. These are internal users who have special privileges to override the front end interface. –  user606723 Aug 12 '11 at 17:21

I'd echo @user606723's answer.

  • Front End: UI stuff - HTML/CSS/Javascript, or one of the hundreds of Windowing API
  • Back End: Server stuff - servers, servlets, db interfaces, sockets, business logic, middle tier, numerical analysis, machine learning

These categories obviously interact, but they do involve fairly distinct sets of skills and developer interests.

Any chance that you or your interviewers are conflating "front end" and "back end" with "front office" and "back office"? "front office" generally refers to public/customer facing services (sales and service for example) and "back office" generally refers to internal services: (inventory, payroll, pricing).

share|improve this answer
    
Yes, I did conflate "back office" with "back end". –  culebrón Aug 15 '11 at 6:51

You seem to feel that there's no distinction between these two, or that a person can't prefer one to another, because they're both important. That's not a logical connection. On a team of one or two, I guess you don't have the luxury of preferring one to the other. But on a team of 10 or 100, some developers might gravitate more to one or the other. After all, it takes very different skills to handle scaling and concurrency on the back end than it does to get the UI pixel perfect on the front. So there are some devs who will say they prefer the front end, and explain why, and some who will say the back, and explain why, and some, like you, who will say actually you like both of them and enjoy being part of the end to end development. As always, the "Why" is so much more important than the actual answer.

If you want to clarify their question, I recommend you do it by proposing your definition of front and back end, saying "do you mean the user interface vs the business logic?" or "do you mean the client side code vs the server side code?" and then letting them clarify. Saying "what do you mean?" suggests you aren't aware of this distinction at all. Once you get a clarification, whatever your answer is make sure it's positive. If you don't like building UIs and got nutsy when people have meetings about what shade of blue to use, this question isn't the place to tell that story. Instead focus on what you like/are good at on the back end. If the last time you tried to do server side code it kept falling over under any kind of load, so you're scared of the server now, again this isn't the place for that story. Talk about what you like about building a powerful and inuitive UI, or how cross browser challenges bring out your best. If you like them both, don't just say it's because they both have to work or that it's an arbitrary distinction. Talk about how the whole app matters and you have strengths throughout the ecosystem.

And above all, do not tell the interviewer you think their question is outdated or doesn't make sense. If you're going with "both" for an answer, you could maybe get away with "well, this seems to be less of a distinction than it was when I started programming, but ..." and then give your answer.

share|improve this answer

I'd probably argue that clarifying the question is still jumping through a hoop where you want to understand what they mean and may catch some off guard that aren't expecting to have to explain what they mean by each term. Where does middle-ware fit into this paradigm? Are internal web services considered back-end or front-end? It's a good question though another point is to understand which way do you lean in your stack. Some people prefer working on the UI and that part that can be viewed as flashy or sexy, pardon the pun on Flash.

Are you more a front-end or a back-end developer?

Is this a question of what experience one has, what desire one has, or something else? There are more than a few ways one could interpret the other part of this question. Does being more require desire, experience, ability or all three?

share|improve this answer

I think it's real enough. Even if you don't ask them for their exact definition, it gives you a nice chance to talk about what kind of work you prefer to do.

My understanding of it for websites is, that in the common MVC architecture, The Model and the Controller are back end, all HTML,CSS,JS are front end and the View is to some extend 'in between', since it makes use of the business logic an model to create the user interface. That said, the admin interface in this case is as much front end as the user interface for customers.

In the context of this question, somebody preferring front end work would be more interested in user experience, maybe even in design questions, while the back end developer would be more interested in structuring the database, data model and business logic.

Another reason, instead of preferences, may simply be better knowledge of the languages, tools, plugins and so on, that are mostly used in one area or the other.

share|improve this answer

You're right to ask them to give you their definition. Would I rather program software for customer service/front end users or accounting/backend office users? If this is their definition then there is no reason to ask the question.

Now, would you rather build a website or a web service? Why? I just worded this to fit in a web development situation. That's more front end verses backend development.

I have to interface a lot of databases/applications in my current job. It's nice to have a block of alone time to build it and make sure it works, but I really prefer to build an application that someone wants and see them enjoy it. Someone can thank me for moving all those data over; it's just not the same. I can't explain it. As enjoyable as it is to work with front end users, some of their requests can be equally frustrating. The Agony and the Ecstasy of programming.

share|improve this answer
    
Yeah, the inspirit/frustrate is sooo familiar, thanks. –  culebrón Aug 12 '11 at 17:25

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.