Would Socrates Use Docker Today?
Tags: docker, beginners, learning, productivity
Published: 2018-06-18 14:37:01

---
title: Would Socrates Use Docker Today?
published: true
description: Socrates left behind a way to deeply explore a topic in a systematic way. It's called Socratic questioning. Let's apply it to Docker.
tags: docker,beginners,learning,productivity
cover_image: https://thepracticaldev.s3.amazonaws.com/i/2r9asj5ghiuq7tnwynqb.jpg
canonical_url: https://nickjanetakis.com/blog/would-socrates-use-docker-today
---

**This article was originally posted on Nov 7th 2017 at: https://nickjanetakis.com/blog/would-socrates-use-docker-today**

---

Remember Socrates? He was that really smart Greek dude from about 2,500 years ago. His most famous student was Plato and he's responsible for laying down the groundwork for modern day philosophy and science.

One of the teachings that Socrates left behind was a concept called **Socratic questioning**. It's a systematic way to explore a topic in great detail by asking questions.

What is Socratic questioning (quoted from [Wikipedia](https://en.wikipedia.org/wiki/Socratic_questioning))?

> Socratic questioning is disciplined questioning that can be used to pursue thought in many directions and for many purposes, including: to explore complex ideas, to get to the truth of things, to open up issues and problems, to uncover assumptions, to analyze concepts, to distinguish what we know from what we don't know, to follow out logical implications of thought or to control the discussion.

As it turns out, Socrates gave us a way to analyze topics in a repeatable way. We could use this for anything. We could use it to make big life decisions, pick tonight's dinner or figure out what technologies are worth learning (*hint hint*).

Yep, that means something invented 2,500 years ago can be applied to problems and issues we have today. As an aside, this is why I try to teach both the "why" and the "how" in all of [my courses](https://nickjanetakis.com/courses/) because understanding both allows you to go from copy / pasting code to being able to solve any problem in your path.

**In this article, we're going to explore Docker using the Socratic questioning strategy.**

## What Questions Do We Need to Ask?

If we head back over to the wiki, there's a section that lists 6 types of questions:

- Clarify your thinking
- Challenge your assumptions
- Probing for reason and evidence
- Alternative viewpoints and perspectives
- Implications and consequences
- Question the question being asked

Each of these 6 types of questions have many sub-questions that could be asked to explore any topic. **We'll see how to apply all of these to Docker after we list them out.**

A lot of these sub-questions are modified from [changingminds.org](http://changingminds.org/techniques/questioning/socratic_questions.htm). This is not a definitive list because no definitive list exists, but it is a good start.

#### Clarify Your Thinking

*Think more about what exactly you're asking or thinking about. Prove any concepts you claim.*

- What is the nature of ...?
- Why are you saying that?
- What exactly does this mean?
- How does this relate to what we have been talking about?
- Can you give me an example?
- Can you rephrase that, please?

#### Challenge Your Assumptions

*Probe your assumptions and think about unquestioned beliefs which found your argument.*

- What else could we assume?
- How did you choose those assumptions?
- How can you verify or disprove that assumption?
- What would happen if ...?

#### Probing for Reason and Evidence

*Dig into your reasoning rather than assume it is a given.*

- Why is that happening?
- How do you know this?
- How might it be refuted?
- How can I be sure of what you are saying?
- What evidence is there to support what you are saying?
- On what authority are you basing your argument?
- Do you have any evidence to support your assertion?
- Is this good evidence for believing that?

#### Alternative Viewpoints and Perspectives

*Most arguments are given from a particular position. So attack the position.*

- Why is ... necessary?
- Who benefits from this?
- What is the difference between ... and...?
- Why is it better than ...?
- What are the strengths and weaknesses of ...?
- How are ... and ... similar?

#### Implications and Consequences

*Do the implications and consequences make sense and are desirable?*

- How does ... affect ...?
- If that happened, what else would also happen as a result? Why?
- Would that necessarily happen or only probably happen?
- How does ... fit with what we learned before?

#### Question the Question Being Asked

*Challenge and dismantle the question.*

- Can we break this question down at all?
- Is the question clear? Do we understand it?
- Is this question easy or difficult to answer? Why?
- Why is this question important?

## Applying Socratic Questioning to Docker

Now that we have a list of questions to ask, all we have to do is answer them. I'm not going to answer every single question but I will answer a few of them in each category that strongly apply to Docker and technology choices in general.

The beauty of this exercise is that often times there isn't 1 correct answer. I would love to read your answers to any questions in the comments below. Also, feel free to answer or ask additional questions if you think it fits!

#### Clarify Your Thinking

*Think more about what exactly you're asking or thinking about. Prove any concepts you claim.*

- **What is the nature of Docker?**<br>
  Docker offers a better way to build and distribute your applications.
<p></p>
- **What exactly does this mean?**<br>
  Getting your application's dependencies installed across different systems can be a nightmare. Docker lets you build your dependencies into a thing called a Docker image and then run it on Windows, MacOS or Linux in the same way.
  
#### Challenge Your Assumptions

*Probe your assumptions and think about unquestioned beliefs which found your argument.*

- **How can you verify or disprove that assumption?**<br>
  You can verify it works by building your application with Docker and then run it on Windows, MacOS or Linux. You will see it works the same without having to deal with OS-specific installation steps.
<p></p>
- **What would happen if you didn't use Docker?**<br>
  You would have to deal with tools like rvm, nvm and virtualenv to isolate your dependencies for different projects and language versions. You would also need to install specific OS level dependencies that would change based on whatever OS you're using.

#### Probing for Reason and Evidence

*Dig into your reasoning rather than assume it is a given.*

- **What evidence is there to support what you are saying?**<br>
  If you are a web developer you will have encountered at least setting up your development environment at some point and ran into these issues.
<p></p>
- **Do you have any evidence to support your assertion?**<br>
  Yes. Try it out. Also feel free to Google on how to get a Rails, Flask, Node, etc. application running in both development and production. You will see that this a problem that many people encounter on a regular basis.
<p></p>
- **On what authority are you basing your argument?**<br>
  Personally, I have been building and deploying web applications in one way or another for about 20 years. During that time I have developed and deployed over 100 web applications with various technology stacks.

#### Alternative Viewpoints and Perspectives

*Most arguments are given from a particular position. So attack the position.*

- **Who benefits from Docker?**<br>
  Developers have an easier time setting up their app's stack. Testing and QA teams can quickly spin up applications and ops teams can move fully built applications across environments which eliminates "well it works for me!" problems.
<p></p>
- **Why is Docker better than Virtual Machines for application development?**<br>
  Virtual Machines take up a ton of disk space, waste other resources and take quite a while to load. Docker can intelligently make use of disk space, has no runtime performance hits and starts in milliseconds.
<p></p>
- **What are the strengths and weaknesses of Docker?**
  Docker allows you to easily make your applications portable and promotes trying new languages and tools out because it's so easy to get them running in a consistent way.

    <br>One of the main weaknesses of Docker is conceptually it can be pretty tough for it to "click" mentally, but once it does, you're like "how the heck did I live without this?".

#### Implications and Consequences

*Do the implications and consequences make sense and are desirable?*

- **How does Docker affect day to day web app development?**
  You get to spend less time screwing around with trying to get tools and dependencies installed and you can focus your time developing awesome applications.

    <br>This goes for both programming language run-times as well as external services such as PostgreSQL, MySQL, Redis, Elasticsearch or any other services that your application depends on. You can run them all with Docker.
<p></p>
- **Would that necessarily happen or only probably happen?**
  It would always happen. You can use Docker for both interpreted and compiled languages and reap the same rewards. It doesn't matter if you use Ruby on Rails, Flask, NodeJS, PHP, Golang, .NET or anything else. They all work with Docker.

#### Question the Question Being Asked

*Challenge and dismantle the question.*

This question type is a bit different than the others. We're meant to take any of the above questions and continue to break them down while questioning them.

For example, let's operate on **What would happen if you didn't use Docker?**

One of the ways we could question that question is with:

- **Can we break this question down at all?**  
  Yes. It's not clear who we're talking to. We could further explore this question by answering it as developers, ops managers, sysadmins, testers or IT teams. All of which have their own set of problems that get solved by using Docker.

## Wrapping Things Up

As you can see, Socratic questioning is very powerful. It's almost like making a pros and cons list except it's much more systematic and structured. This allows for you to get a much deeper understanding of any topic.

We've only barely scratched the surface here with Docker. If I spent all day writing this article, it could easily become 15,000 words instead of 1,500!

To answer the title of this article, which was "Would Socrate Use Docker Today?". I think he would. Of course that's my opinion but by exploring these questions we've determined that there are clear benefits to using Docker and Socrates was a very logical person. There's no reason to think he wouldn't use it if he were around today.

By the way, if you think Docker is a great fit for you and you do want to learn it, then check out my premium video course which is [Dive Into Docker](https://diveintodocker.com/?utm_source=nj&utm_medium=devto&utm_campaign=socrates). It's filled with tons of practical examples and you'll be comfortably using Docker for your own projects by the end of the course.