How to become a self taught Java or Big Data Engineer everyone wants to hire?

“You will never become a sought-after developer by just watching others code”

Q. Are you a beginner to intermediate feeling stagnated and wanting to make a good headway?
A. If the answer is yes, read on. You can’t become a programmer everyone wants to hire with a 3 month paid classroom or a video course. It will only set you back on your wallet. Becoming a self-taught Java developer not only takes time, but also requires some creative thinking, courage to do things differently, and motivation to keep at it. Formal education like computer science degree is very valuable and will be well recognised, but there are a group of people like me who want to make a career transition from other degrees like mechanical engineering, science degree, etc.

Software programming is a mindset about solving problems and adding value. Only experience can accomplish this. You gain experience by “reading lots of code, writing lots of code, and helping others “.
I an experienced programmer who can add value

I am an experienced programmer who can add value

Pseudo-code to learn & get a job faster

After say 100+ iterations, you will feel more confident, and start to hate the code that you wrote in the earlier iterations. This is the clear indicator that you have become more experienced, and have the right mindset to keep at it.

Nothing beats hands-on experience.

If you spend 1 hour reading or learning from a book, blog, YouTube video, etc, you need to spend 4 to 5 hours trying it out yourself by coding.

For example, If you spend 6 hours on reading & watching YouTube Videos about driving a car & if I spend just 1 hour reading & 5 hours actually driving a car, who will be the better driver?

Experiment with things. What if I remove the static modifier? What if I remove the synchronized keyword?, How can I debug this? How can I introduce a thread-safety issue? How can I improve on the code by applying the best practices?, How can I force a memory leak here? etc.

How to become a self-taught programmer?

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

Fundamentals (e.g. data types, flow control, data structures, multi-threading, file I/O, etc)
Key Paradigms (e.g. Object Oriented Programming, Functional Programming, Aspect Oriented Programming, etc)
Tools (IDEs like Eclipse, Dos/Unix commands, build tools like Maven, code repositories like GitHub, etc)
Frameworks (e.g. Spring, Hibernate, etc) and libraries (Apache libraries, Google Gauva libraries, etc).

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

— and then 1500+ hours to extend this hands-on experience into enterprise concepts, 16+ technical key areas & sought-after frameworks.

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 described in the above pseudo code.

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. Join good Java forums like “” and groups relating to Java.

  • 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?

— Learn the concepts by investing in good books/sites. Mix your learning with reading lots of code, writing lots of code, and watching videos.

Reading a concept once and trying them out is more effective & motivating than just reading them 3 to 4 times. After you have tried the code, go back and read again for better clarity.

— When there are myriad of free online materials to learn from, there are no excuses other than your lack of motivation. It may take sometime to weed out bad resources, and stick to the ones that work for you. If you don’t have a computer science degree, you may need self-taught projects on GitHubwork (i.e. ) to be examined and validated by your potential employers. This advice is of paramount importance even if you already have a computer science degree.

— Learn on the job by proactively looking at others’ code. You can look at others’ work on GitHub. Also by volunteering to contribute to open-source Java projects.

— Learn by asking the right questions relating to the 16 technical key areas, once you have 12 months of hands-on Java experience.

— Learn to share your experience by blogging and helping others via forums and discussion groups. Join and 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 code you write, the more discomforted you become .

You learnwhen you are in your discomfort zone. When you’re struggling, that’s when you’re getting smarter.

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?

— You will start to hate the code that you wrote 6 months ago, and find ways to improve them.

— Project after project and day after day you will feel more and more like a “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. This means building an application that can satisfy business requirements in a timely fashion.

— You will start to train yourself on the 16 technical key areas like best practices, memory considerations, performance considerations, transaction management, security, etc.

— You will get motivated to work on your own pet or hobby coding projects like an 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.

— 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 year 2000, the answer is yes. That is when I transitioned my career from being a mechanical engineer to a Java developer with just 12 months of self-study. It was a .com boom time and there were more jobs than qualified Java developers. 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 experiencee in your chosen mainstream programming language (e.g. Java, C#, PHP, etc) gained via self-taught projects, volunteer work and open-source contributions. You can provide links to your GitHub project repository for the prospective employers browse.

#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.

Gaining commercial experience

As you start to gain experience & confidence via self-taught hands-on tutorials,

— Expand your tutorials into more industry level self-taught hands-on projects like an online chess game, library books management system, etc and check in your code into GitHub code repository, and share the link to your work on your resume and social profiles. This will not only help you gain experience, but also makes you standout from your competition when you start looking for paid jobs.

— Volunteer to build a simple website for a charity or a community organization for a nominal rate or with an agreement to provide the link to the site you built on your professional profiles and resume. For example, building an online tennis court reservation system for the tennis club you are part of. Alternatively, building an online shopping cart system for the martial arts club you are a member of to sell subscriptions, uniforms, protective gears, etc.

You need to put the creative cap on and take the path less traveled. Don’t get too obsessed with certification. If something is not working for you, try different things. You can’t expect different results doing the same thing. Why not take the road less traveled?

Promote your value adds in solving real problems via GitHub links, blog posts, social media, professional media, resume, Stack overflow reputations, etc. Don’t forget that the future of recruitment process will scrutinize your online value adds to get hired.

“Logic will get you from A to B. Imagination will take you everywhere.” — Albert Einstein

Roadmap to becoming a self-taught Java developer

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

How to get an entry level Java job?

300+ Java Developer Interview Q&As

800+ Java Interview Q&As