
Am I missing out by only knowing C# and JavaScript - IAmTheTucan
All peripheral knowledge and technologies aside I really only know C# and JavaScript.<p>People on Hacker News seem to know a lot of different languages and it has me wondering if I am not as good of a developer because I only know those two languages.<p>I do need to take a second to point out the obvious. I&#x27;ve had exposure to a lot of different languages and technologies but I only consider myself proficient in C# and JavaScript.
======
EnderMB
Sounds a lot like me a year ago.

For the past eight years I've been mostly working as a .NET developer, with my
last two roles being senior roles with some form of leadership. If I stuck
with my last job I would've probably been in a leadership role at a large
agency, but I wanted a change.

I, too, would read HN most days, and would feel a hint of "imposter syndrome".
It was great enough that I decided to teach myself Python and Django. Working
in another language when my life was strong-typed compiled languages felt odd,
so instead of fighting the urge I decided to work somewhere that would hire me
as something other than a C# dev.

So, I joined a software house that does a bit of everything. Since joining
I've worked on a mixture of Ruby, Java, Python, and Node projects in the last
six months, and there's opportunities to pick up pretty much anything that I
feel I can roll with for a project.

It's been tricky going from being experienced in one language to being a
newbie in another. When things work the way you expect, new languages are
fairly easy to pick up, but the pain points or differences will bring you back
to the days when you were struggling with C#.

I think imposter syndrome is more common in .NET developers than other groups,
mainly because the community is so secluded from others due to its heavy use
of Windows and its own tool set. Also, there's the stigma of it being a big-
business language, even though many .NET devs will go their entire careers
without working in an enterprise setting. From my experience, a .NET developer
is no less a developer than those in other languages, but I will say that it's
very easy to be comfortable in a single stack. Giving something else a try
will reduce that comfort, and you might learn a few things that help in both
stacks.

So, in terms of missing it, it depends on what you feel like you're missing?

------
PerfectElement
It depends on what your goals are. I'm a C#/Javascript developer myself and I
have tried to start a few side projects using new technologies in the past,
but I noticed that I spent a lot of time fighting with the new
framework/platform instead of solving whatever problem I was trying to solve.
So I decided to double down on C#/Javascript and put my efforts into building
products using what I already knew. I'm glad I did because one of these side
projects turned into a healthy business, which will likely enable me to
"retire" in a couple of years.

I think that if your goal is to solve problems, leverage what you already
know. If your goal is to be more employable and improve at your craft,
learning new languages should help you.

------
eboyjr
If you learn enough languages and their features, then aside from syntax, you
can consider yourself language-agnostic. A syntax without its edge cases is
the easiest part about learning a language. Your exposure puts you a step
ahead.

How can only knowing a small number of languages make someone a bad developer?
As a _developer_ , it's about the things you can _develop_. You might be
limited by your language and the language implementations but this is why
being rounded with a good variety of languages puts you at an advantage.

My first programming language was PHP 15 years ago, but I keep myself
proficient with a systems language (e.g. C or C++), a server application
language (like Go), and a web client side language (like JavaScript). I have
chosen to work with C++, Go, and TypeScript as much as possible for now.

I hope this helps in any way.

------
quickthrower2
I'm a C# + Javascripter too. I learn a few languages on the side, plus some
exposure in jobs. Java, Haskell, Ruby, Elm being the main ones.

I think it is worth dabbling to see how things are done on the other side.
Learning Haskell makes dealing with Rx / Linq a bit easier - not directly but
by flexing that functional-thinking brain muscle.

Having said that I still think of C# as my go-to language and enjoy
programming in it, I think it is a great general purpose language and I am
glad I am doing my production code in that. It's a nice mix of type safety (so
prefer that to Ruby) but with plenty of escape hatches and meta-programming
options (prefer that to the strictness of Haskell).

As a C#/JS-er the most useful languages might be Powershell and Typescript,
and the most eye opening might be Lisp and Haskell.

------
thorin
Depends what you mean by "knowing" C# and JavaScript. I also know C# and
JavaScript, I'm definitely not an expert in either or even an intermediate
(probably). I also know C, Java, Ruby, Python, HTML, CSS, Databases,
networking, web apps, mobile apps, web services. I'd only class myself as
above intermediate in a couple of areas and that is after 20 years experience
working in software teams.

