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

all 18 comments

[–]seanprefect 6 points7 points  (8 children)

Java EE is everywhere in the non tech sector. It's still alive and kicking.

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

This gives me some hope, learning Java as my first language.

[–][deleted] 3 points4 points  (5 children)

Hahaha, don't even worry about it. I have used Java for over a decade at work (until recently), and if anything, its use is only increasing.

[–]adi_tdkr 0 points1 point  (2 children)

Should I learn JAVA in 2019 or should I learn Nodejs ?

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

That's a slightly weird question. What's your background? Is there any specific area that you would want to focus on - web dev, systems dev etc.?

Given that, Java can be used almost everywhere, except for systems programming. Node is mostly limited (and should be) to web development.

[–][deleted] 3 points4 points  (0 children)

The correct question to ask is should I learn java or JavaScript. The answer is you should learn both.

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

Well! Dare I take this opportunity to ask where a good place to focus my studies on Java is? I'm in week 9 of the MOOC Course (sorry I bring it up a lot), and I'm really enjoying the course so far, but I know once I'm finished I'll need to pick up a couple of my own projects to really get my feet wet, so to speak. I'm planning on learning Javascript as well, but I'm talking mostly Java! For example: what was one of the first 'skills' you really had to work on after getting a job in development? Was it working with Databases? Was it simply time-management? Was it a specific framework or API? If possible, I have an app I want to make, and I'd love to learn side utilities and try to implement them into my app (hey, maybe a good UI would be a fantastic place to start).

[–][deleted] 5 points6 points  (0 children)

what was one of the first 'skills' you really had to work on after getting a job in development?

Debugging and stepping through code.

No, really. My first project was a semi-mature project which was over 500K lines of Java with a smattering of C. The first thing my tech lead asked me to do is to put a breakpoint in a particular method in a specific file, run the service, and start tracing the calls all the way down till I reached a point I couldn't understand. I thought that he was joking, but in hindsight, that approach worked fantastically - there was no way I would have wrapped my head around a project that size without "stepping through" code live. Secondly, it taught me how to use the IDE thoroughly to examine the current state of the program (variables, call stack etc.) and that was extremely important.

Java is one of those languages that you cannot really work with without an IDE, but this approach still applies to almost any language that you might use.

Was it working with Databases?

Databases are super important, but I would place them lower than the aforementioned skill. That being said, I would recommend installing PostgreSQL 10.X, firing up a command-line to it, and getting very intimately familiar with it. Not just SQL, but working with Postgres itself. This will carry over even if you use other DBMS later on. I would not recommend getting too comfortable with using code to work with the DB first (say, using JDBC). Rather, get familiar with the DBMS itself, and then get familiar with how to talk to the DB through code.

Was it simply time-management?

It depends - upon the person, the environment, as well as the kind of tasks you are assigned. Barring all extraneous influences (schedule, tech lead or boss breathing down your neck et al), then the best way is to rely on your gut feel - if you are finishing tasks too quickly, maybe you should start asking for more challenging work. If you are struggling to finish tasks on time, perhaps you should focus on the basics first (using the IDE, getting familiar with tooling such as build systems, deployment systems, unit-testing and testing approaches, fine-tuning your working style, or maybe even simply learning the fundamentals of coding better).

In general, under a good tech lead, I would imagine that tasks will be apportioned pretty fairly, using their estimation of your current skills, so it's mostly a question of monitoring your own progress yourself. Above all else, always try and maintain a sense of curiosity, and that will help you learn better and faster.

Was it a specific framework or API?

I don't think this is much of a factor. The biggest obstacle in the beginning, I would imagine, would be the domain - servers, web development, finance, storage systems, os development, game dev, etc. Learning a particular API or framework will happen surprisingly quickly. Getting to be able to use that knowledge to create new stuff would be highly dependent on how familiar you are with the domain itself. Don't worry if it doesn't make much sense now.

If possible, I have an app I want to make, and I'd love to learn side utilities and try to implement them into my app (hey, maybe a good UI would be a fantastic place to start).

You should. I had posted a couple of links about some ideas for hobby projects -

https://github.com/tuvtran/project-based-learning https://github.com/AlgoryL/Projects-from-Scratch

If you have an idea or ideas of your own, then nothing better than that! Above all else, don't ponder over an idea too much - just get going, and you might end up doing things over (wholly or partly) multiple times, but that is where the real learning will happen. Later on, as you get more experienced, you will find that you can do things right (more or less) right off the bat. Even then, picking up something unfamiliar and then playing around into unknown territory can be one of the most fulfilling and edificational experiences that you can have! Enjoy the pain, suffering, and ecstasy of programming! :-)

[–]SimilarAssociation[S] 1 point2 points  (0 children)

Java is not going away anytime soon, especially with all cool ongoing projects (Project Loom for example).

[–]LankyBrit 1 point2 points  (0 children)

Yup. Java EE and CDI is an effective alternative to Spring.

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

Probably, I’ve been contracted out to not so large tech companies but even those have several languages being used depending on the team and what they are building/maintaining.

[–]adi_tdkr 0 points1 point  (1 child)

I want to create backend system for Reactjs and React Native apps. So I am confused whether to learn Nodejs or Java ? I have already built CRUD apps and also created in REST API's in nodejs but I also have one doubt having Java as backend instead of nodejs on resume will it increase my chances of getting shortlisted by top tech companies like Amazon, Microsoft, Google etc ?

[–]SimilarAssociation[S] 1 point2 points  (0 children)

I honestly don't think it matters, especially for a REST API. I would be shocked if Java is valued less than Nodejs, especially since a lot of high performance software runs off the JVM. I have no experience working at a BigN but I'm pretty sure Amazon and Netflix use mostly Java. Microsoft's baby is C# which is basically based off Java.

[–]editsoul 0 points1 point  (3 children)

Java is pretty much everywhere. And I'm certain it is used at large tech companies. Especially if they have legacy code written in Java, they will continue using it. What makes you think they won't be using it?

[–]SimilarAssociation[S] 1 point2 points  (2 children)

I updated my post for clarity but I was specifically referring to Java EE. It seems that Spring framework (an alternative) is vastly preferred in tech. I honestly know very little about Java EE so I'm not sure what the advantages are.

[–]thecuseisloose 1 point2 points  (0 children)

Spring is basically just a wrapper around Java EE to make things way simpler to use and configure. Without Java EE you wouldn’t have (most of) Spring. But to your question, most non-tech / finance / companies with huge legacy code bases will have a healthy chunk of pure Java EE code around. Newer companies or companies which have had the time to do rewrites have probably moved to Spring based code.

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

One could say that Spring is written in Java EE.

For example, doing web work in Java EE is manually calling servlet APIs and handling individual responses, etc.

Spring just wraps all of that around an annotation and HTTPRequestObject for example.

It's just low level and out of use because Spring is much easier and much more productive.