Are you a Java beginner? Why good Java developers are self-taught?

Q. Are you a beginner wanting to learn Java?
A. If the answer is yes, read on. You can't learn much with a paid 5 to 10 days or even a 3 month course. It will only set you back on your wallet.  Formal education like computer science degree is very valuable and will be well recognized. But, there are a group of people like me who want to make a career transition from other degrees like mechanical engineering, science degree in nuclear physics, etc.

Self taught usually means "interested in the art and science of creating quality code to solve business problems", and generally speaking you will be proactively learning and mastering the language fundamentals (e.g. data types, flow control, data structures, multi-threading, file I/O, etc), key concepts (e.g. Object Oriented Programming, Functional Programming, Aspect Oriented Programming, etc), tools (IDE, Dos/Unix commands, build tools, code repositories like SVN/Github, etc), frameworks (e.g. Spring, Hibernate, etc) and libraries (Apache libraries, Google Gauva libraries, etc) of the programming trade.

As a programmer

Invest in good books that will teach you the Core Java and Enterprise Java fundamentals, and increase your researching and hands-on development skills via myriad of free blog posts, online tutorials, and online articles. When investing on books, make sure you review the sample chapters to see if you like the style and check reader ratings @amazon.com to see  what others say. Join a good Java forum like javaranch.com to seek help when you are stuck from the fellow Java professionals. It is even better if you have mentors who are your friends or former colleagues to guide you.


Q. Are there any limitations to becoming a self-taught programmer?
A. Yes, there are 2 key limitations

1. Lack of interest. Learning to program on your own is hard and then to be able to be knowledgeable enough to be good in technical interviews is even harder. Hope this blog will alleviate this problem to some extent. If you don't have the interest, you will not be disciplined to make the effort. You need to motivate yourself to get into a learning cycle of

learn a fundamental -->  apply that learning via hands-on coding --> blog your experience via blogging (i.e. your journal and sharing your experience)

2. Getting too overwhelmed by the number of technologies and frameworks. Not knowing where to start and what path to take. If you look at Java, there are so many frameworks. So, you need to have good mentors to guide you through this jungle.

  • Java forums where fellow developers can give you advise and guidance, but you need to show interest and take initiative. You can't expect them to do the home work for you, but can post some code, and ask them why it was not compiling, etc. You can also seek career guidance.


Q. 5 tips to become a self-taught programmer?
A.

  1. Learning by investing in good books
  2. Learn online via good blogs, tutorial sites, and open-source contribution (i.e. by looking at others' code in Git hub). When there are myriad of free online materials to learn from, there are no excuses other than your lack of motivation and getting lost in the information jungle. If you don't have a computer science degree, you may need Git hub work (i.e. self-taught projects) to be examined and validated by the potential employers.
  3. Learn on the job by proactively looking at others' code. Learn to use new tools, frameworks, and libraries.
  4. Learn by asking the right questions relating to 16 key areas and fundamentals.
  5. Learn to share your experience by blogging and helping others via forums and discussion groups. Join linkedin.com and quora.com discussion groups relevant to your programming language. Don't under estimate the power of learning through helping others.  


In all the 5 steps listed above, you must be writing hands-on code. You can't become a programmer without writing code. The more you code, the more motivated you become. The more mistakes you make, the more questions you need to ask to gain experience. Once you start asking the right questions, you will shape up as a programmer by putting things together like a jigsaw  puzzle, and often researching online and drawing on your own experience for solutions.


Q. As a self-taught programmer, how do you know that you are becoming more experienced?
A.

  1.  You will start to hate code you wrote 6 months ago, and find ways to improve them.
  2.  Project after project, day after day you will feel more and more "professional" and start to ask the right questions and have opinions about things without blindly accepting what others say or write. You will enjoy the feeling of accomplishing real life tasks.   A "professional" means you are capable of performing work that people would pay you to do.  A "professional" means you are capable of performing work that people would pay you to do. This means building an application that can satisfy business requirements in a timely fashion.
  3. You will stat to train yourself on the 16 key areas like best practices, memory considerations, performance considerations, transaction management, security, etc.
  4. You will get motivated to work on your own pet or hobby coding projects like a online app, mobile app, development tool/framework, games, etc. Share these projects with other programmers via Git hub. Flaunt your skills and passion by encouraging your prospective employers to review your work on Git hub. 
  5. You will stat to expand your horizons as a developer like becoming a freelancer, starting your own small business, making yourself more visible via your online presence, etc. 




Q. Can you get a job as a self-taught programmer?
A. If you asked me this question in 2000, the answer is yes. That is when I transitioned my career from a mechanical engineer to a Java developer with just 12 month self-study. It was a .com boom time and there were more jobs than qualified Java developers. But, now a days things are different as 100+ job applications are filtered through and you need to do more to standout from your competition.

#1: Degree. Computer Science is preferable, but at least some recognized degree. Degree means you have proven that you can be trained and learn things.

#2: Hands-on experience in your chosen mainstream programming language (e.g. Java, C#, PHP, etc) gained via self-taught projects, volunteer work and opensource contributions. You can provide links to your Git hub project repository.

#3: Good job hunting skills to try different avenues (e.g. online advertisements, networking, cold calling, etc) and effectively promoting yourself via eye-catching resume and good interviewing skills. Both your technical and soft skills will be under scrutiny. Use the 16 key areas to sell yourself as someone who can solve business problems with the "can do" attitude.

#4: Trying smaller software companies, community and charity organizations before trying larger organizations as experience matters a lot. The culture in smaller companies are more informal, and degrees and experience are highly appreciated but not necessarily mandatory. At smaller companies, the fact you are motivated enough to learn may get you a foot in the door. Be prepared to be flexible.