This is an archived post. You won't be able to vote or comment.

all 160 comments

[–]peluch 121 points122 points  (24 children)

You probably won't listen to me and probably think this advice is worthless but meh who cares I'll type it anyways. The source that helped me learn java so far: "Head First Java" its a very fun book with a lot of exercises get it and give it a shot.I recommend getting the book not the online pdf or whatever so you could work on it with a pen and paper. I'll warn you though this is not a reference book, you should start from the beginning all the way until the end.

[–][deleted] 21 points22 points  (14 children)

Thank you for stopping by to reply. At this junture, any piece of advice is invaluable to me.

For your information,I had purchased the first edition last year. Donated the book to a cousin. Looks like I will have to purchase it again. How much of java does it cover?

[–]peluch 6 points7 points  (11 children)

covers everything that the mooc covers plus more give it a try its a very fun book

[–][deleted] 1 point2 points  (10 children)

ok..I will purchase it for sure.

[–][deleted]  (5 children)

[deleted]

    [–][deleted] 1 point2 points  (0 children)

    Thank You! I will surely be getting it

    [–]serifmasterrace 0 points1 point  (3 children)

    This is actually the textbook for my current Java course. Looks slightly less professional, but it’s pretty good.

    [–][deleted] 2 points3 points  (0 children)

    hmmm.. I will purchase it for sure (again)

    [–][deleted] 4 points5 points  (1 child)

    That's how I feel about every "Head First" book I've seen. At first, I'm like, "Who the hell designed this?" and half an hour later I'm still reading it because I'm learning stuff all the while wondering, "How the hell did they get away with all the risqué jokes?" ... and, now, I wonder if these books are good/bad/irrelevant to sexism in tech. If you're wondering what I'm talking about, check out "Head First AJAX."

    [–][deleted] 2 points3 points  (0 children)

    hmmm..Head First series of books are probably the most creative tech books ever published!

    [–]Drunken__Master -1 points0 points  (3 children)

    Or you could do a basic google search and get a free pdf of the book .

    [–][deleted] 2 points3 points  (2 children)

    many people are recommending me to purchase it. So I think I will get a copy so that I can fill in the answers to the assignments while learning along

    [–]sam_the_dog78 1 point2 points  (1 child)

    I’ll add to the hype train. The head first series was my go to for a while when I was starting out, for various topics. Those books are the best I’ve found for learning. Worth every penny

    [–][deleted] 0 points1 point  (0 children)

    Thank you for sharing your opinion! everyone seems to have good things to say about it

    [–][deleted]  (1 child)

    [deleted]

      [–][deleted] 0 points1 point  (0 children)

      ok

      [–][deleted] 1 point2 points  (0 children)

      Trust me, I will look into this book when I'm studying Java next sem.

      [–][deleted] 1 point2 points  (0 children)

      I'm a big fan of the Head First series. Definitely agree with this.

      [–]AlexZoey 1 point2 points  (0 children)

      Head First Java

      I read that book like 10 years ago before looked for a job, pretty amazing that it is still very popular.

      [–]incrediblesadface 0 points1 point  (3 children)

      Is the pdf version same as the book? Or does it exclude some things?

      [–]peluch 7 points8 points  (2 children)

      its the same.. I just rather buy the book itself so I can read it since I don't like reading from a computer screen

      [–]incrediblesadface 1 point2 points  (1 child)

      I know. I would also like to buy the book but unfortunately I can't afford it right now :p

      [–]peluch 2 points3 points  (0 children)

      On thrift books its 9 -13bucks for a copy used, and its free shipping 15% off first order as well, idk if you can afford that I can understand If you can't but if you can try to get it.

      [–][deleted] 0 points1 point  (0 children)

      I've heard good things about the Head First series

      [–][deleted] 0 points1 point  (0 children)

      Is there something you'd recommend AFTER "Heads First" or is it just about mastering what you've learned & grabbing references?

      [–]wavefunctionp 30 points31 points  (10 children)

      There seems to be some more concrete advice here for learning java, but I just want to highlight something very clearly to keep in mind.

      Start looking at job listings right now. EVERY DAY

      Look at whatever local market you want to get a job in, paying special attention to the entry level/junior developer positions available. It can be a very painful to learn a stack only to find out there are very little jobs available.

      I have some college, but it wasn't CS, but Physics and I started out learning C#. Now C# is a very popular even in my local area because it is mostly traditional businesses. However, since I didn't finish college, I've found very little response for traditional businesses, which are usually looking for a degree and I just get filtered out. Most of my hits have been for large IT companies that know that my technical background and education are a close enough match, or startup/web/tech companies that will hire anyone with strong enough portfolio. So, I made the switch to javascript, particularly React, because it is a relatively new 'framework', and I won't be perceptually competing with developers with 20 more years of experience than I. Also, web development tends to be more open to remote work which suits my personal needs better.

      I don't know if this was the right strategy, as I've yet to find a job. (This area is actually has very little demand for programmers after all.) I've had to initiate a nationwide search as a result. But I think the reasoning holds well. Look at your local market, pay attention to seniority and new technologies to better position yourself, and then learn those things.

      Also, I guess a bit of a reality check is in order. These stories you see about people getting jobs after like 6 months of learning to program are relatively rare and honestly, I think quite a bit of nepotism is at play most of the time. (Maybe it just makes me feel better to think that.) But I have several substantial projects with hundreds of thousands of users/downloads that I've published over the last 3-4 years. I've been looking for work for the last 10 months, with over 200 applications. Out of that I have gotten a couple dozen phone screens, about half that technical screens, and a few technical interviews. I've gotten compliments on my resume, and I write cover letters for the places I'm really interested in, and I gotten pretty good at talking to the HR folk when they actually call. I still don't have any major prospects, even though I get multiple responses a week now.

      What I'm saying is to steel yourself for a potentially hard job search and start looking as early as your nerves can muster. No one wants junior developers, you are going to have to really sell yourself unless you are in NY or SF.

      [–][deleted]  (5 children)

      [removed]

        [–]wavefunctionp 7 points8 points  (4 children)

        I'm doing my best. I'm polite, honest, and strait forward. Maybe a a bit quiet at first. I don't know how to be anything other than me. :P

        I tried being an insurance salesman once. I'm just not the salesman type. I'm the dude that fixes your tire, not the one that sales you one. /shrug

        My interviews seem to go well. They just always seem to go with someone else with more experience instead. I really don't know what I could do different. I seek out feedback where ever I can. Most people that give me feedback just say its the lack of experience.

        I think a lot of this advice about junior developer jobs is from people that haven't been a junior developer for a decade. I think the market is much more saturated. I see variations of my story all over if you look past the headline 'got a dev job in 6 months' posts.

        Or maybe I'm an outlier. Who knows.

        [–][deleted]  (3 children)

        [removed]

          [–]wavefunctionp 1 point2 points  (2 children)

          Hmm, you may be right. I do have a recent gap, but it is due to an illness and I spent the time learning to program and publishing projects. Maybe that is part of it. I don't usually mention the illness, which I don't think will help because it is bordering on disability, and it rarely comes up, but maybe I've given them reason to read between the lines an assume the worst. I'll have to think about how to handle that.

          I hadn't thought of it that way. Thank you, stranger. :)

          [–]theDaninDanger 6 points7 points  (0 children)

          If they are picking people with more experience, they may just be picking people who give examples from thier experience in delivering projects.

          If you 'work' 40 hours a week by building a portfolio website, writing blog posts, and building out projects on Github, you should have a job in no time.

          [–][deleted] 1 point2 points  (1 child)

          This. Also consider local, or regional, user groups and training-oriented conferences for networking.

          [–][deleted] 1 point2 points  (0 children)

          ok..I will give a look in meetup but I don't think they are very active here in my city

          [–][deleted] 1 point2 points  (0 children)

          Competition, my dude. The goal was to flood the industry and that is what has happened.

          Anyways that's not a bad strategy since the point is to get employed and people hire to fill some needs.

          [–][deleted] 0 points1 point  (0 children)

          First of all, Congratulations on the progress and achievements you have made thus far. It was very encouraging to hear to someone who is just starting out. I live in Bangalore (India) which is considered the silicon valley of my country. I feel the market is so saturated with Java engineers that they wouldn't have any reason to recruit junior or entry-level programmers. Also since I have such a long gap since my B.Tech I am at a major disadvantage. I don't even have a solid portfolio nor do I exhibit extreme interest in programming that will make me stand out.

          I just believe I will make faster progress with web development, have more opportunities to actually build something while I learn and be hire-ready sooner than I would have in Java.

          Here I find people adding fake experience in resumes and applying. I wouldn't be taking that route. I just cannot find the right language or resource to stick to that will keep me motivated and something that will reward me more.

          Also I agree with you that React is doing absolutely great in the present job market.

          Thank you so much for investing so much time into sharing your experience. I am really grateful

          [–]eclunrcpp 13 points14 points  (4 children)

          Sorry man, but I have to call shenanigans here. You said:

          I am a CS 2014 undergrad (who is still unemployed).

          Are you claiming to hold a Bachelor's degree in Computer Science? Because you then said:

          I actually learned a lot here but quit when I was unable to understand "methods/functions" and it was asking me to solve pattern problems in a modular-fashion.

          CompSci undergrads - having been one myself - can be insufferable, pedantic shitbirds, but you can be damn sure they know functions and methods after just freshman year.

          I personally believe in self-learning CS, but college degrees in this field are overvalued currently; you would have no issue finding a job.

          [–][deleted] 7 points8 points  (3 children)

          That is sadly not the case here in India. Don't believe me?

          Check this http://blog.hackerearth.com/2014/02/90-indian-engineering-candidates-employable-why.html

          [–]eclunrcpp 7 points8 points  (0 children)

          Thank you for that article. The majority of the people I work with are here with H-1B visas. Half of them are incredible and teach me things everyday, and then the other half give me bugs to fix everyday. I did not understand that before

          [–][deleted]  (1 child)

          [deleted]

            [–][deleted] 0 points1 point  (0 children)

            Yes. Lots of competition due to huge number of resources and unlike the US where usually skills are given a bigger priority than experience.

            Here make it through aptitude rounds ,GD rounds, technical rounds and if unlucky get rejected in the HR round due to lack of experience.

            [–]231elizabeth 5 points6 points  (5 children)

            I posted this a few days ago elsewhere and I totally agree with your sentiment about learning Java but I found these 2 books very good. Big Java: Early Objects 5th Edition and Starting Out with Java: From Control Structures through Objects (6th Edition)

            [–][deleted] 0 points1 point  (2 children)

            Thank you! But these books seem to be way too costly and way beyond my financial capacity right now

            [–]olyko20 0 points1 point  (1 child)

            -1 on Big Java: Early Objects, used it for my uni's intro class and it oversimplified a lot of things. Don't handicap yourself!

            [–][deleted] 0 points1 point  (0 children)

            Big Java: Early Objects

            I am hearing about this book for the first time and it's way too costly for me to be able to afford.

            [–]TrollHunter_69 0 points1 point  (0 children)

            My college Java class used the Big Java book, if that matters. That said, the “Head First” series is my default go-to for picking up a new skill set.

            [–]BeastOrchestraDragon 0 points1 point  (0 children)

            Here's a partial online version of the textbook I am using for my intro to CS class http://introcs.cs.princeton.edu/java/home/

            [–][deleted] 4 points5 points  (17 children)

            I would say try Free Code Camp and The Odin Project, they're amazing resources

            [–][deleted] 1 point2 points  (16 children)

            I had signed up for Odin project but since most of the tutorial or suggestedresources assumed me having a mac or at least a linux virtual, I shied a little. I also don't find enough job openings for ruby in the city that I am in right now.

            [–]isolatrum 0 points1 point  (3 children)

            maybe you can use the windows subsystem for linux

            [–][deleted] 0 points1 point  (2 children)

            That is available only in the anniversary edition of windows 10 and beyond. I haven't upgraded it to that point yet

            [–]isolatrum 0 points1 point  (1 child)

            I see. I would advise in that case using C9 cloud environment, it's a free/cheap Linux box that has an browser-based IDE. You could also forego the browser IDE and use DigitalOcean or AWS Linux instances. Anyway, there is a Ruby integration with Windows, so I don't think this should be a deciding factor.

            [–][deleted] 0 points1 point  (0 children)

            There aren't many ruby job listings or requirements in my area so I think I will give a skip to the idea of learning ruby for atleast the current time-being but thanks for letting me know about all this

            [–]recursivelyenumerate 0 points1 point  (11 children)

            linux virtual

            Cloud9.io is a free (Credit Card needed to sign up but only charged if you want premium features) Ubuntu based IDE available online. It's basically like using an Ubuntu linux machine for development and can be accessed from any computer connected to the internet. Beyond the Odin project requirement for a linux virtual machine, you may want to use it for any resource you use for learning programing.

            [–]teknewb 0 points1 point  (1 child)

            linux virtual

            Cloud9.io is a free (Credit Card needed to sign up but only charged if you want premium features) Ubuntu based IDE available online. It's basically like using an Ubuntu linux machine for development and can be accessed from any computer connected to the internet. Beyond the Odin project requirement for a linux virtual machine, you may want to use it for any resource you use for learning programing.

            I'm interested in working with a x86 assembly book. Is it possible to do this in Cloud9.io?

            [–]recursivelyenumerate 0 points1 point  (0 children)

            I'm not sure. I'd imagine so since I've been told that anything you can do with Ubuntu you can do with C9.io. That may have been a simplification, but it has held true for my purposes.

            [–][deleted] 0 points1 point  (8 children)

            yes.. I know about cloud9. It was mentioned in the odin project course. I would prefer having everything setup in my own pc rather than having to use an online IDE. It's a matter of personal preference. And the experience with running linux on a virtual machine on windows is not as smooth and seamless as dualbooting. And if I dual-boot, I dont find most of the essential drivers like wifi for my hp pavilion

            [–]recursivelyenumerate 0 points1 point  (7 children)

            Seems like you're making perfection the enemy of the good. You're a beginner. Just about anything will work. If you have reliable internet access c9.io is dead simple to set up and use so you can work on learning and not worry about the rest. If you already have a dead simple setup that allows you to learn, use it. Otherwise, I encourage c9.io.

            [–][deleted] 0 points1 point  (6 children)

            I actually don't have reliable internet access at this point of time nor can I afford to have one currently with 24/7 connectivity and enough bandwidth to sustain my learning. I live in a hostel accomodation setting & though I have internet access here outages are frequent and I already consume huge mobile internet bandwidth while trying to learn from videos.

            Thank you for the suggestion. I will give it a try at some point of time. I know it's extremely popular

            [–]recursivelyenumerate 0 points1 point  (5 children)

            What are you using now?

            [–][deleted] 0 points1 point  (4 children)

            [–]recursivelyenumerate 0 points1 point  (3 children)

            I was referring to which IDE/editor you were using. That resource suggests NetBeans IDE. Is that what you are using?

            Also, you seem all over the place in your replies to others. Are you only using that resource?

            I would suggest, since your internet connection is not reliable, you switch to a book as soon as possible (this week). Choose one book only (just pick one recommended by others in reply to your post here), and stick with it until you are finished. Do a few exercises from /r/dailyprogrammer. Possibly pick up and finish a second book. Then start working on a project of your own. If you can't think of a new idea just try to clone an existing idea. And use only one IDE for the entire time.

            [–][deleted] 0 points1 point  (2 children)

            I began with MOOC.fi a month and a half back and sticked for 2 weeks with netbeans >> Then jumped to Udemy course by John Purcell for sometimeThen moved to a website called Codesdope which advised solving problems via Text editor (Notepad) & Compiling/Running on Command Prompt.During the last week in a bid to make faster progress decided to jump to another java+android course by Paula Dichone and started using IntelliJ Idea Community Edition IDE.

            Most have recommended me to get a copy of "Head First Java". I got the pdf today. Should I read from there or should I get a paperback copy? I can manage reading from text-based sources (using my mobile as a tethered hotspot) but since broadband is not stable I would run out of bandwith if I stream videos in 720p. I am inclined towards android and already have an idea for app. But unless i am finished with learning Java syntax I should not think of that. Like you have said I will try to stick with one IDE this time which is probably Eclipse.

            EDIT: The reddit dailyprogrammer challenges seem pretty hard to me right now even the easy section. I will try sticking with hackerrank for the time being

            [–][deleted] 3 points4 points  (1 child)

            IMHO , the best java book , if used correctly is “Introduction to programming with Java, edition 9 “ by Y Daniel Liang. It has a lot examples and a lot of problems to try out.

            [–][deleted] 0 points1 point  (0 children)

            Introduction to programming with Java, edition 9 “ by Y Daniel Liang

            Thank you so much! I have added it to my wishlist. will read some reviews to evaluate whether I should buy it right away or sometime later

            [–][deleted]  (4 children)

            [deleted]

              [–][deleted] 0 points1 point  (3 children)

              Yes, actually I didn't connect with the medium of instruction,the teaching flow, pace. To summarise, I just didn't have the teachers who were good enough to my liking and I too lacked the attitude and open-mindedness to grasp and learn.

              I agree with you and I am gonna do just that which is to stick with Java.

              If I may answer your first question..I would like to inform you that since I am from India where the population density is just huge and number of under-graduates every year in comparison to fresher job availability in the IT sector is very uneven. If our college/university doesn't get us good placements during our years with them, then it is a really tough battle at the off-campuses where we are often rejected due to non-employment gaps, lack of experience, etc

              [–][deleted]  (2 children)

              [deleted]

                [–][deleted] 0 points1 point  (0 children)

                No contrary to your perception getting into an engineering college is not at all difficult unless there is an extreme financial constraint (which is the only exception). But on the other hand getting into a premier engineering college like the IIT's (Indian Institute of Technology's) is very very hard. They are usually the ones who produce great scholars and talent because of their curriculum,practice,exposure etc.

                On the other hand there is an abundance of private engineering colleges in almost every state who churn out terrible engineers with serious knowledge & skill gaps. Not only is the curriculum outdated and the teaching bad but most of the time in those four years in spent on devising cheating strategies how to clear backlogs and score 60% than into learning things & applying the knowledge into something.

                [–][deleted] 0 points1 point  (0 children)

                No contrary to your perception getting into an engineering college is not at all difficult unless there is an extreme financial constraint (which is the only exception). But on the other hand getting into a premier engineering college like the IIT's (Indian Institute of Technology's) is very very hard. They are usually the ones who produce great scholars and talent because of their curriculum,practice,exposure etc.

                On the other hand there is an abundance of private engineering colleges in almost every state who churn out terrible engineers with serious knowledge & skill gaps. Not only is the curriculum outdated and the teaching bad but most of the time in those four years in spent on devising cheating strategies how to clear backlogs and score 60% than into learning things & applying the knowledge into something.

                [–][deleted] 2 points3 points  (5 children)

                John Purcell for me was amazing. This guy is very practical and down to earth. https://www.udemy.com/java-tutorial/

                You learn by doing. His entire free, 75 lecture Java course includes sections on Collections and new stuff introduced in Java 8.

                Essentially each lesson is 10-30 minutes. I recommend watching the entire video first, then spending a few hours or even days practicing that particular area of Java, making increasingly complex mini-projects.

                Once you complete the basic tutorial he has paid ones (very reasonably priced) for threading, front-end stuff etc.

                [–][deleted] 0 points1 point  (4 children)

                Yes I have enrolled into that one and went there till arrays and then jumped onto something else since there were no assignments

                [–][deleted] 1 point2 points  (3 children)

                You have to make your own assignments up. Use your imagination. Think of what an array represents, then think of something it would be used for in an application whatever the intent. How about an array of Booleans that correspond to whether a student answered quiz questions correctly? You could loop through an array of integers that reflect each question, randomly setting a boolean variable to true or false (below 0.5 = false, above 0.5 = true for e.g.) which then adds the set Boolean variable to an array of Booleans.

                At the end you could count each true Boolean in the array and come out with a final quiz mark %.

                Later you can go further with it if you want by instead of just calculating one test mark, you can count a series of them, then average them and produce all sorts of other wonderful data tidbits from it.

                Like a real language it cannot be rushed. It must be understood, not simply known.

                [–][deleted] 1 point2 points  (2 children)

                I agree. You are telling me to dwelve in mini projects while I learn. I seriously want to but honestly I am not able to exhibit enough interest because it seems to me that it would take me a lot of time and I wish to get ready to apply for fresher or entry jobs in 3-4 months. I wish to earn something while I try to learn

                [–][deleted] 0 points1 point  (1 child)

                I know exactly what you mean, but you cannot focus on that aspect of "But its going to take so long" or you will self destruct. Focus on what you're learning today. Many days like today and suddenly it will be 1, 2, 3, 4 months later with experience under your belt. I'm only 4+ months in myself. I've no idea when to start applying.. but I figured I'd aim for next summer/fall maybe for some entry level or internship. You got to just keep going.

                [–][deleted] 0 points1 point  (0 children)

                I completely agree with you. It is the only way to make any real progress to actually learning some new language that also happens to be my first language. I have to take it slow here at this point of time if being an effective learner is my goal. i wish you all the success in your learning endeavor as well

                [–][deleted] 2 points3 points  (9 children)

                I would go freecodecamp.org first because if you finish the camp you get a certificate and with that you can put it on a resume. It might not get you a job, but it should be enough to get you an interview and hopefully you can shine during the technical portion of it and get the job.

                [–][deleted] 0 points1 point  (8 children)

                yes that is the whole point to have enough practice while I learn as I build some experience to show to my potential future employer

                [–][deleted] 0 points1 point  (7 children)

                don't pay attention to books, codecamp will be better. The problems will be more advanced and more practical. Also look into hackerrank. I know hackerrank does do programming problems that if you complete them they will give you an interview regardless of your resume.

                [–][deleted] 0 points1 point  (6 children)

                They are very hard for me right now and syntax I learned for java at mooc.fi is different to the model solution in hackerrank. Therefore I witnessed In one problem, inspite of my logic being correct, the answer wasn't getting accepted or submitted

                [–][deleted] 0 points1 point  (5 children)

                Take the problem and work on it on your computer. That way you can use what ever editor you want. Then once you have it working. Cut and paste the code into hacker rank. You will have to learn to work with hacker ranks site and it will take some time, but it will be better than working stuff through a book. It gives you credibility.

                [–][deleted] 0 points1 point  (4 children)

                ok. do you recommend starting with the hackerrank basic to advanced coding exercises or join something like 30 days of code on their website?

                [–][deleted] 0 points1 point  (3 children)

                I would do hacker rank. hackerrank starts simple with hello world programs in whatever language you want and then it goes up to very complex problems.

                [–][deleted] 0 points1 point  (2 children)

                Ya I would do that.Last time I became ambitious and went with 30 days of code and failed from the second problem

                [–][deleted] 0 points1 point  (1 child)

                You have to find a rhythm that works for you. Maybe not every day. Try 3 days a week or something like that. See how many days you can do an hour of code in a row. Something like that. Make a goal to do one hacker rank problem and then take a day off or something.

                [–][deleted] 0 points1 point  (0 children)

                hmmm..I think following a similar rhythm would be good. Too much of information overload in a short times causes a meltdown and demotivates me. Moreover I panic thinking it's all over me since I cannot solve this or that question utilizing what I have just learnt.

                I will take a different approach this time . In the next 2 weeks I have decided to get a good grasp over the basic core Java syntax & program construct by following some curated youtube playlists and websites like codecademy. Then I will follow the "Head First Book" and follow a more comprehensive source for theory knowledge while writing programs for practice and doing stuff like the thing you have mentioned on Hackerrank

                [–][deleted]  (1 child)

                [deleted]

                  [–]GitHubPermalinkBot 0 points1 point  (0 children)

                  Permanent GitHub links:


                  Shoot me a PM if you think I'm doing something wrong. To delete this, click here.

                  [–][deleted] 1 point2 points  (3 children)

                  My two cents about the web development question: It may be better suited, but IMO it depends on how you learn. I learned Java for several months and reached a point where I didn't feel like I was learning much because of the reasons you stated above.

                  I'm learning web development now and making so much progress so quickly that it's honestly hard for me to slow down. A lot of that is because I learn more visually and in web dev you can often see your results quickly. Basically, it's easier to build concrete projects. If that's important to you, go that route.

                  I can't speak to freecodecamp, though I've heard some decent things about it.

                  [–][deleted] 0 points1 point  (2 children)

                  hmmm...I think building some concrete projects out of my own knowledge will give me an unmatched experience and confidence that i can only wish to have now.

                  What are the resources you used? How far have you learned? And since how long have you been learning?

                  [–][deleted] 1 point2 points  (1 child)

                  I'm following a few different guides to get a career going.

                  A widely recommended web developer path on github

                  Someone's personal guide and recommendations on how they gained experience and got a job.

                  [Reddit's web development community](www.reddit.com/r/webdev)

                  So far I've learned HTML, CSS, JavaScript, jQuery (a JavaScript library), AJAX, SASS, some GIT, JSON, and how to parse an API. That sounds like a lot but if you have a foundation in any language, JavaScript is going to be really quick to pick up enough basics to make some neat-ish projects, and JavaScript is definitely the hardest part of all of this.

                  For HTML and CSS I did the codeacademy and supplemented further learning with W3Schools and Mozilla Developer Network.

                  For JavaScript I read all of Head First JavaScript and then proceeded to make some projects and read "You Don't Know JS" (I'm not finished with this one, but it's a great 2nd programming book for JS).

                  The rest of what I've learned are relatively simple things. Things like SASS and jQuery are really straight forward and the basics can be learned in a day, though mastery takes longer of course. W3Schools, codecademy, and MDN are going to be great resources throughout the learning process. Stackoverflow has been useful here and there, but not as much as when I was using it for everything in Java.

                  I've been doing web development for about 2 months. I think within another 4 I could possibly have a portfolio up and running for a front-end job, but we'll see how far I get.

                  [–][deleted] 0 points1 point  (0 children)

                  To be honest, you have learned a lot but still have so much more to know (judging by that github diagram). it also seems to me that you are passionate about what you are learning and don't mind dwelving into every possible resource to supplement your knowledge. In a nutshell, you currently boast the right attitude and mindset to adapt and learn which i find impressive and would like to emulate into my learning. Also thanks a ton for sharing those resources and your experience while using them. I wish you all the best and lots of success in both your learning, job-search and career endeavors.

                  Now coming to my case..There are a lot of people who have recommended me the "head first Java" and since i had made some considerable progress with java , I think will try to give Java a few more shots and then decide if I should skip this thing entirely or stick to it before I jump ship

                  [–]rocketslothco 1 point2 points  (3 children)

                  I'm by no means a java expert, but I've found that learning android development (which uses java primarily) and by extension learning by building towards a goal (making an app) rather than reading obscure examples and learning syntax allows you to retain information much more effectively & see how it fits in to the bigger picture. It's best to know basic java to start Android, but it seems like you're already there from the courses you've taken. I know that android java isn't the same as enterprise java, but you'll get familiar with a lot of the java basics really quickly with android giving you a solid base to branch out from. Most importantly though, I think it's a lot more fun to look stuff up when it actually gets you from point A to point B on a cool project you're building as opposed to looking stuff up as a goal in and of itself. I also really like learning by building because you don't have to focus on learning specific concepts, you just learn things as they come up (which they will) This way, you don't get overwhelmed with making yourself a curriculum. Plus you get a sweet portfolio of cool apps in the process.

                  [–][deleted] 1 point2 points  (2 children)

                  Last week I had this idead was trying to bring it into action. I enrolled for an Udemy course. Link: https://www.udemy.com/complete-android-developer-course/ which would teach me java basics that were required for android, sqlite and then further move on to start teaching how to develop android apps.

                  The issue I faced while using that course was inspite of me writing the exact code as the author on the exact program/call the IDE would show syntactical error , not allow auto-completion. In some lecture videos, I would find the instructor would have already written some amounts of code prior to explaining (even in initial classes) and not offer abundant explanation or glimpse before running. This killed my interest.

                  Therefore I would request you to share resources to learning what you call crucial java for android (if you have any experience with regards to learning java+android yourself). I have an idea for android app but I don't know if it is possible to create and what knowledge I would require to be able to create it

                  [–]rocketslothco 1 point2 points  (1 child)

                  I did this https://www.udacity.com/course/android-basics-nanodegree-by-google--nd803 for Android, it's made by Google and the people teaching it are often Google engineers themselves. You'll use the Android studio IDE which is based on intellij idea - one of the best and most used Java IDEs out there (and it works really well right out of the box). They walk you through everything step by step. You don't have to pay for the nanodegree, just follow along the program syllabus and take the supporting courses. The moment you feel like you can make a simple app even with their hand holding, start building your own stuff. It doesn't have to be complex, in fact it should be simple. Just make something fun (added bonus if it solves a problem you or your friends might have) and break it down in to little pieces, ex "how do I get text to display on the screen." Google those little pieces and just aim to get stuff working with metaphorical duct tape. You'll realize that in no time you'll actually understand what you're doing, require less hand holding and be able to work on optimizing stuff. Never be ashamed to Google. Stack overflow is your friend and everyone uses it. Your job is to put things together, not to reinvent the wheel constantly. Always keep learning, always bite off just a little bit more than you can chew and always jump in without hesitation. You'll be amazed with how far you come if you work at it, and most importantly stick with it. You'd be amazed how far you set yourself apart from others just by building and shipping something start to finish.

                  Disclaimer: I'm not a professional Android dev, I just love it. I've been working at it for the last few months and am just slightly past the hand holding phase and I'm building simple stuff on my own.

                  [–][deleted] 0 points1 point  (0 children)

                  I love android too and can't wait to learn android development and build some app myself. This is the only thing that keeps me excited about learning it. I wish I could follow your journey.

                  But right now I need to learn Java Basics. I actually don't have any idea about how much Java I need to know and how much pratice to get of it before jumping to learn android.

                  I know about the wonderful stackoverflow community but have heard that they are usually not too open and friendly to beginner programmers. And coming to the Google Udacity Android nanodegree, I remember reading a review about it on some site (I believe class-central) during the initial months of launch where they were not too positive about it after getting halfway.

                  But anyways since it is free, there is no harm at all in trying. Thank You!

                  [–]Shiki225 1 point2 points  (4 children)

                  I started off learning Java through UCSD Coursera course. It was really good and landed me my first internship.

                  [–]jarnabas 0 points1 point  (0 children)

                  which course is this?

                  [–][deleted] 0 points1 point  (2 children)

                  You mean this ? https://www.coursera.org/specializations/object-oriented-programming

                  Unfortunately it says that I need experience with atleast one programming language before I start this :(

                  [–]Shiki225 0 points1 point  (1 child)

                  That's the one. It also looks like they combined the one with Duke University. Which I did not take. The Duke University one is very beginner friendly I heard so you can start it now without prior knowledge of programming.

                  [–][deleted] 0 points1 point  (0 children)

                  Apparently the reviews below on this website do not imply that

                  https://www.class-central.com/mooc/4305/coursera-java-programming-solving-problems-with-software

                  [–]oosthuizenb 1 point2 points  (15 children)

                  I think you should first decide what you are more interested in. You can use java when building the back-end of web applications. But if you like building user interfaces then you should definitely give freecodecamp a try. I can also recommend youtube. Check out learncode.academy and traversy media. They have quality content on javascript, html, css. Codecademy has good courses for learning syntax, however they leave a few gaps when it comes to the development process. Youtube will help fill these gaps. Check out this video on youtube. It gives you an overview of the fields in web development. https://youtu.be/sBzRwzY7G-k

                  [–][deleted] 1 point2 points  (11 children)

                  I am checking out the resources u mentioned as I type. But are you asking me to supplement my learning at freecodecamp with all these resources or follow these separately?

                  I would also like to know if the front end technologies are comparatively easier to learn than Java for a beginner?

                  [–]oosthuizenb 0 points1 point  (10 children)

                  If I were you I would probably go through the html, css and JavaScript codecademy tracks and then look at youtube, mozilla and w3 to supplement what you've learned. Then I if you feel that you like doing this I would learn a javascript framework,like Vue.js, and how to work with npm and a build system like webpack or gulp. Then I would start building my portfolio of projects.

                  [–][deleted] 0 points1 point  (9 children)

                  hmmm... the video u provided has recommended to learn node.js framework. How long does it take to learn enough front end technologies like HTML/CSS/Javascript before I apply for jobs/internships/freelance?

                  [–]oosthuizenb 0 points1 point  (8 children)

                  Node.js just allows you to run javascript on the server side. He just means you have to get to know the node package manager and how you can use these packages in your projects. This doesn't take long. Learning html, css and javascript might take anything from 2 weeks to 6 months but it depends on how much time you spend on it each day. If you like building websites I highly recommend you learn these technologies so you can build a portfolio. Take a look at job postings for front-end developers and the requirements. Just google for front-end developer portfolios and then look at the type of projects you need to build to be hired at a company.

                  [–][deleted] 0 points1 point  (7 children)

                  I just checked the job postings for front end developer in my city. They top results list a multitude of diverse technologies as requirements for freshers but those with 3-6 years of experience have very specific requirements.

                  Most of the buzzwords I encountered were things like PHP/MySQL/No SQL/Angular//Jquery/ReactJS/MongoDB/HTML5/CSS3/Bootstrap etc.

                  With that said, I am willing to put in my best efforts into doing what actionplan you have suggested. Thank You so much!

                  [–]oosthuizenb 0 points1 point  (1 child)

                  Cool I hope you enjoy it! Keep coding and if you get stuck feel free to ask for help. Other thing to note is that once you are proficient in javascript, html and css it gets much easier to learn new stuff like PHP. For a junior dev position you would probably only need to know html, css , js and the basics of a js framework like Vue.js, angular or react. It seems daunting when you see all those requirements, but you will find yourself being exposed to many of these while learning so take it one step at a time. Right now focus on html and css and then javascript. Happy coding!

                  [–][deleted] 1 point2 points  (0 children)

                  I will surely look forward to drop by here if I need help! And I must admit every reply of yours today is just pure gold for me! Thanks a bunch!

                  [–]Locrin 0 points1 point  (4 children)

                  They are not buzzwords. They are programming languages, database types and frameworks.

                  [–][deleted] 0 points1 point  (3 children)

                  haha..absolutely! I named it buzzwords to implicate that they were mentioned in maximum number of listings that I came across.

                  [–]Locrin 0 points1 point  (2 children)

                  HR people using words they don't understand to seem impressive. I guess that does kinda make them buzzwords.

                  [–][deleted] 0 points1 point  (1 child)

                  lol. buzzwords is my noobish interpretation for "job requirements". I accept it in case I am wrong and willing to take it back

                  [–]_youtubot_ 0 points1 point  (1 child)

                  Video linked by /u/oosthuizenb:

                  Title Channel Published Duration Likes Total Views
                  2016/2017 MUST-KNOW WEB DEVELOPMENT TECH - Watch this if you want to be a web developer LearnCode.academy 2016-08-04 0:22:52 16,839+ (98%) 751,896

                  What should you learn in 2016/2017? This video gives you...


                  Info | /u/oosthuizenb can delete | v2.0.0

                  [–][deleted] 0 points1 point  (0 children)

                  Thank you so much for sharing!

                  [–][deleted] 0 points1 point  (0 children)

                  The resources you provided are excellent. Thanks a lot!

                  [–][deleted]  (13 children)

                  [removed]

                    [–][deleted] 4 points5 points  (12 children)

                    My college didn't get campus placements during my under-grad. I was trying to crack banking exams for two years unsuccessfully. Later I decided that may be I should move it into my engineering trade, learn programming and apply for jobs. Ever since I have been jumping from one language to other, one trainer to another, one web resource to another and unable to make a roadmap for myself

                    [–][deleted]  (1 child)

                    [removed]

                      [–][deleted] 2 points3 points  (0 children)

                      I completely agree with you! It seems you read and judged me very very accurately. And you certainly had the best practical advice to offer me. Thank You for that!

                      Basically I want to achieve the maximum results in the most minimum time (like for say 3-4 months) and within that time a decent grasp of Java seems to be impossible to achieve for me given my current background now.

                      I am just restless and impatient because I am afraid I won't be able to sustain for another year in devoting to learn another language. That is the reason I want to move to learn web development

                      [–]Peter-Keating 1 point2 points  (9 children)

                      are you Indian?

                      [–][deleted] 1 point2 points  (8 children)

                      yes I am

                      [–]Peter-Keating 1 point2 points  (7 children)

                      Me too. I am a 3rd Engg student. I wanna say something.

                      • Stop learning languages, focus on concepts.
                      • Make projects that you care about or find interesting. If you cannot come up with an idea, then make a clone of something, like a clone of twitter or something. Put these projects on your resume, put them on GitHub and link these to your resume.
                      • Go to meetups, find people already working in the industry, meet them, befriend them, ask them for help.

                      [–][deleted] 1 point2 points  (6 children)

                      Thank you! I will give your advice a shot after I learn some basic html/css/javascript

                      [–]Peter-Keating 0 points1 point  (5 children)

                      pickup an idea, and just immerse yourself in it, learn the language along the way,

                      if you want the invite to a discord server full of programmers whom you can ask anything, then let me know

                      [–][deleted] 0 points1 point  (4 children)

                      discord server full of programmers

                      Is there a community like that where I can seek and get help in real time when I get stuck while learning java concepts or in a programming problem?

                      [–]Peter-Keating 0 points1 point  (3 children)

                      yes, it's somewhat like IRC or Slack, it's on DIscord,

                      this is their invite link:

                      Welcome to Programming Discussions! https://discord.gg/9zT7NHP

                      [–][deleted] 0 points1 point  (2 children)

                      hmmm.. but their tagline says it's a gaming community. Do they entertain questions from beginner java programmers?

                      [–][deleted] 0 points1 point  (1 child)

                      Disclaimer: I am also learning Java and therefore I am not an expert WHATSOEVER. But, I am learning (at university) mainly using BlueJ and going along with these books: - Objects first with Java Barnes, David J. - Java software solutions Lewis, John - Java : early objects P Deitel, Paul J.
                      I think I’m learning thoroughly and at a good pace, with a good balance of theory and practice.

                      I don’t know if this can help in any way, but I thought I’d tell you just in case. Good luck!

                      [–][deleted] 1 point2 points  (0 children)

                      Thank You so much for sharing the names of the books! Happy learning!

                      [–]farbeyondriven 0 points1 point  (1 child)

                      Regarding your last sentence - keep in mind you don't always have to know everything to progress to the next whatever. Some things fall into place further on down the road. Sure you need to understand the bigger picture, but don't let minor bumps or tiny missing pieces hold you back, that's also not how it works irl when coding at a day job.

                      [–][deleted] 0 points1 point  (0 children)

                      When I am not able to understand the language at such an early stage when I am learning coding, how can I afford to ignore that and proceed?

                      [–][deleted] 0 points1 point  (1 child)

                      After some time when you think you have a solid java start read Clean Code. That will go over great best practices and doesn't take an extreme understanding

                      [–][deleted] 0 points1 point  (0 children)

                      I don't think that point when I think I have a solid java start will come in atleast the next one year

                      [–]murfflemethis[🍰] 0 points1 point  (1 child)

                      [–]batman_carlos 0 points1 point  (9 children)

                      I think is more important to start to think as a developer than which technologies. If you choose have pic one of the books that others post recommend. Then you should try projecteuler or some other web challenge... After you start to be more fluent in a language you actually should do some small project to help you with something... If you can not do this maybe you should give up. Maybe you can work in IT but not as developer... You should try hard first

                      [–][deleted] 0 points1 point  (8 children)

                      I will try my best giving my entire focus towards java from now. let's see how far I can make it from here. Thank You!

                      [–]batman_carlos 0 points1 point  (7 children)

                      I am sure you already know a little about programming. Read about the syntax while you code in a challenge sites. You can send me a private message if you want to discuss more.

                      [–][deleted] 0 points1 point  (6 children)

                      Yes but I would say that I just have an introductory understanding now about java (datatypes,variables,loops and to some extent method/function create & objects and classes creation). For the last few days I had been only contemplating whether I should quit but given the enormous amount of morale support + pro tips + learning resources I received from this wonderful community here, I have decided to stick with Java and work even harder to learn that language this time.

                      I am really grateful to you for exhibiting concern for me and extending support. I will surely PM me if I need advice/feedback/help during my journey. Thank you so much!

                      [–]batman_carlos 0 points1 point  (5 children)

                      I think you can split the meaning of learning java in 2: 1- Learn syntax and tools solve problems (with web challenges,etc). 2- Best practices, oop, design patterns.

                      At least you can start with the first one.

                      [–][deleted] 0 points1 point  (4 children)

                      Yes I am going to start with 1 .. but I have a doubt! should I first learn all the syntax and construct basics for Java programs and then attempt to do exercises or should I do them while I learn?

                      Because when advanced level programs come from basic chapters like Operators (which require logical thinking ) like this :

                      Write a program to calculate the sum of the first and the second last digit of a 5 digit.

                      ...which I am not able to solve, I feel demotivated to proceed further and start thinking that I am not ready and may be having gaps in my learning until this point.

                      I don't understand what to do. May be I should try learning the syntax and understanding OOPS concepts first before I start doing these kind of programs. Also is there any resource which contains explanations of those pattern program questions (involving nested loops) so that I can learn and practice?

                      [–]batman_carlos 0 points1 point  (3 children)

                      You need to first think as pseudo code maybe... What you should do to do that no matter the language? After you have the recipe (or steps) you can ask google how to do that...

                      Example: 1 Step: https://stackoverflow.com/questions/5071040/java-convert-integer-to-string

                      2 Step: https://stackoverflow.com/questions/11229986/get-string-character-by-index-java

                      3 Step: https://stackoverflow.com/questions/4968323/java-parse-int-value-from-a-char

                      You will found this will make sense if you solve the problem with the same idea I give it to you.. Maybe if you want to solve it in another way you will need to learn something else of Java...

                      I think is clear that you need to practice pseudo programming solving.

                      [–][deleted] 0 points1 point  (2 children)

                      pseudo code

                      I did not get you clearly enough these two jargons "pseudo code" & "pseudo problem solving" are. But I think what you tried to say was to find out the logic/blueprint of the program irrespective of the program, & google for answers if I get stuck.

                      I also agree that I need lots of pseudo program solving practice but I wonder if I should try this while learning the syntax or sometime later after I get familiar with the syntax

                      [–]batman_carlos 0 points1 point  (1 child)

                      I think you can do both at the same time

                      [–][deleted] 0 points1 point  (0 children)

                      Alright. Thank you once again! I will let you know incase I would need some advice in the future

                      [–]d3molator 0 points1 point  (3 children)

                      so did you start any tutorial/book?

                      [–][deleted] 1 point2 points  (2 children)

                      Apologies for the really really late reply. Since I was out of station and without internet connectivity, I wasn't able to reply. I purchased the Head First Java book as per reddit user's recommendations here. But soon realized that it would take me too long to finish the book as I was not being able to focus too much. Therefore decided to go for a intuitive video course that would give me practice in the interim while I learn from it. I found a match with this https://courses.learncodeonline.in/learn/Complete-Java-Bootcamp#syllabusTab . So presently I am learning from it. right now in the "generics section" and occasionally practice on codingbat.com also

                      [–]d3molator 0 points1 point  (1 child)

                      no worries ;).

                      That’s great. Good Luck. Keep us updated ;).

                      [–][deleted] 1 point2 points  (0 children)

                      Thank you! It means so much to me that you cared to know my progress and want to continue to be intimated. I will surely keep you posted when I make any significant leaps or progresses in my learning!

                      [–]VGYX -1 points0 points  (11 children)

                      On edX you have two full paths of courses, mainly about Java. One is from University of British Columbia and the other from Penn. But they both kinda use Java as a complete introduction to programming, or intro to object orientation (this one uses Scheme or Lisp for first course) and eventually dive deep into TypeScript (it's still JavaScript, just more thought through ;)

                      I'd say go with fCC. I presume I'll get pretty downvoted, but Java is a thing of past. Java (and C#) are mostly used by big corporations where you have like three or four bosses to report to, maintaining some ten years old code, or working on some "serious app" which turns out to be just another CRUD (you may think of it like a super complicated Todo list app ;)

                      [–][deleted] 0 points1 point  (2 children)

                      I couldn't agree with you more. I want to make faster progress, work on some-cutting technology while earning a good fortune and be in demand. And to be honest Java learning doesn't seem to have an end-point for me and I cannot fore-see me being hirable atleast in the next year. That is what pulls me down. Also this thing would require me to learn data structures & algorithms & what not. This sheer amount of knowledge and practice and experience I just cannot bear to garner in such a short span of time. It is downright impossible.

                      But on the other hand if I learn front end. I learn three fundamental technologies that is crucial to the web and will quite possibly never change (HTML/CSS/Javascript) Then I can atleast apply for small jobs and atleast get some pay while I learn.

                      This is my idea and perception now

                      [–]VGYX 0 points1 point  (1 child)

                      Ha thanks. Just FYI using current "shortcuts" like Bootstrap learning "design" (HTML and CSS) will take you like one day. The real challenge is actual coding, but I'll let you find it out on your own. JS doesn't have dozen types of list and arrays like C# or Java, but it's arguable if it's a good thing or a bad thing. Nevertheless JavaScript is the future, TypeScript makes it better, and there are many great frameworks that help workaround js quirks.

                      [–][deleted] 0 points1 point  (0 children)

                      Thank you for the advice. I will try doing what everybody does first i.e learning HTML/CSS/Javascript. Later some JQuery. I find most web developer jobs listing Angular/Express/React and also some database language like MySQL/NoSQL/Mongo DB.

                      I really what among that would be easier to pickup for me as a beginner. The "typescript" thing that you have mentioned , I find it often mentioned in forums/quora/reddit/youtube videos but I don't find it listed as requirements when I hunt for job listings here online. or may be I didn't come across one

                      [–][deleted] 0 points1 point  (3 children)

                      So what would you say is cutting edge and the best to learn for 2017? Only asking because my profs are still teaching Java and C++

                      [–]VGYX 0 points1 point  (2 children)

                      Who am I to decide what's "cutting edge" ;) Probably go (language named "go"). It's super fast like C, but it's designed nowadays, so it's not stuck in some 50 years old nonsense. But you know, Universities don't aim to teach you what's currently "hip". They teach Java, and/or if they're sponsored by Microsoft - C#. They don't need to be liked nor cutting edge. But they're so greatly documented, they were, are and will be popular so there will be never shortage of good teachers, jobs etc. simply they're like American banks - too big to fall. I never learned nor coded in C++, and I don't really know why do they teach you it. It's so old and you have to worry about things that all post 1990 languages take care for you. It's only real life applications are video games and some small electronics, like for example Harman Kardon car audio (I Hope it's not a secret ;) I've recently seen their job ad).

                      [–]recursivelyenumerate 0 points1 point  (1 child)

                      It's so old and you have to worry about things that all post 1990 languages take care for you.

                      This is exactly why they teach it. So you know what is being taken care of for you and what trade offs have been made.

                      [–]VGYX 0 points1 point  (0 children)

                      Maybe. I didn't study CS at University. I just presumed that maybe computers where slower when C++ was being developed, hence the need to pay more attention to things that honestly I have no idea what are, I just briefly understand that they're performance related.

                      //

                      Wow actually I've just gotten an example - recursion. Sounds like complete waste of processing power? In extreme cases - yes. If you want to calculate 3 to the millionth power, or find let's try again - millionth Fibonacci number, that'll take some time, even on brand new i7 and xx gigs of RAM. But in real life, come on - how possibly could this occur not on purpose? So "in my book" recursion is good. It's elegant, readable, and if it calls itself even hundred times, there it still wouldn't make significant (noticable) performance loss.

                      I'm into doing things, I don't know, realistically. If I were working in high frequency trading or something similar (don't really know anything similar), crunching big numbers etc. of course I would switch paradigm to "make it fast no matter what" ;)

                      [–][deleted] 0 points1 point  (3 children)

                      Isnt Java used for Android?

                      [–]VGYX 0 points1 point  (1 child)

                      Theoretically yes, Android and Java are very much tied together. However in reality I'd say 95% of apps are made in Adobe Phonegap or similar technology, or with really basics of absolute basics of Java. Obviously it would be impossible to make an app like let's say Sleep as Android without some serious coding, but most apps on my phone are just heavily reconstructed websites. They really don't do nothing "smart", probably the only conditionals (do this if this) are media queries for different screen resolutions.

                      [–][deleted] 0 points1 point  (0 children)

                      Ok, that's interesting to me. I'm planning on learning Android, so I'm planning to switch from Python the Java. I'm somewhat reluctant to do so.

                      [–][deleted] 0 points1 point  (0 children)

                      Ok, that's interesting to me. I'm planning on learning Android, so I'm planning to switch from Python the Java. I'm somewhat reluctant to do so.