• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Proving I can learn Java, C#, or any language for that matter.

CU

Platinum Member
I have 10+ years of c/c++, with an MS in CPSC, but potential employers around my location really seem to be looking for Java developers specifically J2EE. What is the best way to prove I can learn Java? I understand not being hired for a Senior Java position, but being turned down for entry level is a little harder to swallow. Although it could be that my salary range doesn't really fit in with the just out of college entry level salary. I was thinking about just writing some Java program, maybe something for a website or an android app. I got stuck in an operations role and really want to get back into developing again. C# is also big here, so same goes for that.
 
If by "prove I can learn Java" you mean "get hired before I know Java" then I think that will be a tough row to hoe. In my experience very few companies are willing to hire a flat-out newb in the language/platform they use. So when you go in saying "I can learn Java!" your years of experience aren't worth jack, because you can't do the job. If you teach yourself the language then all of a sudden your years of experience make you a 'senior developer" who has worked in many languages over the years.
 
Just spend a couple of weekends learning C# and Java. Should be a snap if you have all that C/C++ experience. If you know C#, you pretty much know Java, and vice versa. They are very similar. Honestly, they should be REALLY easy for you to learn. C is several orders of magnitude more difficult than C# or Java, in my opinion.
 
> I understand not being hired for a Senior Java position, but being turned down for entry level is a little harder to swallow.

At the moment you are not ready to start work as a Java developer., even as an entry level one. Of course you can learn it, but you are not qualified to start work and write code tomorrow.

Most employers hiring for a Java or C# developer position want a person who can write code the day they are hired, not a few weeks later while they pay you to train in the language. They will already be paying you to get up to speed on their existing code and their development methodology.

For C# or Java you can either:
- learn it on your own time and write some non-trivial programs to demonstrate your competence.
- look for some kind of certificate program to take, but you should plan to still write some real programs not just do homework assignments.

Also remember that just learning the syntax does not make you a productive developer. You also need to learn the libraries, frameworks and development tools / IDE.

If you show up for a C# position and don't know how to use Visual Studio (the real vesion not Express), you won't make a good first impression. The same if you don't know your way around .net.
 
It sounds like you would need to learn a lot more than just Java for these positions. From my experience, J2EE usually means Java for a web site or service. Which means you may also need to know HTML, JavaScript (which is completely different from Java), SOAP, and/or some kind of RPC calling, among other things. Not to mention potential database requirements. I gather the equivalent of J2EE for C# is ASP.NET; did they ask for that too?
 
I have been reading up on the syntax of Java for the past few weeks. I was able to answer most of the Java questions I was asked. Like, what is finalize and final. What is an interface. What is static (although that is in C++). How does garbage collection work. What is the JVM. I did miss the differences between string, stringbuilder, and stringbuffer. I know what they are now, but at the time I had not ran across them. I feel like I already have a grasp on the syntax. The library's and the frameworks seem to be the biggest problem. They are very large. It's almost like saying you must know Boost to know c++. And while I don't feel like I could write a large program without looking up the syntax, I do feel like I could read the code and modify it or debug without to much trouble. A small part of my job now has me reading old bash, python, php, and ruby files to add features or fix bugs. I couldn't write anything large in those languages because I don't spend enough time in them, but I can read and change existing code.

What would be some non-trivial program? Everything I can think of seems to simple like school work or to complicated. Didn't think about getting a certificate in JAVA, didn't even know they existed. Whats a good certificate to get?
 
I was thinking of an evening college certificate program, but there might also be professional certs you could get.

Get every available Java course you can via a local CC. After that, you can go sell yourself as a Java person.

That was how I transitioned from Fortran to C
 
Write an android app. Something that does something cool you need done or just copy the functionality of one with reasonable complexity.

Load that bad boy on to your phone. Get it on to an app store preferably.

Pull your phone out during the interview and show it to them. Ask the interviewer to show you his Java Android app. Chuckle condescendingly when he says he doesn't have one. Turn that into how you believe programmers should stay up on new, exciting technologies (mobile) to stay relevant in the market place "I like to keep my tools sharp".

I feel like that and a decent interview should get you in.

If you really want to pad it, start dumping some Java code on github.
 
The problem probably is that basically all the comp sci programs seem to use Java now. So java knowledge is pretty much expected and employers probably aren't willing to teach you java even for an entry level position. I'd second what others said, take a course and/or write something that you can show off to demonstrate knowledge.
 
Yeah, my intro language was Ada95. Not that useful. I think the class after me start in Java, but then switched to c/c++ for the higher up classes.
 
