Knowledge - Uni vs Job
Sorry for the duplicate thread..
I am wondering, I am studying programming at college where we are currently focusing on Java. In total 1 year will be spent on Java before moving onto C#. My question is how much did you guys that are working as professional Java programmers learn at college compared to when you started in the work force. I feel that when we finish Java in around 9 weeks we have still only scratched the surface, there so many other classes that we have not discussed in the API. Thanks.
I am not a professional developer, and I am still somewhat new to programming, however; to give you a suggestion now as opposed to when the professionals wake up(which could possibly be in a few hours).
I believe that while 9 months isn't enough to learn the entire language, it's absolutely enough to learn a very large amount of the language. You may want to consider continuing your education on the side of school. You should be able to understand the basics in a month or two(maybe less), then dive into the basic class library and understand it in another 1-2 months. Finally, you can start focusing on the more advanced class libraries(networking, threading, etc). I believe that the best thing you will learn in college is the concepts of programming. The syntax isn't really so hard in any language. The hard part is learning proper syntax, knowing which data structures are suitable for which situations, how to make efficient algorithms that work well, etc, is what's important.
I'm sure a lot of people get a decent amount of experience in school, however; I'd imagine you will learn more after you get employed. It's pretty important to continue keeping up with the changes on your own. Since your classes should be teaching you the basics, consider buying some more advanced java books as well(effective java, and concurrency in practice pop to my mind immediately).
I am imagining you are a CS major? What's there schedule like? How much time is going to be spent on c#?
I just realized I said 9 months in my post instead of 9 weeks. I am going to assume you know some basics now, and by the end of the first month, or month and a half you should be ready to move onto the challenging stuff.
I'd imagine some of the best programming books don't really deal with such high level languages like java and c++ and absolutely will teach you an incredible amount. One book I have heard good things about and just started readin is Structure and interpretation of computer programs. Another good set I have heard is great and intend to buy soon is The Art of Computer Programming volumes 1-3. The former uses scheme, a dialect of lisp, starts with basics of recursion, and apparently develops into creating an interpreter and compiler.
The Art of Computer Programming(haven't read it) from review I have read uses an old(don't know if it was ever used, may have only been made for the book) assembly language called MIX.
I hope this post was a helpful post from a non-professional while you wait to here from others here who are professionals.
Thanks for that I find that inspiring. In total 12 months will be spent on Java followed by 6 months of C# and another 6 months on ASP.Net MVC, which is good as I do intend on working in Web. I am studying at TAFE in Australia which is another recognised Institute next to university. I have spoken to people at Uni and our course seems a lot more intense.
I actually program java for a living myself now. I dont consider myself an expert by any means (Ihavent been doing it professionally for long).
I did a TAFE course in Canberra, which was pretty basic although it did cover servlets and JSP - more advanced concepts. I finished the course not feeling very confident.
Luckily work was starting up a new java team and because they knew I was studying it, they asked me if I wanted to be part of the team.
Well about a year later and things are going great. I found that the most important thing is to get SOLID on the basics. Even after all this time I there are some basic aspects to java that I havent really looked after, and we've started using them at work (hmm I really need to master maps!). I'm not certain, but I dont think there is any expectation that you need to know ALL the java API, after all to find out how things work there is always javadoc anywat :-)
The other thing that helped me was going through lots of books. TAFE and UNI will probably only cover java, but in the real world you will most likely be using a lot of frameworks.
While studying at TAFE, I didnt even know that frameworks existed. But here at work, we use quite a few. For example we use Hibernate, Spring, JSF, JQuery among others. It can be a bit daunting when learning the language and also trying to come to grips with the extra frameworks, but in the end it will all fall into place. remember practice, practice and practice.
Even now I get my hands on as many books as I can and run through the tutorials.
Good luck with the study and the job hunting. I belive in canberra at least, that there are plenty of job opportunities for java programmers.
I've never worked professionally as a Java programmer, but I have worked professionally with SQL and PHP. I have my doubts as to whether a university education is worth anything at all in the real world.
The CS classes I have taken, and the classes people I've known have taken (all undergrad, I should point out), didn't teach anything useful or important. The students who succeeded in those classes were the ones who already knew something about programming. The ones who didn't were like the ones who come to these forums asking questions they shouldn't have to ask, because their teachers didn't teach them.
On the other side, my real-world experience taught me things I don't think they teach in any university. The job I had didn't challenge me at all as a programmer. The challenges I faced, and the things I learned, all had to do with project management. Lessons like, never accept a contract without a detailed design document and a sample of the data you'll be working with. (My boss should have known this.) Or another good one: you are not superman. When your boss or your client asks if you can add a feature and still make deadline, the correct answer is "probably not." Like I said, I'm pretty sure that no school will prepare you with these kinds of lessons.
Or for that matter, even things like "how the hell do I use CVS/Subversion?" Academics don't have time for such things. You need to learn them on your own, or on the job.
@OP basically the purpose of the college education is not to teach you necessarily be expert at one language but rather expose you to the underlying foundation of what programming is; what algorithms are and which ones are best utilized in what situations; how to build algorithms from scratch in a language that doesn't have that functionality etc.
In a nut shell the education teaches you theory and not necessarily full fledged implementation as it exists in the working world. You shouldn't really worry about that too much as most of the working world has already been where you are. They are of aware of what you know (at least most of them) and will only judge you based on that. They expect you to take time in the beginning to learn the implementation that they have.
Having said in working world whats important is what your client wants. If you know everything in the world but your client wants to use D, than you better know or start learning it :) and your education will help you quickly master the new concept.
JSP, JSF, Servlets, Struts, Spring, Hibernate, XML, SVN are some technologies that i regularly use at work and I didn't learn any of these in school.