HACKER Q&A
📣 itsmefaz

Building a deep expertise in one language


I have decided to build expertise in Python. I love the language and want to build a deep understanding of it. I have multiple reasons for wanting to go this route with the primary one being that I don't like context switching tools for work and personal projects. I also feel that context switching in between multiple languages restricts my understanding to them to a very surface level.

Ideally it won't be one language, it would be Python + C (or Mojo). But you get the gist! I also understand the consequence of this approach, in that I am restricting myself to a very limited number of jobs. What are your thoughts about this approach?


  👤 codeptualize Accepted Answer ✓
> I also feel that context switching in between multiple languages restricts my understanding to them to a very surface level

My experience is the opposite, I've always written mostly JS now TS, but I have ventured into many different languages (Objective C, Java, C#, Python, Php, Go, Rescript, probably a few more), and even though I might not know much about most of them anymore I've learned so much about programming in general, and I also know JS/TS very deeply and a bunch of other languages sufficiently to build projects.

A lot of concepts and patterns are language agnostic, and seeing the same things in a different flavors really improved my skills and ability to build projects.

But it's totally legit to just use Python. Python is an excellent choice for many kinds projects, so if it does everything you need, go for it!

What matters most to improving your expertise is building a lot of things, and keep challenging yourself. The tools don't matter that much imo, just use what makes sense.

Also just have the confidence that you can learn something new. As your knowledge grows it will also transfer to other languages. Yes, you have a bit of a hurtle to get used to the new syntax etc, but you'll pick it up pretty quickly as you have a reference (e.g. "How do I do a dict in [new language]? is a lot easier than learning what a dict is in the first place.).

Anyway, I wouldn't stress about it either way, try it, if it doesn't work try something else, and just keep building!


👤 t312227
hmmm ...

imho. on the one hand: tools are tools, and there is a good reason for why there are a plethora of tools available in this (it) world.

concentrating too much on one tool only reminds me of the "old saying": "if your only tool is a hammer, all problems look like nails".

so personally i like to be T-shaped in my knowledge and build up "deeper" tool-related knowledge on demand in case it matters.

on the other hand: software-development is a meta-understanding game, writing actual code is only a small part of it.

in a nutshell: understand the problem at hand, the additional value of the project for a customer, what are the use-cases for the customer, various patterns which are useful for solving a specific problem, academic approaches vs. real-world solution etc.etc.

getting to know different approaches to programming - languages and their surrounding tool-ecosystem - serves as a source for different viewpoints on problems -> and increases the level of insight of a software-developer.

idk ... just as a quick example "imperative" - procedural, oo - vs. "functional" etc.etc. comes to mind if we talk of language concepts.

cheers t.


👤 pestatije
you run the risk of treating all the problems as a nail...but hey, youll be able to apply for those python guru jobs, how good is that?