DEV Community

Cover image for Do you consider yourself fluent in your favorite programming language?
Leonardo Teteo
Leonardo Teteo

Posted on

Do you consider yourself fluent in your favorite programming language?

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?

Top comments (7)

Collapse
 
web3coach profile image
Lukas Lukac

Hey Leonardo, I noticed you used word "comfortable" a lot as a merit.

I personally consider myself fluent when I don't think about how to do a task, just pure delivery. Sometimes I need to Google some library if it's something that can be automated but that's fine because I will know how to implement the library without problems. I consider myself fluent in the moment I can implement any business logic in a clean way with a solid (pun intended) architecture.

Collapse
 
leoat12 profile image
Leonardo Teteo

Can you give me an example to see if I understood right your concept of fluency?

Collapse
 
okdewit profile image
Orian de Wit • Edited

"hello world" is literally the dev equivalent of learning こんにちは in Japanese.

Beyond that, in most languages you could create a "To Do" app. It doesn't matter if it's a CLI interface in Rust or a webpage using React — the To Do app is like being able to pull off a polite conversation at a convenience store about the weather.

Fluency includes being able to explain flu symptoms to the doctor or how you want your new garden shack to be built to a contractor. It's a notch above the To Do. You might still not understand all the colloquialisms of the language, but you understand all the syntax the language has to offer.

When fluent, you feel confident you can write custom apps on request — if I'd ask you "could you write me a program which parses a CSV file into a database" or even "Please write a snake game for me" it should trigger parts of your brain which design the outlines of the program. You are absolutely allowed to use the docs for reference incidentally, but the majority of the time code should be flowing from your fingers by pure reasoning alone.

Collapse
 
maxwell_dev profile image
Max Antonucci

I'll consider myself fluid in any language where I'll know how to solve its common problems, and know how to do the right research to solve the tougher ones. I define programming language fluency more by "how fast and efficiently I can learn it" than by how much I already know.

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
leoat12 profile image
Leonardo Teteo

I'm not that open source, at least for now. I'm trying to change that. :D
Meanwhile, the last week here has been my example of daily conversation. Read some articles I'm interested, read and write some comments, etc. Also, have a talk with your workmates about how to improve applications, etc. can also be an example.
As for newspaper, it is to see what is in the news, right? Read articles, see what I can learn next, etc. :D

Collapse
 
luqman10 profile image
Abdul Qadir Luqman

Fluency in a language to me is, 70% coding from mind, 30% coding from API docs, Google, SO