IThe library's and the frameworks seem to be the biggest problem. They are very large.

Exactly. Also switching between Java and c# syntax wise is pretty easy but if you don't know the standard libraries your pretty lost or end up re-inventing the wheel all the time.

"Enterprise Java", eg. J2EE is even worse. There is just sooooo much stuff out there. I don't think you will need to knwo html for such a position as that usually is back-end development only. Some basic konwledge of SQL however is probably required also if you use java you will probably use some kind of ORM (hibernate, worth looking into if you don't know what it is).

Then there are the application servers on which the applications will run (tomcat, or some commerical stuff). Pretty sure you will need at least basic understanding of these, but probably more than basic.

Last but not least all the tools like source control (not java specific, I suggest at least you learn git or mercurial), then there is ant or maven, netbeans or eclipse, Jenkins/hudson and so on. The list is just pretty big and without learning by doing (in real, big projects) there is IMHO no other way.
 
The Java and C worlds are very very different. In the Java world now you need to know about 30 libraries, the core library to the point where you could likely implement it yourself and be able to tie it all together with a myriad of other languages. Java isn't just Java and hasn't been for many years. To really know Java will take years not a few weekends, a few weekends wont get you a job. If you are failing on really basic questions like StringBuilder/StringBuffer/String then you'll never even get asked the harder questions you actually need to know how to answer (Equality, hashing....).

The problem for anyone hiring you right now is you are a long way from being useful to a dev team, you'll code in C like Java and none of your team mates are going to want that, you need to learn idiomatic Java to reprogram your coding style. The Java libraries are pretty big, there is a lot to know just in the basic java and javax packages but really what everyone needs you to know is the 30 or so most common libraries in Java. You might think that is unfair but that is how the Java world works, the building blocks of every application contain external libraries that fullfill critical functions. Everybody uses a log4j derivative logging framework, almost all use Joda time for Date and time etc. Most enterprise development jobs on top of all that also want you to know J2EE as well. That means things like JMS, servlets, jsp, JNDI. These things are not 1-2 day pick it up technologies, J2EE is really painful to learn.

Worse than that of course is we are in the Web world now so pretty much everything developed also uses HTML, CSS, JavaScript + the rest of the web world. You need to know that too.

And this is for an entry level programmer, for the senior stuff you actually need to be seriously productive and deeply knowledgeable, the above list gets you started.

I interview a lot of Java developers and I doubt you could pass a decent phone screening let alone the face to face technical grilling or the TDD Pair programming exercise in a Java IDE of your choosing.
 
Last edited:
I would personally start by looking at doing a simple project that you can do in a week or so, which will give you more experience in the language and can be a great little demo to say "look, I can write Java too." On the net, I would suggest looking at http://mindprod.com/jgloss/gettingstarted.html as a good kick starter (for example Hibernate is a good ORM to look at so you get a feel for how to get Java to play nicely with a DB) and here is a good list of potential projects: http://mindprod.com/project/projects.html.

I can't judge your area but here most of the dev work involves web development, so you might look at your market and see where to spend your time learning. Also, I'm primarily a .net developer, and I can say that much of this applies nicely to C# (at work we use NHibernate for example), so if you learn one, you will have a good idea of both. Understanding TDD might be useful, so you might glance at JUnit and read up on TDD (I'm not sure how active the C/C++ community is in TDD, if you already know it, ignore this). Lastly, depending on if your mostly a C or a C++ dev, you might not have had much use for design patterns (http://mindprod.com/jgloss/designpatterns.html). If web development looks like something to focus on, I would look into MVC.
 
C++ to Java is a real easy transition. I made that transition after my first job out of college, doing C++ for 5+ years, and was hired at a lower end scale of the pay grade for a mid-level Java developer.

About a year and a half later, I was considered a "Senior" developer at my position at the time. I picked it up VERY quickly and was very quickly one of the top developers at that company.

I started a new job this past Monday and am going to be doing more languages I've never done - javascript and grails (to start with) and I'm itching to start learning it. And my salary is now at the level it should be for having just under 8 years experience in the industry.

I've also done some Android (and iOS) development in my spare time. Android natively is Java, so making an Android app would be a good start. However the way an Android app is presented is very different than a desktop Java app (and web-app, but I've never done web-apps yet but soon will at my new gig).

I would think that if you can explain that you know OO very well that they SHOULD be able to take you on to a Java position with a salary of your current range or more. OO is just OO, and going to Java is cake from C++. It's going the other way that would be tougher IMO.

