My Photo
Name:
Location: Dublin, Ireland, Ireland

Saturday, June 10, 2017

How long would it take to learn Java if you spend 1 hour everyday?

How long would it take to learn Java if you spend 1 hour everyday?


Retention is key to learning.
I'd like to add to the already perfect answers for this question. Just learning one hour a day (no matter how many days in a row) is bad for the retention of what's learned, and will harm your learning ability.
Learn Longer, In Smaller Intervals (But Not Too Small)
Do you have the option to learn 2 or 3 hours a day, perhaps in smaller intervals?
Let's say you would practice piano playing for 30 minutes each day. Every day, you do the following:
  1. First, you walk over to the piano and sit down, place your lessons booklet somewhere you can see it.
  2. You look up in the booklet where you were yesterday.
  3. Eager to learn and strained by too little time, you attempt to start a new song.
  4. The song uses a techique from an earlier lesson, but you forgot which lesson it is.
  5. You look up the lesson, practice the technique and then jump forward to the song you attempted to play.
  6. But... your time's up!
My teachers told me: always practice at least an hour every day.
There's a certain overhead, especially with logical-skill based learning like maths, playing piano and also programming. There's a certain atomicity to it: the minimum amount of time you need to spend learning, in order to pick up the core of the skill.
Actual Time Spent Learning: One Third?
When you learn programming for one hour, the actual time you spend writing code can be as little as 20 minutes. Aside from programming you do a lot of other things: reading, looking up references, staring at the screen, trying to put together Google search queries, and of course checking Facebook or WhatsApp and other interruptions. When learning, your mind needs to "warm up" (just like working out) and cool down, processing the new information. Switching tasks and context takes up attention, and especially for programming it takes time and effort to "zone out".
Just like many on this page mentioned: learning is about "flight time", the time you spend on the core of the learning: writing code. Learning programming involves a lot of remembering syntax and getting to know the intricacies of certain SDKs.
Taking too little time to start with the learning activity, and not taking efficiency and effectiveness into account, can seriously hurt your learning ability. So, spend more time learning!
Just For Fun: Sing Your Code!
Alright, here's another trick: did you ever try singing your programming code? I mean, it sounds silly, right -- but it works. The mind gets boring when you do the same thing all the time, and it learns way less if you use one learning method. Reading all the time, only watching videos, only writing on a keyboard is not an optimal way to learn. Instead, try writing down code with pen and paper, or draw a programming concept using a fine-liner and a bigger pencil, or... sing your code!
Learning is all about tricking your mind into picking up stuff that sticks out. One way is repetition, the other is: making it all interesting and exceptional for the gray matter upstairs!
Best of luck!

Most of the estimates in here are all reasonable to me. I will guess 120 -250 hours if you are starting some knowledge of programming. Add 100 if you have no idea what programming is or Object oriented means. That will get you a strong foundation. 

Then advanced level would add the same number of hours 120 - 250 or so.

Flight time is your key. More hours doing and less reading and watching will accelerate the learning speed. So those hours should be 75% hands on coding. Following tutorials is find, but going beyond the exercises on your own initiative will give you lift. As you get more legs, look at open source repositories of Java code solutions and see if you can make sense of them and what you do or do not understand. You will need some common sense to pick and choose who's code to look at. If it is interesting and not too large would be my first pick.

I think bunching the time into 2-4 hour sessions might improve the learning speed. Skip a few days in between.  You can read anytime in even small 15 minute sessions from even a tablet waiting for a dentist appointment or on a bus. But at the computer make the sessions longer.

Have a lesson guide, book, tutorial, course to keep you on track.

Now the bad news. You will know a lot about the language after that. Now you have a several hundred to a few thousand hours working on real projects even if you invent them for yourself to really learn to program an OO language. Then it is an ongoing learning as they keep changing and morphing.

