PDA

View Full Version : Recent Graduate - J2EE vs .NET



kogber
January 24th, 2007, 06:24 AM
Greetings. I realize this is a linux forum, probably with a lot of bias against ms, but I share that bias as well.

Background:
So I recently graduated from a major university with a computer engineering BSE degree, with a focus on software engineering towards the end of my studies. I am somewhat of an idealist who believes that crowdsourcing/OSS/open standards are freakin' awesome. I went to a JavaSchool, so most of my knowledge is with java. I actually encountered 0 lines of c++ at Pitt, but I do know some C from a couple classes. Pitt's curriculum was in c++ instead of java until recently.

Q:
I am trying to find work where I would be doing j2ee stuff rather than .NET. I have absolutely no knowledge of c# or the .NET platform. But I also have never done any j2ee development, having had an internship where i did j2se programming with some Spring Framework bean configuration stuff.

I would like to find an entry-level job where the development is done with java-based technologies. But there are also many companies that use the c#/.NET platform. If I pick one or the other, am I effectively "locked in" to that technology for the rest of my career? Would I be able to easily switch or find another job using the other platform? Is working in with .NET evil? Is learning c# worthwhile?

On a side note, I have figured that only around 1-2% of job board listings are for entry level or recent graduate positions. The vast majority are for junior/senior positions that require a minimum of 1-3 years in several technologies. I feel very much under qualified for such positions, and I don't understand why companies are unwilling to hire recent graduates. I don't want to waste the company's time or my time applying for junior level positions that seem to require several years of enterprise-level experience. Any thoughts on this?

Thanks!

runningwithscissors
January 24th, 2007, 06:43 AM
Greetings. I realize this is a linux forum, probably with a lot of bias against ms, but I share that bias as well.
The bias is justified. But we aren't zealots. At least, I am not. :wink:


Background:
So I recently graduated from a major university with a computer engineering BSE degree, with a focus on software engineering towards the end of my studies. I am somewhat of an idealist who believes that crowdsourcing/OSS/open standards are freakin' awesome.
Congratulations!


I went to a JavaSchool, so most of my knowledge is with java. I actually encountered 0 lines of c++ at Pitt, but I do know some C from a couple classes. Pitt's curriculum was in c++ instead of java until recently.
Java isn't a bad language to lean at all. Just don't be taken in by the brainwasing (which a lot of academics tend to do). For eg. OOP is not the be all and end all of programming.


Q:
I am trying to find work where I would be doing j2ee stuff rather than .NET. I have absolutely no knowledge of c# or the .NET platform. But I also have never done any j2ee development, having had an internship where i did j2se programming with some Spring Framework bean configuration stuff.
As long as you know how to develop, that shouldn't be a problem. Entry-level jobs do not require elaborate skill-sets in any one language. They look for people who can solve programming problems. If you know programming well, you'll have no trouble picking .NET/C# up.


I would like to find an entry-level job where the development is done with java-based technologies. But there are also many companies that use the c#/.NET platform. If I pick one or the other, am I effectively "locked in" to that technology for the rest of my career? Would I be able to easily switch or find another job using the other platform? Is working in with .NET evil? Is learning c# worthwhile?
C# and .NET are OPEN STANDARDS. Seriously. Only the WinForms API and certain other parts are proprietary. You can in fact develop Open Source apps with Mono and C# on Linux, rather than relying on the closed (as of right now) Java technologies.

You won't be locked in as long as you know how to write efficient programs in any language. All that changes is the syntax.


On a side note, I have figured that only around 1-2% of job board listings are for entry level or recent graduate positions. The vast majority are for junior/senior positions that require a minimum of 1-3 years in several technologies. I feel very much under qualified for such positions, and I don't understand why companies are unwilling to hire recent graduates. I don't want to waste the company's time or my time applying for junior level positions that seem to require several years of enterprise-level experience. Any thoughts on this?
You gotta start somewhere. Entry-level jobs are not all bad. Make sure you get one where you are allowed to actively work on/design projects. Not just develop tiny modules for some larger projects. Samller organisations can provide you with that opportunity. Look at me. I graduated as an Industrial Engineer 3 years ago. At the time, industrial engineering jobs weren't plentiful. So I changed field and got a job as a programmer. Been developing professionally for two years now. :)

