Categories
Software | February 3, 2023

Back-end and front-end tasks: how to assign them

TL;DR

  • The best way to know to which team I should assign a task, either the back-end or front-end team, is to know the expected result of each task and who will benefit from it.
  • Remember that the back-end user is the front-end, and the front-end user is the application’s end user.

Introduction

I have been working as a developer for the last 5 years, and during all this time, I have noticed confusion around what each development team should solve in a given project. To be more specific, sometimes I feel that some project leaders understand the tasks to solve for the client, but they do not know who to assign them to.

It may seem simple at first glance, but knowing what tasks each project team should perform at any given time becomes complex once you zoom in.

So, how do I easily assign each task to each development team? This article is for anyone who leads or works in technology projects, has back-end and front-end development teams, and needs to figure out how to assign tasks without overloading the team.

How to assign back-end and front-end tasks

What is the difference between the back-end and front-end of an application? This question is easy to answer, and you can get a clear answer with a simple Google search.

But to which team should I assign a given task from the to-do list? This question is a bit more tricky.

My goal is to help you figure out what tasks, obstacles, and problems each area should tackle.

Let’s start with a simple definition of the back-end and front-end of an application for a development project:

  • Front-end development focuses on the visual aspects of the application, that is, the parts that the end user sees and interacts with. This environment is expected to be pleasing to the eye and help the user interpret information easily.
  • Back-end development, on the other hand, focuses on how the logic or business rules should work, how the information (database) will be managed, or how the system should be configured. Calculations are expected to be executed correctly and with great speed, and this team is responsible for the information being stored and always available.

With these two points in mind, we can clearly define each area or part within a system or project. It looks like this:

A back-end service configured with the business rules to execute transactions or send information and two front-ends, one on PC and one on mobile, which show the information to the customer in a nice way.

Given their definitions, the difference between the two areas becomes clear:

The front-end team is in charge of the visual and interaction aspects for the final customer, while the back-end team is in charge of managing the information, transforming it according to business rules, and storing it in databases.
Among these elements, there is a clear differentiator that leaders or managers of technology projects must know and rely on: The customer.

  • The front-end customer is the end user; for example, the person who will use the web application.
  • The back-end client is normally the front-end team, since it is the one that will use the system to request and display information to the end-user or return new information to be stored in the database (this is known as a transaction).

In the case of the back-end, the client could also be an end-user. That is the case for most APIs, which expect the person making use of them to be another developer and not an ordinary client.

So, a good solution to know how to assign tasks is to focus on the user or the client that will benefit from the final result, instead of using the definition of the task as criteria. Changing the paradigm from “what is the definition of the task” to “who is the customer who will benefit from the result of this task” can help us select which area should solve it.

A hands-on example

Let’s put this theory into practice: Suppose we are working on a tech project that involves creating a web application for students and teachers to manage class schedules. The teams available are UX/UI, QA, back-end development, and front-end development. Reviewing the user stories, we came across the following batch of tasks:

  1. Create a login page to enter user and password.
  2. Verify if the user and password received match those stored in the database.
  3. Create a responsive display of the terms and conditions of the web app.
  4. Make login and return user in response.
  5. Save the login user for later use.
  6. Get the list of classes for the current day.
  7. If I am a classroom teacher, list the classrooms I have available to teach.
  8. Update enrolled class with a comment to notify non-attendance (sending class ID).

We will deliver each assignment to the team based on its definition:

TaskTeam to assign
1. Create a login page to enter username and passwordFront-end
2. Verify if the login and password received match those stored in the databaseBack-end
3. Create a responsive display of the terms and conditions of the web appFront-end
4. Make login and return user in response.Back-end
5. Save login user for later use???
6. Get a list of classes for the current dayBack-end
7. If I am a classroom teacher, list the classrooms I have available for teaching???
8. Update enrolled class with a comment to notify non-attendance (sending class ID).???

