Java or C# career and future of programming

Started by
21 comments, last by dilyan_rusev 11 years, 8 months ago
dilyan_rusev : so if I have a good understanding of active directory domains and dns,dhcp, exchange, sharepoint and all the microsoft networkings and system administrators stuffs it would be better off for me to learn C# to complement that ??? I'll be more marketable in a way than Java no ? since it all goes together and I'll be able to build desktop/metro apps that goes with the system admins and network stuffs ???

but Java goes very well with Linux and all the open source stacks of networking too like oracle ibm etc What do you think ?

thanks for everything again please go on if you want
Advertisement
Both options are good. Maybe look at what you want to do first? Java is in for mobile phone programming, while the c/c++/c# route is still the mainstay for PC/console programming.

-Clee
Well, you don't have full mapping for active directory (System.DirectoryServices), but at least IIS is somewhat covered. What is cool is that you have *really* easy access to COM, so you can access anything that is not directly included is very easily accessible.

For a windows sys admin, .NET is much better. I can only say PowerShell :) If you do intraweb as a sys admin, you can manage SharePoint as well. If you manage the build of a company, both Nant and MSBuild are very easy to use (and, of course MSBuild is evolving more rapidly).

If you like working on enterprisey stuff (IBM/Oracle), I think Java is better. The problem with these jobs is that they do require some experience. It obviously doesn't matter *which* stack - a friend of mine told me they'd hire me at Cisco even though I have no professional Java experience. So your goal No 1 would be to gain some. I think it is easier to find a job in .NET, especially as a sys admin, but not necessarily one that you like. As with any job interview, you just have to know how to cell yourself. You know, the popular proverb goes shoot at the starts, and even if you miss, you will still be amongst the starts :)
so you recommend me to stick with .Net because of my expertise with Microsoft Networking already ?? it will work better together as a whole and I'll be more marketable at more places that's what you say ?? that's what I think too but look at what the author Harvey Deitel told me about Java and C# in a email :

"" C# and Java have similar capabilities. Most professionals would say that they're almost equivalent in expressive power. I wouldn't say that you can do exactly the same things in each language, but their capabilities are very close. Again, once you master one of these languages, you'll be able to master the other easily, but it will still take time. ""

What he mean in almost equivalent in expressive power but he wouldn't say you can do exactly the same things in each language etc he mean desktop apps and windows dev is better off with .net and all the server back end stuffs is better off with Java for the open source technology like hibernate springs etc ???

thanks a lot for the important replies
It really doesn't matter. With experience and practice in software architecture, I firmly believe that you could learn a new language very quickly. Yes, there are subtle differences, but the higher level concepts remain the same. Structuring code in a way that is simple, works, and is easily extendable is what you should be focusing on. You said you had experience with C++, then I would stick to that and really practice on creating progressively tougher projects.

I would also learn about OO paradigms and patterns. Get familiar with the tools such as the IDEs and debuggers. All of this comes from practice. The language is just a tool. Depending on the application you're building you would choose the appropriate language and tools that will make the job more efficient... but your higher level skills will still be the most important thing.
Most libraries for .NET web development are open source, too. Razor, MVC, Entity Framework, Ajax Controls, ASP.NET, the best patterns & parctices collection of libraries are all open source and hosted on codeplex. For everything in Java you have an alternative in .NET (or a direct port). Microsoft are changing their poicly towards the open source model so far as web development is concerned (a lot of their pet projects are hosted on github). There are a lot of cool people there that are trying very hard to make more and more stuff open source, and to create a community. It is still true that you can't easily update the core libraries (ASP.NET), but recent versions of VS have made it very easy to update auxiliary libraries (MVC, Entity, Razor, etc) via NuGet (so that you don't wait for the next release of VS for a bug fix).

To say that it is "easy" to learn either .NET or Java is a huge understatement. C# and Java, as languages, are very similar, and just like any language syntax, real easy to learn. But both .NET and Java as frameworks are freaking enormous. You will probably never know all the APIs, especially with the speed at which they keep eveloving, especially .NET. What matters, as I said, is experience. If you've used Ruby on Rails or Django or CakePHP, then you'll know what to look for in both Java and .NET. These classes of frameworks simply can't be implemented that differently, so if you've used *any* windowing toolkit, you can reasonably excepct how to use WinForms/Swing. That is why people keep saying that what matters is experience. As you code, you get to understand how things are generally structured in different classes of frameworks (all MVC frameworks share a lot of features, so if you know one very well, you can reasonably fast learn any other MVC framework).