pmasiar
January 24th, 2007, 02:45 PM
Greetings. I realize this is a linux forum, probably with a lot of bias against ms, but I share that bias as well.

No bias here. Clinical trials published in peer-reviewed literature shown that switching to Linux saves you money, improves your skills, sharpens your eyesight, gives you more free time, heals warts, and improves your sex life - or your money back! :-D Heck it can even walk your dog if configured properly! :-D


I am trying to find work where I would be doing j2ee stuff rather than .NET. (...) But there are also many companies that use the c#/.NET platform. If I pick one or the other, am I effectively "locked in" to that technology for the rest of my career? Would I be able to easily switch or find another job using the other platform? Is working in with .NET evil? Is learning c# worthwhile?

You have 40 years of career ahead (unless you became millionare before that :-) ). No way any of these platform survive that long as mainstream. So be prepared to learn new languages and platforms.

Linux = Unix, is 35 years old (and going strong :-) ) is more settled - less radical changes can be expected. There is whole theory in economics about "commoditization" - making product a commodity, replacable anytime with simillar product by other producer, mostly on price. Like cement or steel or coal. Computers became commodity with introduction of common operating system (Windows), now basic operating system is becoming a commodity itself, and additional services/applications are the differentiating factor. With price = 0, open source is ultimate commodity by definition, unstoppable.

Lock-in depends of in what company you work, and what is status on job market. Smaller companies and hot job market gives you more chance to move into different area. Also, with free software there is nothing to stop you to learn th eplatform and couple of languages on it. You can build your resume by working on open-source projects and become well-known expert without permission of some HR drone.

Learning C# does not expand your horizons much - C# is slightly improved and incompatible java (embrace, extend, choke - MS as usual). Try some very different languages, depending on what your interests are: Javascript/AJAX is very very hot for dynamic web applications. AJAX is often used with dynamically typed languages on the server, like Pyton or Ruby, and they should be big surprise for you (to see how much productivity you can gain by letting computer to worry about the types). C or assembler will expose you closer to haw hardware works. Lisp is even more different. Prolog, Forth, Haskell, Erlang are other very different languages. SQL and databases is again very different skill - and usefull one to have.


only around 1-2% of job board listings are for entry level or recent graduate positions. (...) I don't understand why companies are unwilling to hire recent graduates.

You restricted your search to enterprise positions. Small comapnies might be more willing to experiment and give you a chance. But you might have better chance on success (finish job in time) using more agile languages, like Pyton/Ruby, or even Perl. Sadly, big corporations outsourced most of the simple job offshore. For smaller companies it makes less sense to do it.

pmasiar
January 24th, 2007, 02:51 PM
C# and .NET are OPEN STANDARDS. Seriously. Only the WinForms API and certain other parts are proprietary. You can in fact develop Open Source apps with Mono and C# on Linux, rather than relying on the closed (as of right now) Java technologies.

1) You might missed it, but Java was released under GPL recently.

2) It is not known how much of C# is patemted, but MS makes noises that important parts are. Open standard is orthogonal to patent: you can standardize something, and patent it too. It does not makes sense unless you want to forbid free (GPL) implementations of it. So using mono is like picking strawberies on minefield: big rich strawberies, because nobody goes there! IMHO, IANAL, YMMV.

runningwithscissors
January 24th, 2007, 03:39 PM
1) You might missed it, but Java was released under GPL recently.

From Wikipedia:

On November 13, 2006, Sun released parts of Java as Free/Open Source Software, under the GNU General Public License. The release of the complete sources under GPL is expected in the first quarter of 2007.


