Fork me on GitHub
#jobs-discuss
<
2024-03-29
>
gchape10:03:15

So, I am thinking about to make transition from Java to Clojure as a Computer Science major but ofc, the motivation is to actually land a job after I graduate... What role does Clojure play in the current software/academic space? Do you believe that devoting a significant amount of time to learning a new language, such as Clojure, is a wise decision, not only philosophically but also pragmatically (finding a job)? Will Clojure be adopted by more companies in the future?

p-himik10:03:58

Depends on what "significant amount of time" means. Clojure-the-language is rather small. Took me about a week of just reading the official docs and the sources of clojure.core and experimenting till I was comfortable with it enough to use it for a take-home assignment I had at the time. But knowing at least some parts of Java is also sometimes helpful when writing in Clojure, so learning Java isn't a waste of time even if you end up working only with Clojure. Landing a job right after graduation is tough regardless of the language and it's hard, if not impossible, to gauge correctly without a proper study that's done among companies that you'd be willing to work for (the industry, the location) and that use the languages that you're interested in (no sense is seeing what a PHP shop wants when you'll never touch PHP). As you can surely guess, there have been plenty of similar questions before, and you can probably find some in this or some other channels. Different people suggest different things. To me, learning Clojure doesn't seem like a waste of time even if you end up using something else for your job. Learning Clojure and learning Java after it might even be faster at landing you a job than learning just Java. Although some people have reported companies that deem knowing Clojure as a downside, but those are probably outliers.

p-himik10:03:49

Oh, and in case you already have some specific vision for what you actually want to do that's more specific than just "earn money by writing code", then it probably makes sense to work towards that vision. If you have a specific industry in mind, quite a few languages might have some existing libraries that are built specifically for that industry. Same with particular engineering aspects - queues, databases, physics engines, whatever - a lot of languages have something to offer in a lot of such areas. If you have something more or less concrete in mind, the language choice matters very little because you'll end up learning at least superficially half a dozen of languages anyway.

gchape11:03:31

Thanks for the reply! If not impossible? How do you make it possible? I think knowledge and hard work can do it. As for vision, I just like building software no matter what, but Java, for example, is a burden in some cases, and with that much sugar, I sometimes shift from the problem domain, so that is why I like Fp languages, of which Clojure is the most pragmatic, IMO.

p-himik11:03:16

Liking building software is much better than only liking getting money for it. :) At least, when it comes to intrinsic and apparent motivation. > Java, for example, is a burden in some cases, and with that much sugar, I sometimes shift from the problem domain That is exactly my experience and why I've stuck to Clojure for the past years, after a few other languages. > How do you make it possible? The probability here is always in the (0, 1) range, it's already possible. You can't make it certain, but you can maximize the probability. A full maximization requires a lot of information that's hard to gather, if possible at all. But it creates a so called opportunity cost - spending time and effort to gather and analyze that information will actually reduce the probability of getting a good job (unless that job is about gathering and analyzing such information). A... "reasonable" maximization, for a lack of a better term in my vocabulary, can be done and some of its parts can potentially improve other aspects of your life as well. But it's hard to give any concrete and objectively useful advice without delving into the details of your particular case. Except for, maybe, the most generic advice: think of every problem that you might encounter (e.g. getting hired), split it into parts that require different approaches (e.g. your CV being screened by some AI, being read by HR, being read by an SWE, talking with HR, talking with an SWE, solving a take-home task, reviewing some of your existing code, and so on), and improve what you reasonably can when it comes to those approaches (come up with what a good and honest CV should look like, spend some time bridging the gap between your current self and what that good CV should have, while taking all those aspects into account, solve problems relevant to what you think you'll end up doing, publish the solutions publicly so that you can later refer to them when talking to some SWEs interviewing you, and so on).

p-himik11:03:18

Of course, you should also take into account the fact that being hired is not all there is to it. It might be the first step in your career, but it also might not be a step at all. Some become independent contractors right out of the gate, some build a product and monetize it in some way (selling the product itself to business or individuals, selling support/consultation/cloud services, etc.), some build products that they can use themselves to earn money via some other means (trading comes first to mind, although no idea how feasible it is in the modern day and age). Maybe there are other alternatives I'm not aware of.

❤️ 1
mpenet14:03:42

Imo the language has little importance unless you're aiming at a particular job. You usually get hired for know-how/experience in some specific field, then the languages come into play as next criteria

mpenet14:03:49

then you're more likely to find jobs asking for java/go/python/js etc than clojure. It really all depends on what are your longer term aims. Regardless, mastering at least one language initially is a good thing to experiment, improve in your main area of expertise, and that choice really depends on your aims again. Clojure is a good all-rounder, you get jvm ecosystem access, good data-eng tooling, good front-end solutions as well

p-himik15:03:11

> you're more likely to find jobs asking for java/go/python/js etc than clojure True, but that also makes the competition higher. Kinda similar to the efficient market hypothesis. :)

mpenet15:03:26

yes, I guess there's no perfect answer to this. Personally I would pick something super mainstream to complement clojure, could be js/typescript or go. At least you have chips on both areas

mpenet15:03:06

I guess if you went though uni you probably have some experience with some language that makes the choice easier

❤️ 1
ambrosebs21:03:24

@U06S091BC3S regarding whether it's worth learning X or Y language: a good foundation in programming language theory could boost your confidence/agility in learning new languages thus employability. perhaps look for courses on interpreters/compilers/parsers/types while you're at uni. you could even do them in Clojure.

❤️ 1
Daniel Craig13:03:18

Just learn JavaScript or Java along with Clojure and you’ll have a back up plan. Loving your programming language doesn’t guarantee that you’ll love your workplace so it’s best to have some portable skills

1
Daniel Craig13:03:00

Not to say that clojure skills aren’t portable, but the value of clojure skills isn’t always obvious to non-clojurists who are hiring

Mario G18:03:32

> Will Clojure be adopted by more companies in the future? I don't think so, more likely to remain a niche as is today (strictly a personal opinion, very happy if I'll be proven wrong). I don't deny that the reduced pool of options as a candidate can be frustrating. Still, taking out the favourite-but-niche-lang option there's a risk of finding yourself 10/15 years later despising so much other languages to either go for a better one (like Clojure) or give up coding altogether. If you are serious about Clojure, there's an interesting side effect: you can initially work with Clojure/Script without being a wiz at the underlying runtime, but on the long run there's no way around reaching Clojure/Script mastery without a solid grip on the host environment and related languages (Java, JS). And that level of mastery is going to make you valuable with or without Clojure. In general if you're a good developer, you're going to be able to work with more languages, and less crappy workplaces would be able to understand you're a good hire anyway. Best of luck with your decisions. For the sake of a fulfilling life I hope you keep following the intellectual curiosity that pushes you investigating what the heck is Clojure (and if the outcome will be not Clojure but something else, it will be fine as well).

kennytilton13:04:16

Follow your heart. You like coding, Java gets in your way--Bingo! You need a Lisp. Clojure has the most jobs. btw, Go to meet-ups if you can, and if they have survived the jobs crash.

Hukka05:04:03

I browsed through, didn't read every word. But my thoughts when hiring reflect my personal values: I'd like to see a programmer know more than one language. More than three, really. And I'd like them to be conscious choices. If I see a resume that has just one language (or one backend + JS/TS) I'm thinking that the person simply knows what the courses had, and never gave it any thought. Also whatever the reason for knowing more than one, you'd then have a wider perspective on different ways to work on problems. And it gives me hope that the person has learned to learn, so is capable of handling novel situations, not just following directions.