Frustrated, tired and a bit lost.

I'm a "Senior PHP Backend Dev", which includes not the greatest tech stack nor the best job title, but it pays fine, and the company is awesome to work for.

I suck at writing features, but I'm great at bitching, and I easily put complex abstract concepts into usable models. So I'm also QA, tester, tech lead, database architect, whatever.

That makes writing PHP less annoying, because I create the rules, and whip devs around when they forget a return type definition or forget to handle an edge case. But I don't write a lot of code anymore, I mostly read (bad) code.

Lately I REALLY feel like doing something else... problem is that I know JS/ES6, but really dislike React/Vue and the whole crappy modern frontend toolchainchootrain of babelifyingwebpackingyarnballs. I know Python/Tensorflow/etc, but don't feel like I want to go into data science or AI. And then I'm awesome at the shit no one uses, like Haskell, Go and Rust (and worse).

I got a job offer which combines a very interesting PHP codebase with a Java infrastructure, where I could learn a lot... and I'm kind of tempted.

Problem is, everyone always shits on Java. I always made a bit of fun of Java myself. Don't even know exactly why, probably some really cruel instinct which causes kids to bully the least popular kid.

I know the basics, I've written the hello world, and a small backend app for a personal project. I know how strict and verbose it can be. I love the strictness in Haskell and Rust.... but those are both also quite terse.

Should I become a Java dev? I'm not talking about Android SDK, but an insane enterprise codebase at a life sciences corporation.

To the pro Java devs: What are the best and worst things about your job, about the weekly processes, about the toolchains? Have you ever considered other languages? Do you unconditionally love and believe in Java, or do you believe Swift, Kotlin, Scala or whatever will eventually make it completely obsolete?

Will Java hasten my decline into the cynical neckbeard I was always destined to be?

There are a lot more fun langauges, but looking at realistic demand and career value...

  • 5
    I work in a hi-tech company which will be around for a long time. We have a rule that every new service has to be written in Java, unless you have good reasons for a different stack. I’m sure we are not alone with this decision. There must be millions of Java services running 24/7, and therefore I doubt Java will become obsolete in a very long time.
  • 3
    Bump. I'm primarily a Python dev but wonder how the job market is for Java.
  • 2
  • 5
    Java is one of the most used language for all kinds of applications. If it becomes obsolete, that will take a long time.

    I'm personally working with it occasionally. I'm not too fond of it, but it's okay.

    The main thing I don't like about Java is, that many things feel overly complicated compared to other languages and you type ridiculously long method names (because they are chained a lot, e. g. 'myCar.Breaks.get(0).status.isLocked()') The latter is bearable with a good IDE, though.

    It's not a pretty language imo, but it's solid, it's widely supported and you can do nearly anything with it.
    It definitely beats PHP in the number of use cases.

    I would recommend you to go for it, if you don't mind learning another language. I guess it would also help your career to have experience with different languages and eco systems.
  • 4
    As someone that has worked as a pro Java dev before: Go for it. Just be mindful that certain aspects might catch you by surprise and that what might seem as something simple turns into an over engineered mess if you let it. The JVM is great and the vast array of languages that run on top of it are great. Java gets new shit on every release (it made lambdas popular, by not having them) and the language fits in a lot of different use cases, backend, mobile, enterprise, games you name it, Java has it. But yeah, it is fucking verbose and if you work with a Spring codebase it might annoy you a little bit since doing easy stuff in say RoR is a lot of work on Spring MVC and so forth. Oh and the Android api sucks btw.
  • 3
    @theCalcaholic this is so much true!
  • 4
    Embrace Java and try to take a shot at Kotlin. Thank me later 😏
  • 3
    JavaScript has Babel, Webpack, Yarn and Balls.

    Quite informative, thanks!
  • 4
    Being a java dev, Kotlin is the new python for us.
  • 3
    @zshh @theCalcaholic @AleCx04 @alandemaria @hash-table @htlr

    Thanks for the opinions & advice! I think I might do a quick Java course to get a feel for it again, play around with Kotlin, and then decide where to move.
  • 2
    Not sure where you reside but where I live almost every single job posting lists Java as the first requirement.
  • 1
    @katbreitin Python is absolute number one here, with plenty of PHP, Java (mostly Android), Swift/ObjC and JS (Either NodeJS or React) positions. Not many C# jobs, not much Go or Ruby either.

    I often see things like C, Erlang and Scala as extra requirements on top of Java, and a surprising amount of Delphi and Fortran.
  • 2

    I think a language either needs to be entrenched deeply for historical reasons (all our old code is PHP/Java/C++, so all our new code is as well, even if it's not the best language for the job), or have substantial company backing (C#, Swift, Kotlin, Go) to stay stable in the long run. And each company gets to pick one baby.

    Go, Ruby, and especially Rust, will balance on the edge for a long time. Dart? Coffeescript? Already forgotten about it. Elixir, Elm? Fucking awesome, but my hopes are not high.

    Not to say that you shouldn't learn exotic or daring languages, but I wouldn't bet my career by investing ALL my time in Crystal or Julia.
  • 2
    @bittersweet Agreed. As beneficial as it can be to *learn* exotic languages as dangerous can it be to a career to haven't worked with anything else for an extended time.
  • 1
    @bittersweet I have to admit that I always think of you as someone special with your Haskell background.
    Java would be too simple for you now 😄
  • 2
    @Noob From Haskell you can take a lot of neat little tricks to other languages.

    I rarely use arrays or loops anymore, I tend to use objects with fluent methods such as map, reduce and zipWith.

    But PHP has limitations, most notably the absence of a type system which can handle monads & ADTs.

    I suspect Java (and Kotlin to a greater extent), would give me greater satisfaction in that regard.
  • 2
    @bittersweet Oh definitely! Java has a deep OOP architecture. Not as exaggerated as Ruby but still a very OOP based language.

    Can you give an example of how you avoid arrays and loops? I love to learn, especially if it's something that intriguing! :)
  • 2
    @Noob Using a class with an items array, and chainable methods which take closures. I first wrote my own libraries for that, but quickly discovered the (Laravel / Illuminate) Collection package. It can be used standalone as well, and solves all the problems with PHP array methods.
  • 0
    @Bitwise I'm pretty sure about transitioning from PHP to something else in the next 5 years.

    I've given it some more thought as well, and might try to push for it within my current company. Some stuff needs to be rewritten as APIs, split off from the main platform — might as well do it in a different language. We have some Android devs who'd love to diversify as well, so I think Java/Kotlin might be a good pick in terms of existing dev skills.
  • 0

    Learn Go.

    I think it will be "semi exotic" for a long time, but if you are intermediate in any other language, you can learn the basics of Go in two or three days. And there are only basics, there is not really an advanced Go, or a "10 tricks senior Go devs use they don't want you to know about".

    The language has a very low skill ceiling, but has incredible utility value and executes very fast.
Add Comment