Do you consider yourself fluent in your favorite programming language?
Tags: discuss, development, programming
Published: 2018-09-08 19:19:13

---
title: Do you consider yourself fluent in your favorite programming language?
published: true
description: How much is necessary to know to be fluent in a programming language? The same concept from human languages can be applied to them?
cover_image: https://thepracticaldev.s3.amazonaws.com/i/a6duy7rss02bto6faffd.png
tags: discuss, development, programming
---

My passion for languages didn't start with programming languages, I was always curious about other languages. I've learned English to the point of fluency and now I'm venturing myself in the world of Japanese language. All languages have the common objective of communication through their own and unique means. To achieve fluency in one of them it is necessary to be comfortable while reading, writing, speaking and listening mostly any subject on that language. Of course, languages are a world for themselves, there are field specific words you wouldn't know or understand no matter how fluent you are. For example, in our field there are many words familiar to us that people outside of the field cannot fathom what they mean and others that even people from our field don't understand completely. 

That being said, we know that fluency doesn't mean to understand **everything** in the language, but being comfortable in daily conversations, reading a newspaper and other common usages. However, this concept can also apply to programming languages? How much you need to know to be "fluent" in a programming language, which are also a world for themselves. 

People argue that programming languages are tools for the work, you need to choose the right tool for the job and there are programming languages that are better for X than Y. Take Python, for example, when you listen about Python, it is all about machine learning, but Python is also used to build CLIs and web applications. I've never heard such thing, but I'm sure Python can be used to build a operating system, even. Generally, there is no limit to what a programming language can do, if you have the knowledge necessary you can  build anything with it. It is the same with human languages, given the knowledge you can speak about anything although there are languages that are more concise or less vague, etc. 

Therefore, the same way there are field specific language in human languages, there are also field specific language in programming languages. I'm a Java Web Developer, I'm comfortable with HTTP clients and servers, how they communicate, REST, MVC, concurrency, communication with database and what the Java language and other famous libraries and frameworks such as Spring can offer to build web applications. However, I don't know how to even start when it comes to building, for example, a game in Java, train a neural network, build resilient systems for airplanes, etc. Java has a multitude of use-cases and expect to have knowledge in all of them is a dream. 

Despite not knowing all use cases and how to start developing them, you have the basis, the core of the language. To start to build a game in Java I would need to research libraries, best practices, the right way to do it, but I would eventually figure it out. The same way, if I would start to study Law right now I would have the basis in English to start to study it and eventually I would understand. 

Therefore, how much is necessary to be fluent in a programming language? What would be the equivalent of "daily conversation" and "reading a newspaper" in a programming language? This concept can be even be applied to programming languages?