You can build virtually any web app, client app, mobile app or service with
these 2 languages, so ask yourself what you can do with these tools and
probably whether you can earn a living using them. If you want to learn a bit
about some other areas just do it...

------
karmakaze
I've been looking say more than usual resumes and interviewing candidates. I
would now not interview a candidate for an intermediate position who only has
Microsoft experience. This is a proxy for operating in a corporate environment
with little exposure to a narrow range of responsibility. Having too few
languages/tech also indicates a lack of curiosity/passion.

That's not to say you can't be an excellent programmer but less likely a well
rounded software engineer, if that makes sense. The opposite can also be true,
those of that dabble in everything with no depth or appreciation of each.

~~~
duxup
>Having too few languages/tech also indicates a lack of curiosity/passion.

As a noob trying to start a career I ask.... at what point do you list things
on your resume?

So I messed around on my own time with Python, PHP, and some other things but
feel like I don't know them well. Do you still list it on your resume? At this
point I don't because I feel like my knowledge isn't very strong in those
areas.

~~~
cimmanom
Like anything else, GP’s advice is context-sensitive. In this case, it scales
with experience.

If you just came out of a bootcamp and claim to know 3 backend languages, or
have less than 3 years experience and list more than a half dozen languages,
I’ll assume you’ve worked with each of them so little that you don’t know any
of them in a meaningful sense.

If you have more than 10 years experience and know only 2 languages, your
exposure is very limited, and I’ll wonder whether you’ve learned by rote
rather than knowing how to learn concepts and reapply them elsewhere.

For me as a hiring manager, it’s not about curiosity or passion so much as
flexibility and ability to learn and grow in both depth and breadth.

~~~
duxup
Thank you for the feedback!

I've dabbled in a number of languages but I'm focused on just a few areas and
I haven't listed my dabbling as ... well exactly what you said. As a noob
listing half a dozen languages seems sort of absurd when in actuality I know
just one (and still need to work on it).

~~~
cimmanom
Yup, sounds like you’ve got the right mindset in that regard. Pick something
to focus on and learn to be highly productive with it at a professional level.

Once you have expertise in one thing, you’ll find it transfers well to other
languages and to some degree to other domains. You can start picking up
secondary languages, or choose one other language to deep-dive into.

At the junior level, most employers are looking for moderate depth in at least
one language and area, and an awareness of what the other technologies are
that the developers around you will be integrating your work with. The degree
of depth and the number of different technologies they’ll want you to know
_well_ will also scale with experience level.

Too many new programmers undermine themselves by trying to learn every single
technology they can get their hands on. I blame the bootcamps, which by nature
have to expose you to at least a handful of different skills and don’t have
time to teach any of them in meaningful depth. They send an incorrect message
that a few hours with a new technology, tool, or framework is as much as is
worth learning before moving on to the next shiny thing.

~~~
duxup
Sounds about right.

Accordingly one of my feedbacks to the camp I attended was to drop like four
things, add one (minor thing), and spend more time on the rest. Rather than
sort of shotgun it.

------
PeOe
I don't think you are a bad developer just because your focus is on two
languages. Othe devs might enjoy the possibility to learn more. With more
languages, you may have better job opportunities.

------
3minus1
If you are good in one mainstream language you will be good in any of them.
And by good I mean, can you think about a complex problem and implement an
algorithm to solve it. Don't listen to the haters that say Microsoft tech
users must have no curiosity or other such nonsense. Like you think there
aren't people working at Microsoft solving crazy problems at scale and that
other companies aren't drooling over them?

------
rasz
Can you really put peripheral knowledge and technologies aside when all you
know are pretty much garbage collected scripting languages? This is a very
isolated and safe world to live in.

------
ankurdhama
Do you build software systems in C#/JavaScript that are useful, correct,
efficient and simple? If yes then you are a good developer.

------
chipuni
You will become a better developer if you study more languages.

You will become a better developer if you study more mathematics or
statistics.

You will become a better developer if you study psychology and interpersonal
relationships.

You will become a better developer in many, many ways.

Keep studying. Keep growing.

~~~
IAmTheTucan
I appreciate and upvoted everyones comments but I agree the most with you.

Don't get me wrong, I can see a huge difference in my skill based on how I
solve problems now vs a few years ago and while that change came from new
things in the C#/JavaScript landscape it was still caused by learning how to
code differently.

But I feel like I'm at a level where if I have 10 energy points to spend they
will go a lot farther if I spend them on something other than programming.