2) It is not known how much of C# is patemted, but MS makes noises that important parts are. Open standard is orthogonal to patent: you can standardize something, and patent it too. It does not makes sense unless you want to forbid free (GPL) implementations of it. So using mono is like picking strawberies on minefield: big rich strawberies, because nobody goes there! IMHO, IANAL, YMMV.
C# and Mono are independent implementations of a publically available standard. As of right now, they are completely safe to develop with.

Novell being in cahoots with MS (and being a sponsor of Mono development) is cause for concern. That is a different matter.

Hendrixski
January 24th, 2007, 03:48 PM
With a degree in Software engineering you'll be earning $60,000 first year out of college. You can find a job Java programming without a problem. Don't learn C# unless someone pays you to learn it. It's very easy to learn, and you'll be very productive on it, but nothing you write will work well on Linux.

Most of what I do is Java, some SQL, a little C# here and there, and lately MDX (if anyone tells you that you will be writing MDX tell them "NO THANK YOU". trust me you will be happy you did). You'll pick up new stuff on the job, right now, just spend time looking for a job instead of learning new "skills" you may think might maybe eventually be helpful, because maybe they won't be, and instead of earning money you'll be wasting time.

Good Luck.

pmasiar
January 24th, 2007, 04:32 PM
From Wikipedia: (...)
C# and Mono are independent implementations (...)

Close enough for me in both cases. :-) IANAL and have no time to split legal hairs. If anyone is tempted to tru Mono, go ahead. And I do believe that when creating C# MS learned something from java and improved it (both Java the language and Java the VM).

How C# is improved over java ( see http://en.wikipedia.org/wiki/C_sharp ) MS poached Anders Hejlsberg (Turbo Pascal, Delphi) from Borland (to design C#) and recently hired Jython developer Jim Hugunin to work on CLR (C# VM) making it more usable for dynamically typed languages - IronPython is Python for .NET.

If I was tempted to go .NET, I would go IronPython way. :-)

kogber
January 24th, 2007, 05:55 PM
Thanks for the input people. Always good to hear what others think.

DeadEyes
January 24th, 2007, 06:02 PM
First off Java/.NET are not mutually exclusive, you can learn both. If you know Java and have a good grounding in programming concepts you should be able to pick C# up in about a week. You won't get "locked in" for life, experience is king and a good developer should be able to use any language given some decent documentation.

"Is working in with .NET evil?" I don't think so, and if you do, ask yourself can you afford to turn down jobs because of your beliefs?

Finally Job Adverts are a joke. They look for all kinds of ridiculous contradictory stuff, like 10 years experience of developing iPhone applications. Just cause they want someone with 1-3 years experience doesn't mean they are gong to get that. Apply for junior positions, how much of a waste of time is it for you to send in your CV. If your not in with a chance you wont get to the interview stage, so all you've lost is the time it takes to send an email.

PS I've coded professionally in VB6, C# and Java amongst others and C# if my favourite.

blanky
January 25th, 2007, 01:48 AM
I've coded in various languages (Not professionally though, I don't even have a job :( Not out of HS yet), and have grown to like C# the most. I think that one of the reasons it's not widely accepted in the Open Source community yet is because of all the ignorance that it arises. People hear C# and what do you hear the first ignorant say? It's Microsoft's, it's evil, etc. etc. Okay think of it this way, pretend the Linux community is always right, okay? Well then why would they have gone through too much trouble to make a Linux implementation? (Mono) In fact, so many breakthrough applications take advantage of mono, Beagle, Tomboy, Monodevelop, iFolder, Muine, F-Spot, Blam, ... take a look at this list (http://www.mono-project.com/Companies_Using_Mono) for just a couple, in fact, from that very same page:



Wikipedia (http://wikipedia.org): WikiPedia uses Mono for its search facilities. The indexing and the actual searching is done by Mono-based applications.


Why would they all be going through all of that trouble if C#/CLI (http://en.wikipedia.org/wiki/Common_Language_Infrastructure) was evil?

I think it's time people started getting informed, because, although I'm not claiming it'll take over C/C++, it's pretty apparent that it's here to stay.

Also, I'm not really experienced in this area so I don't mean to say false things, but the 'WinForms is patented' argument I think is pretty lame. First of all, I consider (Again, not sure if it's really how it is) it to be just like any other library, they wrote it themselves, they get to keep it, why's that a big deal? We have Gtk#, wx.Net, and we even have a mono WinForms project, so what is the deal here?

If people want problems, they'll always find them.

Note360
January 25th, 2007, 02:38 AM
Technology is not inheritly evil it is those who use it who are.

pmasiar
January 25th, 2007, 03:59 AM
like C# the most. (...) is because of all the ignorance that it arises. People hear C# and what do you hear the first ignorant say? It's Microsoft's

What if they are not ignorant - what if they are just *better informed*? :-)


pretend the Linux community is always right, okay? Well then why would they have gone through too much trouble to make a Linux implementation? (Mono)

Linux community consists of thousands of people. Obviously not all of the are right all of the time. Mono (http://en.wikipedia.org/wiki/Mono_%28software%29) is brainchild of Miguel de Icaza (very smart person,, he started also midnight commander - highly recommended file manager), but not infallible.


I'm not claiming it'll take over C/C++, it's pretty apparent that it's here to stay.

Obviously - Microsoft will stay for some time, and so will C#. No questions.


Also, I'm not really experienced in this area so I don't mean to say false things, but the 'WinForms is patented' argument I think is pretty lame. First of all, I consider (Again, not sure if it's really how it is) it to be just like any other library, they wrote it themselves, they get to keep it, why's that a big deal? We have Gtk#, wx.Net, and we even have a mono WinForms project, so what is the deal here?

I agree that you are not really experienced :-) read up: Patent (http://en.wikipedia.org/wiki/Patent), Patent troll (http://en.wikipedia.org/wiki/Patent_troll) Software patent (http://en.wikipedia.org/wiki/Software_patent) and debate (http://en.wikipedia.org/wiki/Software_patent_debate), Submarine patent (http://en.wikipedia.org/wiki/Submarine_patent). Read about RIM (http://en.wikipedia.org/wiki/Research_In_Motion) who paid $612M to dismiss a suit by patent troll, whose patent claims were rejected.


If people want problems, they'll always find them.

Yes. And then there are people paid to find a problem to sue competitor. They are called patent lawyers.

Imagine you have a promising startup, worth 500M. Then a lawyer comes and says: we can either buy you for 50M, or we will sue you and you go bankrupt. Even if you are willing to fight, your investor may go for sure money.

samjh
January 25th, 2007, 01:58 PM
In my experience, small companies are less likely to hire fresh graduates than large enterprises or government organisations. Small companies have less budget for IT and less staff, and are under greater pressure to get the job done with their limited expertise. Outsourcing to a third party is the easiest way to go for such companies, or their employees need to be able to hit the ground running, which most graduates cannot do.

Large companies with graduate mentorship programs are more forgiving for fresh graduates, but they usually have lofty hiring standards, and you will have stiff competition from other graduates (usually with very good GPAs).

On the platform side, small companies look for easy, popular, and tightly integrated solutions. This usually means MS and Windows-centric products. Obviously this points to .NET.

Larger companies have more rooted infrastructure, and utilise more fragmented systems. Usually this is a mixture of MS and Windows, and UNIX-based platforms. Banks are a classic example of large businesses that use Java on UNIX systems for back-end processing and e-commerce solutions. Java is also becoming popular with governments that want to adopt FOSS procurement model (for the sake of public transparency).

My answer will be to learn BOTH Java and .NET. But beware: if you learn .NET, be prepared to master one of C# or VB.NET and almost always ASP.NET. A lot of companies that use .NET use it for ASP.NET with MS SQL Server backend processing. So be prepared to be proficient not only with C#/VB.NET, but also with ASP.NET and Transact SQL (aka. T-SQL). Learning J2EE is a somewhat shallower learning curve, especially if you already know Java. It is built on the Java language from the start. Knowing Unix/Linux is a good advantage if you learn Java, since a lot of companies that use Java also use Unix/Linux somewhere in their infrastructure.

At the end of the day, you will need to invest a lot of time, regardless of which platform you choose to focus on.

Note360
January 25th, 2007, 04:25 PM
On-Topic: From my breif experience with Java and C# I think C# itself is a somewhat prettier language than Java. However, this is comign from a novice. From what I gather a knowledge of Java should be fine, though maybe on a break learning C# could boost your salary. Though you have to figure out if you want to be a, jack of all trades, or master of one, or Super Jack of a few trades.

Off-Topic: This is very educationg for me, though I get the benefit of a paid internship my Junior year of High School. I am only a Freshman but I am in this cool AOIT program, head of my clss with a 100 average then I think the second highest is like a 95 or somewhat. Oh, also our teacher is allowing me to set up a Linux server in the school network, goof thing to, they wont be able to lock me down if I am admin, woot (the XP computers are completely locked down as of now).

kogber
January 25th, 2007, 05:34 PM
that is very informative, samjh, thanks. Keep the info coming guys! My only regret for this thread is my 'evil' word choice, heh.

boredandblogging.com
January 26th, 2007, 10:31 PM
Like some folks have said, since you have done J2SE and hopefully understand basic OO principles, J2EE will be relatively easy to pickup. C# is so similar that it won't take you that long to pick up. My suggestion is try to find a Java job since thats what you have some experience with.

laxmanb
January 27th, 2007, 05:05 AM
J2EE is easy if you know Java Core... go for that... it won't take much time either...

with C#, the language is similarish, but the API is completely different...

shawnbarrett
October 7th, 2010, 07:08 PM
I get the impresion that when questions like this are asked, replies are often directed at syntax comparison. Learning the syntax of any language, in my opinion, is the "easy" bit.
It is the years required to gain experience using the underlying class libraries that make you a good developer. In the past, you were a developer. These days you are a java developer, a C# developer, a .NET developer, a C++ developer etc.

I estimate it takes 5-8 years to become truly proficient in any of the above disciplines. So to think you can dip in and out of Java / .NET, whilst becoming really good at both is unrealistic. My belief is that, if software development is your profession, you should choose a path, but always keep an eye on all platforms, emerging/re-hashed technologies. This is aimed at a relative newcomer. As you gain experience, it is easier and quicker to understand other languages. You will have an understanding of patterns and can quickly compare like for like. You will know your way around object models and so can find and digest info a lot quicker. Actually once you truly proficient in a given language/framework you can cross-train really quickly, but you still need experience with the base class libraries and they are huge. Nevermind trying to keep up to date. However, remember that languages are tools to support a specific domain. Web, Desktop, Static, Dynamic etc

If you noticed in my examples above I said a C# developer and a .NET developer.

A .NET developer can use C#,VB, A#, F#, J# and countless other .NET supported languages. A C# developer prefers C#. All .NET languages are compiled via the CLR (Common Language Runtime) and adhere to the CLS (Common Language Specification).

It will also come down do IDE experience.

For Java, I prefer Eclipse, which has come on leaps and bounds over the years and is fantastic. I personally find Java less productive. If you go down open source route you have to evaluate various frameworks for each development task. Although once up and running, it's great. Can be a bit daunting for beginners.

For .NET, it's Visual Studio, or Visual Studio Express if you want it for free. A great IDE and powerful once you unleash it's true potential via plugins, macros or just generally knowing all it's functionality. Many Java developers may argue that some of the really popular plug-ins like resharper, come for free with Eclipse. I find .NET really productive, especially Silverlight / WPF / WCF and the use of bindings. You can do an awful lot in a really short amount of time.

Can't remember where, but I read "Java for server, .NET for UI".

trongbang
October 21st, 2011, 12:30 PM
With a degree in Software engineering you'll be earning $60,000 first year out of college. You can find a job Java programming without a problem. ......
Good Luck.

Really? I'm desperately looking for a java job now. I'm hoping only $50,000. No one is hiring me even though I have a very solid background as well as great Java qualifications

slavik
October 21st, 2011, 12:38 PM
closing.