And if a place turns you down because of it, chances are that place probably isn't a good place to work. Good companies know that good developers can learn ANY language, and usually those companies are the better ones to work for.

Ones that turn you down because you don't have X years experience in some super specific area probably aren't going to be such a great place to work at IMO, and from my experience and interviewing. However at the same time, they may need someone that can come on board and be productive in a very short period of time. So I guess it is scenario specific heh.
 
Write an android app. Something that does something cool you need done or just copy the functionality of one with reasonable complexity.

Load that bad boy on to your phone. Get it on to an app store preferably.

Pull your phone out during the interview and show it to them. Ask the interviewer to show you his Java Android app. Chuckle condescendingly when he says he doesn't have one.

This is a good idea up until the bolded part. Dont do that.
 
It seems some people think moving Java is easy and some think it is almost impossible.

The list is just pretty big and without learning by doing (in real, big projects) there is IMHO no other way.
How can you do it for real if you have to do it for real first????

If you are failing on really basic questions like StringBuilder/StringBuffer/String then you'll never even get asked the harder questions you actually need to know how to answer (Equality, hashing....).
I read http://www.artima.com/lejava/articles/equality.html and it is very easy to follow and not hard all once you know how JAVA works. Thanks for bring it to my attention. What are some other harder questions/topics in JAVA? Things like this are things I need to read about.

I am curious with the JAVA is hard to move to vs the JAVA is easy to move to crowd. Who started in JAVA and only done JAVA vs who started in say C++ or another OOP language?

Also most seem to say you don't learn a language in college, but learn computer science, however it seems unless you went to school just to learn JAVA you would never fully learn everything until you work with it as a professional. But that seems difficult given how much some say you need to know about JAVA to get an entry level job doing JAVA development.
 
I started in C and nowadays I program in 5 languages pretty fluently and I have learnt another 25 to a syntax and basic semantic level. The problem with Java is not so much that the language is complicated its that the level of expertise required has risen dramatically as its aged. I remember getting early Java jobs off the back of a university project and a website with 2 pages, you couldn't do that now.

There are a few critical books that will ramp you up on a lot of the gotcha/key elements of the Java world and all of them get asked about at interview very regularly:
Effective Java - Josh Bloch
java concurrency in practice - Brian Goetz
Maven
Junit
Implementation Patterns
Spring
Design Patterns
Enterprise patterns

Its really important to know the ins and outs of the collections framework, as in the entire contents of java.util. Read through all the Javadoc in java.lang, every single class and method. Lots of gems of knowledge in both of those packages that you need to know.

The Documentation that comes with Java has a tonne of tutorials. Take a look at their guide to the Java language certification. Don't actually do it, that is a bad indicator on your CV but knowing the contents is important. Make sure you go through the IO tutorial, nio, collections, deployment, networking, JavaBeans, JDBC, JMX, JNDI, JAXP, RMI, Reflection, Security and sockets.


In addition it would be really good to have read the following that a lot of Java teams use, in particular big moves these days for TDD and agile practices.
Clean Code
Code Complete
Xtreme programming
Agile estimating and planning
Apache Tomcat
The cucumber book (Its ruby but about the best treatment of TDD with BDD that I know of)
Git and subversion
Watch the TDD videos from pragprog (Kent Beck doing it, very useful)


I hope that helps.
 
It seems some people think moving Java is easy and some think it is almost impossible.

How can you do it for real if you have to do it for real first????

As a junior Developer or even trainee ship. Of course that's not really an option for you. Or if you somehow get lucky and find someone how is willing to invest in you knowing it pays back later.
But it is basically the same as when you come fresh out of university. All jobs require you to have "at least 3 years" of experience. How can you get that if no one want to hire "noobs"? You have to get lucky or make sacrifices salary-wise.
 
syntax's come and go, only the logic remains or is improved(OO).

pick a personal project you actually need/want to complete and write it the new language.

I started with BASIC on my own at 11
pascal was used in college as a learning language (also learned lisp, and C)
UNIX admin work gave me Perl
Linux admin work gave me Python
curiosity game me java, html (you get the idea), javascipt, ruby

learning another language will actually improve your use of logic, you gain the ability to look at tasks abstractly. Don't limit yourself to the view of the language developer. You may find a language that better suits your own thought patterns, or ideas on coding.
 
I Think you have only theoretical knowledge about Java, you have not real time (practically) experience, So to be a java developer in a company you must have practically knowledge. So the best option for you that learn Java with your current position either self or you can also take some training programme, after that you can take some project as a free lancer and enhance your knowledge with that then you can get entry as a java developer.
 
Back
Top