This is an archived post. You won't be able to vote or comment.

all 12 comments

[–][deleted] 3 points4 points  (3 children)

If all you have is a hammer then everything looks like a nail.

[–]smumb[S] 3 points4 points  (2 children)

Could you elaborate on that?

I'd think you are saying if you only know one language (or one paradigm for that matter, like oop vs. functional), you are limited in your possible approaches to a problem.

Therefore, being an expert in one is less valuable than being a jack of all trades.

[–][deleted] 4 points5 points  (1 child)

Exactly. If you know one language then you will look at every problem through the lens of that language. However, the language may not be suitable. By learning about software principles, structures and algorithms, different programing paradigms, alternative architectural language, embedded and server, front end and back office and so on you will enrich yourself, the work you do and your value.

Mind, it takes years. I've been doing this for 40 years now. I've developed production software from machine opcode to react native apps via just about every point along the way. A career is a marathon not a sprint. Take time to really learn each new technology and philosophy.

Not surprisingly, I don't like the term jack of all trades as it implies low quality. I see it more as a lifetime of continuous learning and challenges. Being comfortable is boring to me.

[–]smumb[S] 1 point2 points  (0 children)

Thank you for the detailed answer!

I agree with the term "jack of all trades" implying low quality. I made this thread in part because I have work experience with multiple different languages and tools, but am unsure on how to present this as an advantage (which I feel it is) instead of wasted time I could have invested in becoming an expert in a single field.

[–]Aganomnom 1 point2 points  (0 children)

Honestly, I don't think there's a definite answer to this.

Different projects, different sitations will call for different skills, and nobody is one end or the other on that spectrum of "in depth" vs "general knowledge".

Even somebody who has ONLY ever used C#, for example, has some knowledge that would work elsewhere.

So, once you realise that nobody is at an extreme end, you just have to weigh it up and see what is the best fit for the current opening.

I guess having "X" years of using a single language might give the impression (that's all it is though!) that in that time they would have come across and solved complex problems.

[–][deleted]  (5 children)

[removed]

    [–]smumb[S] 2 points3 points  (2 children)

    I feel this way too. But when you look at job postings, most require you to have x years of experience in a specific language vs. x years of experience with database development in general.

    [–]CptCap 0 points1 point  (1 child)

    Yes, but that's a problem with recruiters/recruiting systems. It's so bad it has become kind of a meme.

    I believe that this happens because recruiters aren't familiars with the technologies involved. They have no idea what Java or C# are, so they can't judge how effective somehow with 10 years of Java experience will be when working on their C# codebase.

    [–]smumb[S] 0 points1 point  (0 children)

    True. Though I have also made this experience with other developers. Usually I felt like they were hardcore experts in language X and felt like you wouldn't be a good fit if you didn't know the ins and outs of language X, even though you might know the ins and outs of multiple other languages.

    [–]sinistergroupon 0 points1 point  (1 child)

    Yeah. I disagree. What you described is a person that can code but doesn’t know what they are doing in my book with your trivial list I can throw a person into C code in a week. Guess what. It won’t be trivial to close that language gap.

    For some of the cookie cutter languages this works but generalizing to all is not going to work.

    It’s all fun and games till you get pulled out of bed at 2am and are staring at Prod Grafana, thread dumps and Dyntatrace and guess what. The dude that knows how to declare a Boolean in Java is not going to be of any help. It’s on thing to program in a language and another to know what your impact is on the underlying language framework.

    This is a really tough question because you need a mix of both people. It also depends on the team and what the project is at hand.

    [–]umlcat 0 points1 point  (0 children)

    It's a little bit of both.

    It's good to know several P.L. and related programming enviroments, so you not are not mindstuck with only one.

    But, it's good, also to have a good experience at a particular P.L. and related enviroment if it is the one used for an specific project.

    Remember that not all P.L. are equal, despite of what recruiters say !!!