Computer Science 21 years old engineer here! I have been using Linux throughout the whole of my degree so far. Now that I'm nearing the end of my degree I've started looking at graduate software engineering/developer positions at various companies.
Most jobs speak of C#, Visual C++, .NET, Java, NodeJS, JavaScript etc. I am mainly using Java, C++, Perl, Python and programming to the Unix standards. Would I be better off ditching Linux and spending my last year of University brushing up on Windows based technologies, languages and API's?
What's your opinion on this?
Most corporations and bigger companies will probably make you use Windows, so knowing a little about how to use it might not be bad. But do not try to blame the OS for your mentioned problems. You can program all mentioned languages on Linux, so I really do not see how Linux could be your problem in any way.
Also, if you are able to program in a few languages, learning a new one for a job is a matter learning a few principles in a few days to get you up and programming. Your code might not always look good or be performant, but duh, you are 21 years old, no one expects you to be a senior developer with deep specialization!
You say that many companies search for Java developers, and it seems to be your favorite language (as you mentioned it first). So why not try to apply for a job which requires Java. Good Java will not even care about the OS, as the JVM takes all the difficult differentiation away for you, so you might even just stay on Linux and not miss a thing at work!
By the way, learning new technologies and languages is a good thing and you should do it! Learing helps you become a better developer. I am currently learning Rust. It is so very difficult, because it is different. But I love it! So what will you learn next?
No you shouldn't worry. C# is similar to C++, but in my opinion C# is a lot easier than C++ so you have a big advantage here. Also Java is close to C#.
When I took my degree we only learned C# and Java and I don't remember the big differences. I never read the C# book because it was kinda obvious and easier just to follow the documentation rather than the book since the logic is the same. There are a few things such as get and set, but that's something you can easily learn.
Now I'm only working on web technologies as this is where my interest has always been. If it makes you feel any better I have had both Windows and macOS and in both cases I run the whole development environment on a Linux VM. I think students who complete a degree without ever tried Linux have a problem rather than in your situation.
What's important from your degree, depending on where your focus is going to be, is something like general understanding of programming such as variable types, arrays, OOP, what sorting algorithms are and why it's good to know there are different types and most important how to understand the needs of the client and learn how to communicate with non-developers. The rest is something you can quickly pick up.
If you feel you have the time and interest, I see no problem in playing around with whatever technology you find most interesting, but as I said, that's not the most important thing. Some students finish their degree and having no real clue about programming, that's a problem.
A programmer should never end studying new possibilities :-)
Learning EVERY OS is like the Duke Of Edinburgh Awards (UK) - Either nearly everyone has one and for those that don't it doesn't affect your employ-ability chances/how your CV looks. As long as you can google how to use a windows/mac you'll be fine.
With respect to your final question - always expanding your knowledge base is a great idea - helps you make better decisions and analyse things in a different way.
I will say that, if you are in the UK, I've noticed that there is not a specific demand for a certain language/framework over another. It depends on the company and the region, for example - South Wales seems to be favouring PHP but other regions in England favour <insert language here>.
Additionally (UK), the gap between comp sci degree courses and the world is quite a gap and therefore I would suggest - keep up with the forums #HashNode medium.com/reddit /r/webdev etc. :)
I don't agree 1:1 with @rajkumarpb, but thinking an OS is holding you back ?? I don't think that's probable unless you use OS/2 or dos + novel netware, that shit is old, get out of the 90s :D
And yes companies do care about the technology, but I got hired for java because they needed some one who knows about cpu-architecture + memory + streaming + network + virtualisation because it was more important to them I understand the system than the language. And I only wrote java 3 times in my life helping my girlfriend and ofc I told them upfront.
Understanding how technology works trumps understanding a specific implementation in general you always have an introduction period and I personally try to get starters from the universities so they can learn .... so I wouldn't worry to much about the operating system and more about the idiots who tell you what you can or cannot do :)
Opinions are like assholes .... everyone got one ! :)
You are wrong. Linux has nothing to do with this. And your perception about Job market is worrying. Java is still one of the most sort after language in Job market and knowing one framework in it will be a big boost in your profile. Try to learn one each, one static and one dynamic typed language and you are good to go. Oh, and adding one JS MVC framework will further enhance your profile. So for what I said, it doesn't matter what OS are you using.
Marco Alka
Software Engineer, Technical Consultant & Mentor
Miks Kalnins
Digital Nomad
Being good engineer has nothing to do with programming languages or operating systems. There are so many options that you can do whatever you want. If you like Unix and C++ go do that, if you like Windows based things do that, want to write COBOL you can do that as well. The only thing holding you back is YOU.