Q. Are you a beginner wanting to learn Java or an intermediate wanting to make a good headway?
A. If the answer is yes, read on. You can’t learn much or become a programmer everyone wants to hire with a 5 to 10 day or even a 3 month paid course. It will only set you back on your wallet. Good things not only take time, but also require 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 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. Software programming is a mindset about solving problems and adding values. Only experience can accomplish this.
Nothing beats hands-on experience.
The key principle is that: 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. 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 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.
— 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, technical key areas & sought-after frameworks.
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/paid blog posts, online tutorials, and articles. When investing on resources to learn, make sure you review the sample chapters to see if you like the style.
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. Follow good blogs that add value to you. Build a good rapport with the authors via the social media. Good mentors can make a big difference in motivating and guiding 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.
- I have briefed about a sample plan, but use it only as a guide to devise your own –– How to get an entry level Java job?
- 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?
— Learning by investing in good books/sites. E.g. “Codecademy: Learn to code”. Mix your learning with reading, writing code, and watching YouTube videos.
— 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. If you don’t have a computer science degree, you may need GitHub work (i.e. self-taught projects) to be examined and validated by the potential employers.
— Learn on the job by proactively looking at others’ code. Learn to use new tools, frameworks, and libraries.
— Learn by asking the right questions relating to 16 key areas and fundamentals.
— 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?
— 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 13+ 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 2000, the answer is yes. That is when I transitioned my career from 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. 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 experiencee 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.
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 Git 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? So, start thinking more in terms of
1) Gaining much needed hands-on experience
2) Adding value to something you are member of or passionate about. The beauty of programming is that it can not only automate many manual tasks, but also can promote things you are passionate about. If you are a movie buff, develop something that will help both your quest for cine news and programming.
3) Promote your value adds in solving real problems via programming through your blog, social media, professional media, resume, etc. Don’t forget that the future of recruitment process will scrutinize your online value adds to get hired. Stack overflow reputations, Java ranch thumbs ups, number of Java lobby article views & shares, nature & quality of the project(s) in GitHub, etc will add up.
So, use your ability to write quality & robust software programs to add value and solve real problems, and become a programmer everyone wants to hire by sharing your skills, experience, and accomplishments with the help of proper online presence.
“Logic will get you from A to B. Imagination will take you everywhere.” — Albert Einstein
Top 5 Member Last 30 days
- ♦ Q11-Q23: Top 50+ Core on Java OOP Interview Questions & Answers 2,169 views
- ♦ 11 Spring boot interview questions & answers 1,958 views
- 03: ♦ 5 Java multithreading scenarios interview questions answered 1,658 views
- 18 Java scenarios based interview Questions and Answers 1,017 views
- 01: ♦ 15 Ice breaker questions asked 90% of the time in Java interviews 745 views
Latest posts by Arulkumaran Kumaraswamipillai (see all)
- Part 6: Intermediate What is wrong with this Java code? - March 20, 2017
- Q16-Q24 written test questions and answers on core Java - March 4, 2017
- 12: Q92 – Q97 Hadoop file formats and how to choose - March 3, 2017
- 18: Q104 – Q108 Scala typeclass pattern for decoupling with polymorphism - March 2, 2017
- 17: Q99 – Q103 Scala applicatives & scalaz interview Q&As - February 25, 2017