Java is a great language and it is at the heart of Android apps from what I understand so that could be a great motivation. If I was going back to relearn it, been away for a decade, I would get set up to learn dovetailed with learning Android at the same time. But that is me. On a second motivation, the JSP implementation for server side application supporting web pages might also be a motivator for some folks just starting out.
Renowned speaker Earl Nightingale once said, 1 hour of study in a chosen field is all it takes. If every day you spend 1 hr studying the topic and you do this every single day, in 3 years you'll be on the top of your field. Within 5 years you'll be a national authority and in 7 years you can be one of the best people in the world at what you do. The key here is discipline. I'd recommend you spend 4 hours a day. 2 hours in the morning and 2 hrs in the evening. You will learn all that's needed to be a successful Java developer. You need the right resources so you can practice practical HW problems and you have to focus on learning OOP. You can't learn Java without thoroughly understanding OOP. I'd recommend the following site as the best resource for learning OOP, Java and Data Structures & Algorithms.
If you spend 1 hour every day, reading tutorials for half an hour and programming (practicing) for the other half, assuming you have no programming knowledge at all (no background in software engineering/computer science) would probably take you 3 months to be able to code something decent, that would run without errors and achieve simple tasks. However, this doesn't mean you would be able to make GOOD programs/software. It requires much deeper knowledge and understanding to be able to program larger scale programs that are reliable and you need much more than basic understanding of Java to be able to use proper structures and algorithm to make your programs valuable. That being said, starting with an hour a day might make you want to spend more time into it. I would say that picking up a good book on Java programming for beginners (Absolute Java maybe?) and a good book on Data Structures and Algorithm would be a good investment.

I wouldn't expect someone programming an hour a day to be good after 6 months or a year, either. There is so much concepts to grasp to really make good decisions when programming.

If your goal is just to know more about programming and to be able to make some personal use programs with Java, I think 3 to 4 months would be a decent start.
1. You don't have any prior experience programming: In this case, I recommend you to start from scratch, learning Java as your first programming language. I'd recommend you to read Head First Java, it covers all the concepts of programming in Java in a more understanding and easy to remember way. It might take
you up to 4-5 months to master the basics, if you invest at least 3hrs a day in learning and practising the code. Then again, it's based on how well you can get the grasp of the code and how quickly you can learn it.

2. Satisified above condition or you have coded in other languages before but not Java or any other Object Oriented Programming Language : In this case, you might have to learn the principles of OOP first in order to learn Java. I'd recommend Introduction to Java by Daniel Liang. Since you have coded before, i might put a timeline of around 4-5 months again, if you practiced for 3-4 hrs a day.

3. You have fulfilled the above two criteria, then the world is full of Java API libraries to master, all you need is to go through some most frequently used Java classes like collections, sql, threading, on online Java API Documentations, and you should be set for life... :) Other Java API's can be referenced whenever you require.
To Learn Java Standard Edition/Core Java 30 to 45 days are required, if you want Learn all Editions of Java (Core Java, Advanced Java and Java Micro Edition)then it takes 4 to 5 months of time
2. Parts of Java / Java Editions
3. Where Java is used?
4. How Java is used?
1. What is Java?
Java is a Programming Language and a Platform
Java is used as a programming to develop Software Applications
Java is used as Software Platform to run Java Applications
2. Java Editions / Parts of Java
Java has 3 important editions
i. Java Standard Edition / Core Java (* Old name J2SE)
ii. Java Enterprise Edition / Advanced Java (*Old name J2EE)
iii. Java Micro Edition (* Old name J2ME)
3. Where Java is used?
Java is used to create,
Desktop Applications
Web Applications
Enterprise Applications
Mobile Applications
Smart Cards
Embedded Systems
Games Etc...
4. How Java is Used?
Java is an Open Source Software and Platform independent,
For Software Development download and install JDK (includes JRE and JVM) Software,
For Run-time (to run Software Applications that developed in Java) download and install JRE (includes JVM)
We can run Java byte code on any supported platform.

If you ask how much time is required to learn Java covering all concepts, I would say years.

 Java is an ocean. Learning time depends on what you want to learn in Java. If you have some programming background, learning Java is easy, but it takes time to master it. My suggestion for you is  go ahead and start reading the following books:

1) Head First Java (For basics)
2) Thinking in Java by Bruce Eckel (Intermediate level)
3) Effective Java (Advanced)

Remember, the order in which you read these books is very important.

0 Comments:

Post a Comment

<< Home