Based on the title alone, we can assign tasks as they are defined. However, 3 of the tasks (those with the “???” symbol) remain in a “gray area,” and we do not know to whom they should be assigned, as we cannot interpret which team should perform them.

This problem would be easy to solve in a meeting with all the teams. That would allow us to complete the definition of each task and add extra information that clearly explains what should be done and to which area the task belongs.

But we are project leaders. We should be able to define the tasks and understand their scope, purpose, complexity, and the expected end result to know for sure to whom they should be assigned (before verifying if this task has dependents or has some other task that is blocking it). Then, to get rid of uncertainty, we will rely on the methodology of identifying “who is the customer that interacts with the result of the task”:

TaskTeam to assign
1. Create a login page to enter username and passwordEnd-user
2. Verify if the login and password received match those stored in the databaseFront-end team
3. Create a responsive display of the terms and conditions of the web appEnd-user
4. Make login and return user in response.Front-end team
5. Save login user for later useEnd-user
6. Get a list of classes for the current dayFront-end team
7. In case I am a classroom teacher, list the classrooms I have available for teachingFront-end team
8. Update enrolled class with a comment to notify non-attendance (sending class ID).End-user

Each task generates a result, and identifying the client that will make use of it allows us to come up with the above table. Let’s look at the results in more detail:

  1. These tasks generate an output that is useful to the end user: create a login page, create a visual for T & C, save an access token, and update the enrolled class.
    • The end-user saves the access token for later use, but they don’t know it or don’t realize it because the front-end does that automatically (which could be what is known as cookies or local or session storage).
    • For the enrolled class update task, the end-user is the one who wants to send the update on the state of his class. They probably don’t know the ID, but the browser is responsible for storing that information in one form or another, not necessarily the same as when storing a token.
  2. These tasks generate an output that is useful to the front-end development team: verify the user, login, get class listing and classroom listing in case they are a teacher.

Let’s focus on task 7, which could be the focal point of this blog post. We must list the classrooms available for classes, but only if we are a teacher. If we are not, the result could be an empty list or a simple message that says, “No permissions to view list.”

The front-end team is the one that makes use of this list to display it in a table, bullet points, numbering, a list, a modal, a floating form or however they want to show it to the end user. Therefore, it is the one who will make use of the list (or the non-existence of the list) to generate the visualization, turning this task into an assignment for the back-end team.

Task 6 and 7 are very similar, only that in the class listing task for the current day, it is implicit that the user is a student. So, the verification in task 7 could be eliminated because implicitly the back-end will be in charge of verifying if it has the necessary permissions to list the classrooms or not.

The final table would look like this:

TaskTeam to assign
1. Create a login page to enter username and passwordFront-end
2. Verify if the login and password received match those stored in the databaseBack-end
3. Create a responsive display of the terms and conditions of the web appFront-end
4. Make login and return user in response.Back-end
5. Save login user for later useFront-end
6. Get a list of classes for the current dayBack-end
7. In case I am a classroom teacher, list the classrooms I have available for teachingBack-end
8. Update enrolled class with a comment to notify non-attendance (sending class ID).Front-end

I hope that with this example, I can help technology leaders define what tasks should be assigned to each team before holding a planning meeting (in the case of the Scrum methodology). The biggest advantage of working in a team is that we can solve our doubts together, but if we know exactly what task each one should tackle, each team can focus on what they do best.

By Jorge Contreras Prince

Senior Developer at Patagonian. Specialist in TypeScript/JavaScript and managing and maintaining databases. I'm a Mechanical Engineer and love my career, also enjoy creating software and providing solutions to modern problems. I enjoy video-games (FPS, RPG, MMORPG, platform, souls-like, you name it), podcasts, hardcore music and hanging out with my wife, my 3 cats and my 2 dogs. If you need a partner to play a video-game with, or against, just let me know ;).

Leave a Reply

Your email address will not be published. Required fields are marked *