Advice for New Software Developers
This article contains advice for beginning Java software developers. In addition to this guidance, one overriding piece of advice is to compare any advice that you get with your own intuition. Collect opinions. Talk to people about the issues. Try things and, if they work (or even if they don't work but they show some promise), keep doing them. If they show no promise, try other things. And sharing is important. Don't forget to share.
How long does it take to learn Java?
The answer depends on you — on your goals, on your existing knowledge, on your capacity to think logically, on the amount of spare time you have, and on your interest in the subject.
The more excited you are about computer programming, the quicker you'll learn. The more ambitious your goals, the longer it takes to achieve them.
But remember that there's no such thing as "knowing all about Java." No matter how much you know, there's always more to learn.
Which computer programming language(s) should I learn?
The answer depends on your goals and (if you plan to work as a developer) on the job opportunities where you live. The TIOBE Programming Community Index provides monthly ratings for popular programming languages. But the TIOBE Index might not apply specifically to your situation. In January 2014, the Haskell language ranks only 43rd among the languages used around the world. But maybe there's a hotbed of Haskell programming in the town where you live.
What other skills (besides computer coding) should I learn?
Make sure you learn about databases. Database work isn't necessarily coding, but it's important stuff. Also, read as much as you can about Software Engineering. (Software Engineering is the study of techniques for the effective design and maintenance of computer code.) Don't be afraid of math (because learning math stretches your logical-thinking muscles). And, whenever you can, hone your communication skills. The better you communicate the more valuable your work is to other people.
How should I continue my learning as a software developer?
Practice, practice, practice. Take the examples you find and think of ways you'd like to change the code. Add an option here or a button there.
Find out what happens when you try to improve the code. If it works, think of another way to make a change. If it doesn't work, search the documentation for a solution to your problem. If the documentation doesn't help (and often, documentation doesn't help) search the web for answers to your problem. Post questions at an online forum. If you don't find an answer, put the problem aside for a while and let it incubate in your mind.
Remember, you don't learn programming by only reading about it. You have to scrape some knuckles writing code and seeking solutions. Only after trying, failing, and trying again can you appreciate the work involved in developing computer software.
How else should I continue my learning as a developer?
Find like-minded people where you live and get together with them on a regular basis. These days, there are tech user groups in almost every corner of the globe. Find a Java user group that meets in your area and attend the group's meetings frequently. If you're a novice, you might not understand much of the discussion at the meetings, but you'll be exposed to the issues that concern today's Java developers.
Look for more tech groups and attend their meetings. Find meetings about other programming languages, other technologies, and other things that aren't solely about technology. Meet people face-to-face and find out what topics will be in next year's books.
How can I get a job developing software?
Do all the things you'd normally do when you look for a job, but don't forget about the advice in the previous two paragraphs. User groups are great places for networking.
Go to meetings and be a good listener. Don't think about selling yourself. Be patient and enjoy the ride. You might land a great consulting opportunity only after several years’ patience while attending a group's meetings. In the meantime, learn a lot about software (and dealing with other people).
I still don't know what to do with my life...
That's not a question. But it's okay anyway.
Everyone has to make ends meet. If you manage to put food on your table, the next step is to find out what you love to do. Find the best match between the things you like to do and the things that help you earn a living. Compromise if you must, but be honest with yourself about the things that make you happy. (Of course, these things shouldn't make other people unhappy.)
Finally, be specific about your likes and dislikes. For example, saying "I'd like to be rich" isn't specific at all. Saying "I'd like to create a great game" is more specific, but you can do better. Saying "I’d like to design game software, with a partner who can do the marketing for me" is quite specific, and makes a very tidy set of goals.