Docker explained for non-technical people
Tags: docker, webdev, hiring, beginners
Published: 2024-02-22 17:09:22

Over the years working in software testing I came to realise that there are keywords thrown out there as if everyone understands them. If I know how to use Docker it does not mean everyone else knows it, and to show respect we should always know the audience with who are speaking with and adjust the language so that everyone can understand. Goal is NOT to play smart, but person on the other side to actually understand you. That is also a form of respect. 

Let's imagine a conversation inside a company between QA and Recruiter. Recruiter received a task to hire new QA, and we/company gave him a list of tools a new candidate should have. Recruiter received the info and that's were it usually ends. 
Recruiter is left to find a person based on keywords, which is ok, but what if I, you or your colleague actually take a bit of time and help your recruiter to better understand what certain tool does for us. 
Now, you can say: "OK, let recruiter google it, I don't have time". Fine, thats what everyone has been doing since Google is founded. 

Remember this old wisdom: 

> Give a man a fish, and you feed him for a day. Teach a man to fish, and you feed him for a lifetime.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kd2cnw6psgpc4y451ciz.jpg)

To show some respect, take a bit of your time and explain in real life examples a certain tool so that anyone who heard about that tool can understand what it does. High level is enough. 



**What is the goal? Why would you waste your time?** 
Sharing knowledge is never wasted time. It's called help. Helping someone to understand, will help him to do his job better, and ultimately find a better colleague who will work with you everyday.  
Sharing knowledge is something you should be excited about. It should give you a feeling of satisfaction/accomplishment.  

---
Let's write this in a dialog between me and recruiter. 
Imagine a video call between two colleagues in the company. Recruiter Marco and QA Stipe :-)

**Recruiter:** `Ok, amigo. Tell me what is Docker`
**Stipe:** Docker is a platform. There are buzz words such as container and image. But don't worry too much about them. 
Imagine a container as your own virtual machine where you can install OS (such as Ubuntu, Windows, ...), libraries, programming languages, applications, etc. 

**Recruiter:** `OK, and?` 
**Stipe:** And now you can use that container and run your application on it, or you can run automated tests. 

**Recruiter:** `Hmm, interesting. Can you tell me more but use some kind of real-life analogy` 
**Stipe:** Sure, imagine there is a chef who works in portable kitchen on various venues and events to cook meals. 
Before event each portable kitchen is equipped with all the chef's tools, ingredients, and recipes. No matter the location of the event chef always has same conditions for cooking his meals. So he can cook meal in the same way each time, without any external factors as disturbance.

**Recruiter:** `Mmmm, I'm listening`
**Stipe:** You can look at portable kitchen as Docker container, while ingredients/tools/recipe inside his portable kitchen are libraries/tools/os. You see where I am getting? 
This means Docker delivers to your entire team one environment for working. Their local computer, different versions of this and that are irrelevant, they can now bring that container up spin their application in it, deploy, run, test. And with that, a legendary headache of "it works on my machine" is resolved, because everyone has same versions of everything.       

**Recruiter:** `Oh, now I get it. Docker is brilliant`
**Stipe:** It sure is. I'm glad you understand it better now :-)