views:

1938

answers:

14

What skills should a junior Java developer have? I'm also interested in iPhone (Objective-C) development.

What technologies/languages should I know to get a position as a Java developer or an iPhone/Obj-C developer?

J2SE preferable...

What would be better - study only Java/Objective-C or try to work with two?

+6  A: 

All a junior developer needs is a passion for programming and practice, practice, practice! Keep coding. If you have the aptitude it will show, and you'll have no problem landing jobs. Be willing to work cheap for your first job and after the first year you'll be able to make substantially more money.

Terry Donaghe
A: 

Can't you just look at job postings in your area? Fine tune your skills based on what employers are looking for. Skills will vary from job to job and what's all the rage here might not be as popular around your area.

ryeguy
+7  A: 

A Java developer must know Java. An Objective-C developer must know Objective-C. Both should probably know English as most programming docs and question sites are in the language. Am I missing something else in the question?

ceejayoz
Actually a Java developer must know Objective C, and a Objective-C Developer must know Java :)
Henrik P. Hessel
And some software engineering skills, of course! ;)
nutario
There are degrees of knowing a language. I'm guessing very few people actually "Know" everything there is to know about either of those languages. Few people who would claim to know Java have written classloaders (a common requirement in some industries/jobs). Hell, few people that claim to know java understand what the reference (weak, phantom, ...) classes do! That's not even getting into ACTUALLY understanding OO (a fairly rare occurrence among very experienced programmers from non-OO languages. It's a valid question and I don't see how your answer is useful.
Bill K
i've written classloaders :-Phave not studied reference :-(and know some about OO - encapsulation, inheritance and polymorphism, design patterns and antipatterns, refactoring.
Olexandr
+1  A: 

For java, start reading: http://java.sun.com/docs/books/tutorial/java/index.html

For iphone, you answered your question. Objective C is what you need to learn.

Troggy
+2  A: 

If you are looking for a job with Java, you should also know some basic SQL. It is not required for all jobs, but it is something pretty important. Something that is required and decent communication skills (writing and speaking).

If you are looking for some specific technologies, some of the better things to know would be hibernate, familiarity with a web container like Tomcat, and Struts. These are not used at all places, but if companies do use these technologies, then familiarity with them helps

bogertron
+1  A: 

Learn how to write clean,structural, maintainable code. Learn to learn and improve herself/himself day by day. Also he/she should know that there are so much to learn. And keep in mind

“You don’t have to be great to get started, but you have to get started to be great.”

Les Brown

mcaaltuntas
A: 

For Java it may be worth to get certified starting with the SCJP this will enhance your understanding of core java and it also implies a level of understanding of the language and concepts.

+2  A: 

I would suggest buying 'Effective Java' by Joshua Bloch - it's a must read especially for junior devs. It will keep you from going stray early on and writing code that will just get picked apart in code reviews

PSU_Kardi
A: 

You must understand design patterns and should probably understand what a pointer is. Everything beyond that is simply syntax. If you don't get how the code is organized or how it works, you don't get anything.

Dave DeLong
+4  A: 

I can give an answer for Java at least:

I would want you to know all the terminology and concepts.

People ALWAYS ask what's the difference between implements and extends. You should understand exactly what's going on with that.

A related question is, how would you emulate multiple inheritance in Java.

You should know what each package in the JDK is for. You don't have to know EVERY class, but knowing what the packages are for will help you find what you need.

Know how to use the javadocs WELL. Always have them open in a browser window while you are working.

Know what reflection does. Be able to at least write a reflective instantiation of a class.

Know all the collections and be able to answer "Would use use a linked list or an array list or a hash map for an insertion sort? How about for an indexed list?"

At the least, get the design patterns and refactoring books and actually read them.

Edit: Oh, as long as we're at it, a tip for a beginning programmer--Don't Repeat Yourself

learn to code DRY! Specifically don't repeat logic. I think that the ability to make your code DRY is the biggest differentator between programmers, and you get better at it your entire career, I've never met anyone "Perfect" at it.

Striving to NEVER copy and paste, and reduce your code wherever you see duplication or patterns of any sort also forces you to learn and understand important techniques.

If I were hiring and had someone submit code, DRY would be the most important factor--possibly more important than if the code worked (I can fix DRY code with bugs or if the developer couldn't figure out how to implement one piece of it but crappy redundant code I'll just throw out and re-write, possibly even if it works!)

Bill K
+1  A: 

If you want to code in Java and for smart phones, you might want to look into Android. I know Android phones aren't nearly as popular as iPhone, but with new handsets coming out every month I'm hoping that will change in the next year.

As far as what junior Java developers should know, I think the SCJP exam covers all the bases. I'm not necessarily saying you have to take the exam, but see if you can find the book at the library, or some online resources, just to familiarize yourself with what's on the exam. Sun's Java Tutorials are another resource that will give you a really good overview of what a Java developer needs to know.

Bill the Lizard
have you developed for Android ? I've read about this platform a little time ago. And they said that it has big compatibility problems with different models - that's why i picked up iPhone - it has not those problems....
Olexandr
I'm learning to develop for Android now. It is free and open to any handset manufacturer, and there are many different models available, so yes, some hardware doesn't support all features of the platform.
Bill the Lizard
+1  A: 

I think at your level learning to program is like learning Spanish. Do a little reading, do a lot of practice, repeat. I think of the advice "do what you love and the money will follow", so start doing projects now that interest you. That will build you skillset in that area, which will then land you a job doing what you like to do.

SQL is very important too - we don't hire anyone without it.

After project 3, pick up the book "Head First Object-Oriented Analysis and Design" or an Object-Oriented book specific to Java.

This from a C# dotnet developer :)

JBrooks
A: 

Understand that after years and years of programming you're still ignorant. I didn't completely understand how maps worked and I entered a situation where a hash collision was being fatal to me - I was using the hash value of an object as the key of a map and not the object itself, so I killed the equality check that is made in a hashmap when a collision occurs.

Always keep learning. Other than that I would say learn the collection library, understand generics, understand garbage collection, and know some general programming so you write your programs in a way that it's easy to read.

Ravi Wallau
A: 

Bill K say "learn to code DRY! Specifically don't repeat logic. I think that the ability to make your code DRY is the biggest differentator between programmers, and you get better at it your entire career, I've never met anyone "Perfect" at it."

What I may say about “Perfect”: 1. Is “Perfect” possible? 2. It may be very expensive. 3. And better is enemy of good.