Am I missing out by only knowing C# and JavaScript
All peripheral knowledge and technologies aside I really only know C# and JavaScript.
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.
I do need to take a second to point out the obvious. I've had exposure to a lot of different languages and technologies but I only consider myself proficient in C# and JavaScript.
20 comments
[ 17.2 ms ] story [ 424 ms ] threadHow 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.
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.
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.
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...
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?
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.
I can't imagine you'd interview someone for a junior position looking for said experience, so are such people just screwed?
The good news is that there ARE large companies that use non-MS stacks, as well as companies that use MS alongside other tooling (whether it’s having some systems in .NET and others in Java, or using Python/Perl for “glue” code or whatever).
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.
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.
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).
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.
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.
That would mean more to me as an interviewer of your degree of interest and 'growth vector'.
It's so much easier to talk to someone who has used more than one language, framework, or operating system. Even if discussing something never seen before, it gives some context into how some things might be different and not assume that everything is/should be a certain way.
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.
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.