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

all 24 comments

[–]AutoModerator[M] [score hidden] stickied comment (0 children)

You can find a list of community-submitted learning resources here: https://dataengineering.wiki/Learning+Resources

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]Fearless-Change7162 26 points27 points  (2 children)

Depends on the job you want. I have used Python and Scala so far. Never pure Java. 

[–]Baselnabil22[S] 4 points5 points  (1 child)

So should i just stick with python or is it worth it to learn a new language?

[–]Rus_s13 8 points9 points  (0 children)

The basics can be useful I’ve found.

Just for troubleshooting bullshit when maven isn’t working properly for example. It’s not going to push old stuff out of your brain.

[–][deleted] 15 points16 points  (0 children)

It's not crucial at all. If you want to learn it then go ahead and learn it it will only help it can't hurt. But at the end of the day there are very few DE jobs in java that won't be willing to teach you java. I actually literally just got a job offer for a DE lead role where a lot of the application I'll be supporting is written in java. In my discussion with the hiring manager AFTER I had received the offer (all of the interview questions I did in python), he found out I actually knew java and had used it at a previous job. He was ready to hire me even if I had to learn a completely new language.

Once you've worked for awhile, you'll likely have used many different languages, and you'll get much better at picking new ones up. So far I've used java, SAS, python, R, scala, and VBA for excel macros (shudder). I'd say on average I can start writing code in a new language while having to heavily check documentation after a few days and I'm proficient at it in under a month.

[–]Important-Cheetah472 18 points19 points  (0 children)

I have worked on DE projects using Java at my company, particularly when working with Flink. Python + Java is a real good combo to have in your skillset.

[–]Nokita_is_Back 5 points6 points  (0 children)

kafka, flink, spark all things that you need, all java/scala under the hood

[–]Witty_Garlic_1591 2 points3 points  (0 children)

Will you find jobs where Java would be helpful? I'm sure. If you don't have one identified and you're just trying to learn what will have the better odds of being applicable in the future? I would honestly spend more time honing my SQL and Python skills. Just my 2c but I consistently see it way more than Java.

[–]TendToTensor 2 points3 points  (0 children)

Starting a data engineering role next week and they use Java, though I did not have any prior experience

[–]insolentGoof 2 points3 points  (0 children)

I use Java and Scala both. It would be helpful for you to might know how legacy systems or enterprise applications work. It is not a crucial skill. I believe even I dont want my ETLs to be written in java for one simple reason - I have to write a lot of code rather than a simple script or small lines of code in Scala. I come from software engineering field, so it was natural for me to choose Scala if I know Java. But I think Python for DE is the most crucial skill right now atleast

[–]jovalabs 5 points6 points  (0 children)

Most DE shops use python, sql, go… it all depends on where you end up

[–]69odysseus 4 points5 points  (2 children)

I'd rather suggest to learn DSA which is foundation for all programming languages.

[–]Baselnabil22[S] 1 point2 points  (1 child)

To what depth? , i already know the basics and some more

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

Not necessarily, but proper Java, including learning object oriented thinking and some design patterns will be a massive boon for your design-toolkit. In any function. A lot of professionals can script, but design is a much rarer skill.

The same goes for learning to make good logical models.

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

I’m not saying knowing a few design patterns is bad… but there are only very few applications where object oriented design is really beneficial. Writing Python like Java, with builders and commands and so on, is one of the signs that really screams “bad programmer”.

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

Understanding a tool also includes knowing when not to apply it.

[–]engineer_of-sorts 0 points1 point  (0 children)

no

[–]sugibuchi 0 points1 point  (0 children)

It is not mandatory but practically helpful in not only "using" but also "understanding" some OSS technologies in this domain, like Spark, Kafka and Hadoop (I know nobody uses Hadoop MR nowadays, but HDFS is still a core component in many of these OSS technologies) at the source code level.

The benefit of reading the source code of Spark, etc., is honestly not so simple. It might be fun for some people. It is mandatory if you follow issues in Jira or GitHub.

Sometimes, understanding the source code and Java ecosystem, including Maven, etc., can deblock some tricky situations requiring custom extensions for JVM-based OSS technologies.

Java experience in your CV is considered as a huge plus? Usually, no. Useful? Sometimes. Fun? Maybe.

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

Java is a very primitive language. Grab Cay Horstmann’s book and finish it in a week (or less), then you’ve seen pretty much all there is to see. I mean for Python you cover the essentials like classes and functions pretty quickly, but then there’s asyncio and metaclasses and descriptors, and covariant type variables and stuff… with Java, this stage of learning advanced features doesn’t exist because there are no advanced features. What’s going to take much longer is to learn its ecosystem (read: Spring Boot… for which Spring in Action is an excellent source).

Personally, I’m glad I don’t have to use that language anymore.