Fork me on GitHub
#jobs-discuss
<
2023-02-13
>
vemv16:02:54

My best friend has planted in me the idea of trying Java 19 for my next gig. It certainly seems a far more exciting language than 10 years ago (when I last did any sort of project in it) I also think I'm also specifically attracted to a type system that doesn't have to be chosen/tweaked/negotiated - it's just there. And that doesn't seem to have much "Haskell envy". And of course I get to re-use misc JVM knowledge/tooling. My main question is how would you get a high-quality job/contract in it? I'd be a bit afraid of 0.75x'ing my income. Are there specific niches worth investing on? I'm thinking frameworks, architectures, industry sectors, maybe other aspects. I'm willing to invest some time e.g. creating valuable OSS contributions in the Java landscape. There are plenty of "friend" Java libs that are familiar to us Clojure developers :)

vemv16:02:54

of course I do already have an approximate idea of what specific things I'd like to pick / already have experience on. But I'd be super curious if someone has specific, recent experience in modern Java and its market.

Rupert (All Street)16:02:04

Whilst Java 19 is better than older versions, it's a still a pretty big departure from Clojure. Even with lambda's and streams Java 19 it's still a pretty verbose language. Much of the code relies on mutable objects. You can end up with codebases that are a mix of OO and functional. The type system is also very limited (e.g. What's the type signature for this object? {:a [1 2] :x "A" 3 4}). Clojure roles pay well, but there are probably some well paying Java roles out there too - particularly in financial companies like banks (data pipelines, big data, Spark, Kafka etc).

Mario Giampietri16:02:13

I used Java with "new stuff" on and off for a few years. Warning: the language might have interesting new bits which would make it more appealing, but no guarantee the colleagues you'll work with will welcome them, it really depends. Sometimes it was fine, sometimes it was swimming upstream, in both cases you'll stumble in nested webs of old and new constructs (check for nulls AND for optionals, to name one). YMMV, nevertheless I'd feel safer opting for a language which doesn't even offer the possibility to negotiate with people "shall we use new constructs?" (AKA, if Clojure is not an option, I'd rather go for Scala or Kotlin, even if I never used them professionally, I only toyed with Scala for a training a while ago)

vemv16:02:18

I'll try this thread not to deviate to a generic "java vs. clojure" debate, however, just for the record, I've considered some of those objections. e.g. > Much of the code relies on mutable objects. having used Ruby extensively I have observed that IMO local mutability is not substantially different from immutability. We clojurists also use misc forms of mutability here and there! And might even use a sql DB very liberally - very indistinguishably from 'imperative' projects > What's the type signature for this object? I very, very rarely have worked or even actively wanted heterogeneous maps in Clojure. For almost all "real world" maps, a s/map-of could be declared for them. > Warning: the language might have interesting new bits which would make it more appealing, but no guarantee the colleagues you'll work with will welcome them, it really depends. [...] I think this is a fair warning. I'd have to be extra picky if/when accepting a project. There are misc signals indicating that a team is worth joining.

jumar17:02:44

I would not consider switching from Clojure tp Java but that’s another thing :). I’m curious why you are afraid of lowering your income. I’d expect (and demand) the opposite

1
seancorfield18:02:27

I would say the main issue you'd face is finding a gig that is both green field Java and willing to use those latest language features -- because if it's an existing codebase, you're going to be dealing with a lot of pre-19 code (and the longer that codebase has existed, the more "old" language features you'll be dealing with). Even with greenfield Java, you still have to deal with the vast majority of Java devs being comfortable with "legacy" language approaches and tending to avoid new features for lack of knowledge. I went through this a bit with Java 8 because it was substantially better than previous releases (IMO) and I talked to Java devs at conferences and online and uptake of the new features was pretty slow in most companies, even on greenfield projects.

☝️ 3
👀 1
Martynas Maciulevičius19:02:58

I once was hired by a bank. The process went like this: 1. They asked me to do their exercise 2. I do it in Java 8 with all the latest features of that time 3. They gave me IBM Java 6 to work with 4. No git

😁 4
practicalli-johnny21:02:44

The are thousands of Java jobs out there, very easy to find. Most perm jobs seem to have a lower range than the Clojure jobs I have seen, unless you go for more architecture jobs but this would not include much coding (if any), so more work may be required to find a rate would be acceptable. Will be very hard to find a role that will advertise as wanting Java 19 features and as mentioned previously introducing those feature to an existing team (even for a greenfield project) will typically require buy in from the engineering team, manage and possibly even architecture / operations teams especially in larger organisations. Contracting may be easier to find a rate that is sought and possibly use the features of Java 19, although those contracts can be quiet short if value not quickly demonstrated. Very easily affected by company politics as well. As usually, a lot will depend n the type of market and industries searched for roles. It maybe easier to meet your requirement in more high risk roles, such as startups or bleeding edge projects in larger companies (e.g. finding niche projects at large financial organization) often the places that are using or considering Clojure, Scala, Haskell and other 'competitive edge' languages Of course this will also dramatically reduce the number of roles available and require more selling of the tech and yourself as a valuable approach to take. It's possible to do if you are willing to put the time and effort in and in no rush for a new job. Good luck.

🙏 2
marciol21:02:31

Hey, I got a job where modern java is allowed and I think that should be the case in most companies where microservices were in vogue, so that new services using the new JVM with all good new stuff are allowed (or should be). I'm not here because I want, but the lack of Clojure opportunities pushed me out here, and they don't asked me to code live or home assignments, so that is it!

🙏 2
marciol21:02:50

And just to remark we have several services that are already using the Java17. I will take the opportunity to ask if they are using Java 19. PS: I'm working for a company here in Brazil that is direct Nubank competitor, so sometimes I wonder if I would have success trying to push a bit of Clojure here.

emccue04:02:24

@U45T93RA6 just seeing this now - but if you are still interested in Java OSS HMU

gklijs11:02:39

Can't disagree with Sean. I'm still doing Java, and most of the work I'm doing has to be Java 8. Since it's a framework, and we don't want to push things. With Spring Boot 3, a lot of companies are likely to move to at least 17. But they probably stay there for quite some time. To get back to your post, personally I think the language is only a small fraction of the work. I would not restrict myself when looking for a job to a single language. Just compare opportunities and compare them. If you both like working with Clojure more, can get paid more, and there are interesting opportunities with companies that use Clojure, why look for a Java job? I could think of one reason, which would be to be more flexible in the long run. But is it worth it?

vemv15:02:52

> I would not restrict myself when looking for a job to a single language. I've had success with that strategy (first 100% ruby for a few years, then 100% clojure). Lately though I'm a bit more open. I've always liked the same 3 langs (clj, ruby, java) so it seems a fairly marketable thing that can open interesting doors occasionally. > But is it worth it? Yeah, the grass is always greener and all that. I have some specific reasons to feel slightly desilusioned with a few of my clj experiences. I feel Java could be a simpler, boring-in-a-good-way experience. The aforementioned friend works with Java 19 at Spotify, so I can see something like that working (vs. a legacy enterprisey thing). Another approach being to aim for Lead Dev / CTO within Clojure circles, so that I can simply ensure everything is reasonably aligned with my ideals. It's been a while since I last did that. But probably there's too much hassle associated to obtaining/keeping such a role.

👍 2
marciol15:02:02

I can relate @U45T93RA6 from myself or from experiences that I heard about. Every Clojure project is built in a specific way guided by a different set of ideas (ideology?), and there is also codebases that seems to be built from people that were doing Java with parenthesis.

🙂 2