I am not telling you to choose .NET. I'm saing that for windows sysm admins .NET makes much more sense than Java. It is because a lot of Windows components are exposed via NET and COM, and as I said, COM is extremely easy to use in .NET.

Whether or not you are more "marketable" depends on how well you are able to sell yourself. That means knowing how to do job interviews, knowing how to approach employers, knowing how to structure your CV, knowing how to write cover letters, knowing that it is important to research each potential employer and employ customsized approach. Your first taks is to get past the HR sieve - if you are good, the IT people are gonna recongise you. In my experience, smart developers can "smell" other smart developers, so if you are good and get to be interviewed by developers, you almost certainly have to job, unless you screw up something real bad.

The most important thing in order to impress another developer is competence. You get that with experience. Experience is gained by doing and completing projects. .NET or Java doesn't really matter, cause you have to learn a lot of company stuff anyway when you join, so unless you go for senior position, the time for you to "switch" will be neglible compared to the time you will need to master the compay's code base and internal rules. Pick whatever you like the most. I started with .NET cause I was familiar with Visual Studio from doing C++ programming. You may pick up the thing you feel you know most about, and will allow you to look for the kind of jobs you like.
If you intend to study the best bang-for-your-buck language, that would be JAVASCRIPT (or more specifically , ECMA-Script). At this point in time, it is the one language that is truely cross-platform viable and runs across a variety top-tier technologies. Its an asset in about every playing field.

Core reasons:
1. Cross platform. It runs in every web browser, or web view when packaged into an application, and even as mobile applications. and you can build awesome and complex user interfaces easy, interacting with whatever your host container provides (and more). The ui can be defined in such a way that it looks the same, regardless of what system its on. Or, it can use model form elements to represent other things.

2. Even complex 3d games with hardware acceleration are possible in many browsers (and/or by packaging the browser as a view). WebGL and Canvas will take you far on this route.

3. Its derivative languages include the primary language for AS3 (flash), and one of the primarly languges used by Unity3d (which is pretty much the shit)

4. It is a powerful and flexible web server with native websocket support (see nodeJS)

5. Native json (obviously) support means that it readily communicates with most key/object stores used for big things such as MMO's (read: mongo, couch)

And as a more obvious note a strong JS background will make you indespensible to the web and marketing sides of the company.

EDIT: In short, its a language thats mandatory in almost every programming team. And thus, in my mind, gives you the highest probability of employment should you be really good in it. However, its one of those languages that everyone knows, but few know well, so there is a HUGE disparity in industry pay, but lots of demand.
Richard Cesar : are you saying that .Net is on it's way out with Html5 and Javascript being the future of windows development for UI in Windows 8 metro ??? Lot's of peoples told me that WebGL may not be 100% supported in IE10 and that you won't have 100% access to the .Net framework as it is to develop Metro apps only but you will be ok for desktop apps, I think they limit you somehow for the Windows Store ( am not 100% sure about this )

a good Java programmer told me that Java was the way to go for backend stuff's on server because jvm based languages may dominates on the cloud while running on free linux vm's, and that .Net as the edge on everything front end but that both languages could do mostly all the same things. I've been advised to learn .Net because I already have MS expertise with Active Directory domains and all the rest of the MS networkings stuffs he said to me I'll be able to build great program and combine them with Powershell who could give me a edge on the job market but on the other side the experienced Java programmer told me Java as the edge on Mobile because Microsoft isn't in the game yet againt apple/android ... but what worry me about Java is desktop apps development .Net is stronger there and it seem that most big companies stick with Asp.Net and MVC 3 for the big web project so it seem pretty safe in the distant future

But what about Mobile ?? and will Metro really succeed and be a game changer ??

But what about Mobile ?? and will Metro really succeed and be a game changer ??


It is impossible to make such a prediction, Microsoft has failed before but when they start pushing hard at something they have a good chance at succeeding.

The most interesting part about Metro would be running the same apps on your windows desktop and your windows phone, for that to work people have to actually buy Windows phones though. (Without that integration i'd expect metro to die off), JavaScript is still one of the most used languages though (lots of web frontend work is written using it these days).

For Mobile it is mostly Objective-C and Java these days but C# does work (Using for example Xamarin) and is used for quite a few iOS and Android apps aswell, C++ knowledge can also be useful on mobiles and for alot of things wrapping a html/javascript app in a webview can cut developmentcosts greatly.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
Windows 8 UI (it is no longer called metro) is meant to ship with .net 4 preinstalled. I don't think .net is going anywhere any time soon.

This topic is closed to new replies.

Advertisement