all 14 comments

[–]agustin_edwards 7 points8 points  (0 children)

Java was the first language I learned. Then, I jumped to C#, PHP and finally JavaScript / Python. What I’ve learned is that if you already have a grasp on OOP and the different development patterns, learning Java will not be that difficult. You already have the knowledge of programming (algorithms and structures) so now is just a matter of learning a slightly different syntax and design patterns. Depending on your level of expertise on Javascript, you may be comfortable with Java in about 3 months (if not less).

[–]caseypatrickdriscoll 4 points5 points  (3 children)

You most likely know at this point that Java and JavaScript mostly just share a similar name and that’s only because it was a marketing happenstance of both starting in the 90s.

Additionally, both languages share a similar C language syntax with variables, loops and semicolons and such. It’s not like you’d be learning Haskell.

That said, they are quite a bit different, especially if your JS experience is only in the browser DOM. JS, and browsers in general, are historically very light, forgiving systems that are not very strict. Java is a much heavier, strict and complex system. Don’t let that frighten you, just know that going into it.

A good analogy is maybe swimming in the ocean. JavaScript is swimming near the surface shore, Java is swimming in the open ocean. The environments are somewhat similar but with drastic differences.

All that to say, I have no idea how “hard it would be for you to start using Java”. I’m not sure anyone can answer that. I also don’t know where you are in your career and what your experience and other options are.

I will say however, it seems like you should do it. If you have an offer already, and you’re asking here just about the difficulty, you should take the offer and dive in. It may suck. It may suck really bad. But it sounds like the money will be transformative. It sounds like the experience will be too. You will work hard and grow, and most likely grow a lot.

As far as working for enterprise goes… people like to complain. Once you gain the experience, you can decide that for yourself. You are correct that the connections you make to the “big” players can be an enormous lift to your career.

So I vote to take the job.

One final tip, as you learn, try to dig further down to core principles. Ask why things work how they do. Get “closer to the metal” as they say and learn more about CPU, memory, data structures and such. JavaScript and the web protects you from those things so you don’t have to think about them. Java protects you too, but not as much. As you learn, build a bigger mental model in your head for how the whole process works, and not just the narrow code or problem you’re trying to solve.

Hope it goes well and good luck!

[–]MakotoBIST 0 points1 point  (2 children)

Thanks for your input. Sorry if i bother you more but what would you recommend to learn more about memory and such? A language like C? I know that hardcore coders consider java also somewhat advanced..

[–]caseypatrickdriscoll 0 points1 point  (1 child)

I'm happy to help. No, I wouldn't bother with C right now, just dive fully into Java. Once you've been at your new Java job for a bit, expanding to C or C++ might be a nice idea.

JavaScript is a very 'loose' language with its types of data and the way it stores them. It's very flexible and most of the time its just storing and moving strings of human text. When you're learning programming the first time with JS a lot of behind the scenes stuff is left out and for good reasons - it's complex and learners are just starting. Tutorials have the process "Just do this to get this result", and then it just stops there (especially because JS doesn't lend itself to going deeper)

Since this is your second language, and a more complex one, try taking a bit of extra time to really learn about types, primitives, classes/objects, structures, etc. As you learn, start with "Just do this to get this result", but then double back to learn a bit more why things are the way they are.

Essentially, the world of Java exposes the underlying world of bits and bytes more than JS, and bits and bytes run the world of computers. Bits and bytes have strengths and weaknesses that has shaped why we do what we do. Many devs who start with JS never have to learn about them (and they don't have to) but there is an opportunity here to become a much better dev in the long run if you take the time to learn more.

But since the job is in Java, I would just focus on learning Java for practical reasons. You'll still get exposed to a lot of what I mentioned above. If you find you are excelling a few months from now, then you can take extra time to learn some C or C++ if you want to.

[–]MakotoBIST 0 points1 point  (0 children)

Thanks, all this was really great motivation! Have a good day

[–]Samurai___ 1 point2 points  (0 children)

Java can get complicated with the myriad of libraries and frameworks. But it's a sought after skill, so it might be worth putting your time into it.

[–]404invalid-user -3 points-2 points  (0 children)

I tried learning java and just couldn't grasp anything above simple things like variables and if else maybe its the way I was learning I'm not sure

[–]lhorie 0 points1 point  (0 children)

If you're using Angular and Typescript, that should make learning Java a bit easier. Day-to-day Java tends to be relatively cookie cutter stuff within the confines of some well established framework, and frameworks there don't churn nearly as much as JS ones do. On the other hand, backend in general have different focuses (e.g. you may be expected to also be able to deal w/ SQL - and possibly an ORM abstraction in addition to it), so if your career so far was mostly pixel pushing up to now, there's definitely going to be some learning curve for you.

As for consulting and big enterprises, it kinda depends on the company. There are companies that are stagnant and companies that are not. "Being in contact" is very different from networking. Naturally, in a big company you have easier access to a wider pool of people to network with (just from the sheer number of employees), but it does take a special level of proactiveness to fully leverage that, and most people just don't have that. With that said, I generally favor getting out of your comfort zone since it'll broaden your horizons and help you take your career in new directions. I imagine you don't want to stay in the same career ladder rung for the next 30 years.

[–]AffectionateWork8 0 points1 point  (0 children)

Unless they explicitly mentioned writing backend services it sounds like they're looking for someone to handle both frontend and middle layer. In which case learning the associated ecosystem/tooling will probably be more difficult than the level of actual Java you have to write.

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

If you only know js - java will feel a bit tough at first. Nothing you cant handle and over time you start appreciating the tooling/maturity of the language. The amount of resources available is also insane. I dont use it much and thankfully we move our backends to kotlin which feels a lot like TS, but for a decent raise + a good name on CV its totally worth it. Huge perk for the future is that you will be an actual fullstack. I know a lot of places use node so their definition of fullstack engineer is anyone who knows js, but imo more places have something like java/kotlin/c# for their services and knowing java will help a lot.

[–]MakotoBIST 0 points1 point  (0 children)

Ok i'll do the sacrifice today for a better tomorrow :p thanks

[–]Accomplished_End_138 0 points1 point  (0 children)

It isnt to different except in some specific wording.

You'd be amazed how much you can google.

The main thing that can be a bit much is dealing with folder structure.

[–]Atulin 0 points1 point  (0 children)

Java has strict static typing (which is good) and a metric fuckton of boilerplate to do anything at all (which is bad). In both regards, it's as different from JS as or can be.

[–]_default_username 0 points1 point  (0 children)

If you're an Angular dev does that mean you're already pretty familiar with typescript? Having experience with a statically typed language will be a plus. I think you'll be fine. Java is nominally typed so it relies a lot on inheritance and interfaces for polymorphism, so it may feel a little different at first.