docs.rodeo

MDN Web Docs mirror

Workflows and processes

{{PreviousMenuNext("Learn_web_development/Getting_started/Soft_skills/Collaboration_and_teamwork", "Learn_web_development/Getting_started/Soft_skills/Finding_a_job", "Learn_web_development/Getting_started/Soft_skills")}} 

An important aspect of technical projects that beginners often miss out on is an idea of the bigger picture. They might learn an individual tool or language, but be unaware of all the libraries, tools, systems, and job roles that go together to deliver an entire web application. The following sections cover different big picture aspects at a high level.

Prerequisites: N/A
Learning outcomes:
  • Typical technology combinations in web projects.
  • Typical job roles on a web development team.
  • Typical technical project phases, and where the different job roles are involved.
  • Common work management processes, such as agile and waterfall.

Typical technology combinations

When building a website, you will use a combination of different technologies, commonly referred to as a tech stack. As websites get larger and more complex, so does the tech stack. It might start off simple when you are creating a demo and only you and a few colleagues will be looking at it. However, a seemingly-simple production website’s tech stack could be more complex than you first think when you consider that it needs to:

At a very high level, a web application tech stack might look something like this:

Front-end
HTML, CSS, JavaScript
|
Back-end
Node.js, .NET, PHP, Python, or some other server-side language
|
Database
MySQL, Postgres, MongoDB, or some other database
|
Web server
Your own, built around a server product such as Apache, or a service like Netlify

[!NOTE] You will often see acronyms that refer to poplar tech stacks, such as MEAN (MongoDB, Express, Angular, Node) or LAMP (Linux, Apache, MySQL, PHP or Python).

On MDN, we are mainly concerned with the front-end part, but even that can be broken down into lots of different pieces. Take the front-end for example:

[!NOTE] You will often hear websites and applications described as being built using specific architectural patterns. For example, model-view-controller (MVC) is a pattern that many JavaScript frameworks follow, while publish–subscribe (pub/sub) is commonly used by messaging applications. It is not especially important that you understand these patterns in detail, but some familiarity can be useful when trying to understand a new framework or tool.

There will also be tools involved outside the actual tech stack itself to help you manage it or create assets for the website, such as:

OK, so that is a lot to take in. Our advice is don’t panic! The aim of this article is not to worry you by making you think that all of a sudden you have 10 times as many things to learn as you did before. The idea is simply to make you aware of the bigger picture in terms of website projects, and give you a basic familiarity with some of the terms you might encounter.

Eventually, you will develop some knowledge of several of the above tools and technologies, but you won’t be an expert in them all, nor will you need to be — that’s what teams are for. For the moment, you are absolutely doing the right thing by learning the core skills such as HTML, CSS, and JavaScript. More tools, and specializations, will come later on in your career.

Job roles

In a web development team, there are many different job roles involved; it is useful to understand what each one entails:

Less common job roles

Other less common job roles include:

Technical project phases

A typical technical project might happen like this:

  1. The product manager identifies a new set of user requirements for the website.
  2. They discuss it with the team, and it is decided that these requirements can be met by adding a new feature to the website.
  3. The project manager discusses with the team what the required individual work items are for creating the new feature, and creates a work process to manage them.
  4. The UX designer designs a workflow for the new feature that describes how it should work, and a wireframe to provide an idea of where it might fit on the site.
  5. The graphic designer designs a mockup showing what the feature will look like on the website, along with the chosen fonts and color palette.
  6. The content specialist writes the UI text required by the feature, and the documentation required to support it.
  7. The back-end developer creates the necessary systems to securely store and handle the data that powers the feature.
  8. The front-end developer creates the interactive feature based on the graphic designer’s mockups and connects it to the back-end so that it retrieves the data it needs.
  9. The QA engineer thoroughly tests the new feature, and writes a detailed report on the issues they find with it.
  10. The developers fix the bugs that are deemed sufficiently serious that they should block the release of the feature.
  11. Once the (blocking) bugs are fixed and the project is signed off, the feature can be put live on the website.

This is a simplified view — other phases will exist around the feature implementation itself, and the phases will not necessarily all be completed in the order shown, but this gives you an idea of what’s involved.

Work management processes

The project manager will use some kind of process to manage the website project, monitoring progress on the different work items, making sure they get done in the right order and on time, etc. The two main process types are:

[!NOTE] Web development teams often prefer to work with an agile process, as software development is by its very nature prone to (sometimes rapid) changes in requirements due to new bugs, user feedback, company strategy, etc.

Scrum and kanban

There is a specific type of agile methodology called scrum, which has a fixed set of rules about how a project is run. For example:

Another type of agile methodology is called kanban, which has less rules than scrum, doesn’t use sprints, and tends to focus more on the continuous improvement aspects of agile. Kanban is particularly useful for managing continuous processes that don’t have a clear defined end, such as customer support tickets.

Kanban boards

Tools such as Trello and Asana provide visualizations that show the status of different work items in a project. They are usually called Kanban boards, although they can be used to manage different process types, not just kanban. Kanban boards consist of different columns, which can represent different work statuses in a scrum project (“backlog”, “todo”, “in progress”, etc.), different types of work (“research”, “design”, “development”, etc.) or whatever else is useful for your project.

GitHub Projects provide another good tooling option, and are free to use — you just need to sign up for a GitHub account.

[!CALLOUT]

Try it out

You should read up on the above processes, and practice tracking some of your work or personal projects using a kanban board. Don’t worry about using a complex scrum methodology; basic kanban is fine for the moment. Even if you’re doing something solo, it can be great to practice the workflow of:

  1. Creating tasks.
  2. Deciding how big they are or how long they will take.
  3. Prioritizing tasks.
  4. Putting them in order with due dates.
  5. Starting to work on different tasks.
  6. Setting their statuses (“in progress”, “blocked”, “done”, etc.) as the work progresses.

Track the progress of a complete project from start to finish — try it with your own website or a side project of some kind. Also, try contributing to an open source project or two; many of them will use a process to track their work similar to what we have described above.

See also

{{PreviousMenuNext("Learn_web_development/Getting_started/Soft_skills/Collaboration_and_teamwork", "Learn_web_development/Getting_started/Soft_skills/Finding_a_job", "Learn_web_development/Getting_started/Soft_skills")}} 

In this article

View on MDN