7 Tips and a road map to become a self-taught Java developer

If you are new to Java, then best way to gain some hands-on experience is via tutorials and self-taught projects.

Tip #1: Java is very accessible and all the following are available for free. The steps you take may slightly vary depending on your familiarity with Java and its tools.

  1. A computer — desk top or laptop.
  2. Download latest version of Java (JDK and JRE).
  3. Download latest version of Eclipse IDE.
  4. Dowload Tomcat or JBoss to deploy your applications.
  5. Download and install HSQLDB or MySQL database. All non trivial applications need information to be persisted to a database. Favor MySQL for your self-taught projects.
  6. Set up Maven as a build and dependency management tool so that you can download sought after frameworks like Spring and Hibernate.
  7. Get a free GitHub account to store & share your toy & self-taught projects with your potential interviewers & employers.

Google search, good books, YouTube videos and online tutorials are your friends in setting up the above 6 items. Even with 13+ year experience in Java, researching on Google.com is integral part of getting my job done as a Java developer. As an experienced Java developer, I can research things much faster. You will improve your researching skills with time. You will know what key words to search on. If you are stuck, ask your mentor or go to popular forums like Javaranch.com to ask your fellow Java developers.

Tip #2: Start with the basics first. Enterprise Java has hundreds of frameworks and libraries and it is easy for the beginners to get confused and overwhelmed. Once you get to a certain point, you will get a better handle on getting through the jungle, but to get started, stick to the following basic steps. Feel free to make changes as you see fit.

  1. Core Java fundamentals. Write simple stand alone and multo-threaded Java programs using OOP & FP concepts.
  2. Make sure that you write unit tests for your code with JUnit and mocking frameworks like Mockito.
  3. Learn SQL and write stand alone Java programs that connect to MySQL database via JDBC.

— Aim to have 500 to 700 hours of hands-on coding capturing all the core concepts.

— and then 700 to 1000 hours to extend this hands-on experience into enterprise concepts

You can initially consider a number of different paths after getting a good handle on the Core Java

1) Core Java –> Java Enterprise Edition (i.e. JEE). This involves developing Web applications/services and systems integration, etc.

2) Core Java –> BigData using the Hadoop eco system.

3) Core Java –> Stand alone low latency Java applications.

Some of the key Enterprise Java concepts to learn to become a JEE developer are:

  1. Write simple web applications using Servlets and JSPs using enterprise Java. The application needs to persist data to the MySQL database. Deploy your application to Tomcat or JBoss server and run them as an enterprise application. Use Maven for build and dependency management. 
  2. Expand your project created with JSPs, Servlets, and JDBC to use sought after frameworks. Learn the concept of “dependency injection”. Start wiring up sought after frameworks like Spring. Spring is very vast, and start with spring core and spring jdbc. Spring core is used for dependency injection and Spring jdbc is to connect to databases and to execute SQL queries. 
  3. Learn the MVC (Model View Controller) design pattern for web development. Convert your JSPs and Servlets to Spring-mvc based web application.
  4. Write RESTFul web services using Spring MVC. 
  5. Get a working knowledge in HTML, JavaScript/jQuery/JSON, ajax, and CSS. This is imperative as more and more organizations are moving towards JavaScript based MVC frameworks like angularjs or backbone. These frameworks make RESTFul web service calls to get data in JSON format and populate the front end. It will be handy to learn node.js as well if time permits.

Tip #3: Once you have some familiarity and experience with developing enterprise applications with Java, try contributing to open source projects or if your self-taught project is non trivial, try to open-source your self-taught project. You can learn a lot by looking at others’ code.

Tip #4: Look for volunteer work to enhance your hands-on experience. Don’t over commit yourself. Allocate say 2 to 3 days to build a website for a charity or community organization.

Tip #5: Share your hands-on experience gained via tips 1-4 in your resume and through blogging (can be kept private initially). It is vital to capture your experience via blogging.  Improve your resume writing and interviewing skills via many handy posts found in this blog or elsewhere on the internet. It is essential that while you are working on the tips 1-5, keep applying for the paid jobs as well.

Tip #6: Voluntary work and other networking opportunities via Java User Groups (JUGs) and graduate trade fairs can put you in touch with the professionals in the industry and open more doors for you. The tips 1-5 will also differentiate you from the other entry level developers.

Tip #7: Learn the fundamentals every day. All it takes is to learn 10 to 20 Q&As each day whilst gaining much needed hands-on experience. After about 200 to 400 hours of learning the fundamentals & writing small programs focus on the much needed

1) Self-taught Java projects on GitHub and a link to it on the resume.

2) Part-time voluntary or paid a lot less work to build an application for a community or charity organization. ~300 hours. Add this experience & accomplishments to your resume.

3) Opens-source contribution to read others code and add value. You learn a lot by reading industrial strength code. ~300 hours. Add this experience & contributions to your resume.

Now, no one can tell you that you don’t have hands-on experience. You confidence level also will be high.

Many good developers are self-taught:

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

When there are myriad of learning resources in the form of books, blogs, and videos, there is no excuse other than getting out of your comfort zone. It is hard to keep your motivation going without writing code, and nothing beats hands-on experience. Read and write code for at least 2 to 3 hours a day.