Sometimes it is quite hard to understand the product/tech team for a non-technical person. There is a lot of technical terms, concepts, and acronyms, and not understanding each other can drive to an inefficient collaboration. Even if, the technical team must vulgarize as much as possible, sometimes it is necessary to explain why a task takes so long, why there are performance issues, why there is a bug, what happens during a major outage, ...etc. In this case, there is no other way than to talk about some technical concepts.
For this reason, let's try to share a bit some basic knowledge and vocabulary about the product and some technical terms. If you want to better understand your product team, you are at the right place.
The product/tech point of view is partly covered by the DDD approach. If you are a tech or a product person, you can find interesting reading about it on Martin Fowler blog.
It is barely impossible to summarize all the different concepts used in a product team. This post may forget some parts, simplify a lot some concepts and roles. This post is a continuous work in progress.
Let's start easy, the product team often uses the term Agile to describe the way it works. Agile drives some principles:
- Ship small software changes frequently
- Have a self-organized team working autonomously when it is possible
- Continuous improvement on how the team and process work
To put in place the agile principles, it exists frameworks. Here is the main frameworks used:
Now, let's talk about some services used to applied Agile frameworks method for a product development. Here you should be able to follow what the product team is working on:
- Issue: An item representing a feature to make, a bug, a task. Sometimes, it can be assigned to a person or a team responsible for doing it.
- Backlog: A list of tickets to be done.
- Sprint: A period of time where a team works on issues.
- Epic: A large issue that can be split into smaller issues. Example: The redesign of the website can be split into small issues per page or per component.
Developer host their code to be able to share it and collaborate on it. In addition to be able to share code, the way we host code allows also to make versioning on it and create workflow around this hosting.
It is very important to have code versioning for a development. The different versions have at least the following benefits:
- Know what the code changes has been done when, who done it, why, and how.
- If a bug has been introduced, it is possible to revert the changes to a previous version without the bug.
- Many developers can work on different code versions
The main software used is Git but you can also head about SVN sometimes. Because Git is the most popular version control system, we will focus on this one.
Git is only a software providing code versioning and way to share it. There is also hosting providers bringing a more developer friendly collaborative workspace with Git.
The main services are the following ones:
The software the product team works need to be deployed for being accessible for users. This deployment is now mostly done on Cloud Hosting Providers. There is three main types of cloud computing as-a-service:
- Infrastructure as a Service (IaaS): Provide basic computing resources and services (servers, storage, networking). Basically, for this type, you do not need to install the server hardware but you need to deploy yourself the database, the environment to run your software, and the software itself.
- Platform as a Service (PaaS): Provide a platform ready to run your software. Basically, you need to deploy your software and configure the environment only. The computing resources, runtime environment, and all the scaling are fully managed by the platform.
- Software as a Service (SaaS): All the software is provided by the platform. For example, it can be the CRM you use, the Analytics Platform, ... etc.
Depending on where you are, you may use also local hosting provider.
- SLA: Service Level Agreement
- SLO: Service Level Objective
- SSO: Single Sign On
- PR/MR: Pull Request / Merge Request
- Repository (aka "Repo"): Git repository
- DX: Developer Experience. A term used to describe concepts for developer experience improvements. Sometimes it is about developer productivity.
- CDN: A Content Delivery Network is a solution providing geographic points of presence (PoP) to distribute the content geographically relative to the end users, enforcing high availability and performance.
Subscribe to the newsletter
Get emails from me about web development and a lot of topics related to tech.
Git case sensitive
Today, I was wondering to know why on the CI pipeline, tests were failing due to missing files but those files are on the file system locally and push on the GIT repository. This issue came from files renamed updating from lowercase to uppercase.
Undo a git add
An unwanted " git add " can happen. That's why there is a command to redo this " git add ". Here the command line to perform this action.
How to deal with Docker Hub rate limit on AWS
Since 2020, DockerHub has been limited to only 200 container image pull requests per six hours. This article will help you to deal with this limitation on AWS.
How to enable Python type checking in VSCode
Python now has support for type hints. In this article, we will see how to enable better IntelliSense and type checking analysis in VSCode.
How to manage Internationalization with NextJS SSG
Staticaly generating a website with the NextJS framework in different languages is not so obvious.