Fork me on GitHub
clement hamon09:04:01

Hi everyone, I’ve been playing a bit with Clojure for a while now, but not enough and not consistently enough to consider myself as a Clojure developer. So, I decided to do a professional break to spend 3 to 4 months to deep dive into Clojure and focus on finding a Clojure position after that. But it has a cost and I need to assess the chances of landing a Clojure position (probably remote). What do you guys think about this strategy? For those who made it through, how did you do it? How did it impact your finance? Thanks ;) Context: I am developer with 6+ years of XP in different technologies (PHP, Javascript back and front, Python, no Java :/)


If you're comfortable with the idea of working with clients directly, then assessing such changes becomes nearly impossible - many clients just don't have any stack preferences. But if anything, it definitely increases the chances of you ending up using Clojure. My Clojure experience is only relevant to working with clients directly, without being employed. If you're interested in that, I can tell more.


I would not do it. I dabbled with Clojure, and lately more with Rust. My day job is almost only Java, and sometimes Kotlin. Personally I think the language used is generally overrated. You need something to get the job done, and there are so many more aspects to being a developer than just the language. Why do you want to use Clojure for work so much? I can think of a lot of reasons, but none of them I would value enough to give up 3 month salary.


Couldn't disagree more, except for this part: "there are so many more aspects to being a developer than just the language" :)


idk, I also havent’ any working experience with Clojure, so don’t really know what I’m talking about. I fear having to work in a poorly documented and not specced Clojure codebase. I think it can be great, but that’s not always how it’s in practice.


Absolutely, that's why it's great to have either a decent amount of savings or a job while you hone your skills and look for good opportunities.

👍 1
clement hamon14:04:40

Great answers, thank you guys. I am actually working freelance, and usually the market want "specialists". As I've been jumping around languages and framework, I don't have a competitive advantage (on the paper for the HR team) than a Junior in Python let's say. So my goal was to focus on a particular stack, even if I'd rather not to.


If you want to stick to freelancing (and especially if you're already using some platform for that), look for platforms that do thorough screening of the freelancers. The competition there is greatly reduced compared to e.g. Upwork.

👍 1
clement hamon14:04:40

I have to admit that the only plateform I used so far is cocktail after meetups or afterworks 😉 It works pretty well, if you are not tied to a specific stack.


Yeah, it's rather good. IMO the best approach overall it so first find an application area where your interests lie, ideally something not related to programming. E.g. for me it's genetics. Then search for really companies that do that stuff, come up with a way to compare them, and start finding people that already work there. Try to find as direct contact as possible with them, and see if there are any job opportunities.

clement hamon14:04:57

Clearly, the "domain" approach of specialization is interesting too.

👍 1

It's more fulfilling just because you do different stuff, and that prevent burning out. And it's more rewarding in monetary sense, because there are a lot of software engineers and (probably) a lot of domain specialists. But not so many people that have some experience in both. The only downside that I can think of is that it might be a bit harder to prove to some particular client that they need you, because they might think that domain experts can do all the required programming. And sometimes they're right! But not always.


I sometimes wonder if such expertise is really a hard requirement. Clojure is a little language that allows you to accomplish a lot just after a week working full time with it. I think that it's more important to know if the applicant has previous experience with software development, and if they have some familiarity with dynamic languages, such Javascript, Ruby or Python, in a way to avoid the possible shock from someone that are used to see types everywhere.

☝️ 2

@U2FRKM4TW to even be able following some of your advice, one would either have to be extremely lucky or extremely disciplined, maybe both


I just find such approaches that expect above and beyond what is available for most people, unreasonable


I am saying this because I mostly agree with what you said 🙂. Almost completely.


It's hard for me to gauge luck. But where does what I describe require extreme discipline?


Specifically, having a life (usual requirements), having a job where you need to learn a lot just to stay in the game, and then besides all that try to learn Clojure. It narrows down who can do it very much.


I feel that there are lots of clojure programmers who come from a background where everyone is mostly lucky by everyone else's standards, so either work is easier, or life is easier, and then learning Clojure is just a past time.


I say "feel" because obviously there are counterexamples, and that's where I assume discipline or luck matters more, and obviously I have zero oversight of the actual background of people, I am deducing it from my relatively extensive experience IRL with people.


Maybe it is extreme luck, but at absolutely all my office jobs, there was at least an hour that you could spend working on inner tools, just to improve your own and/or your team's workflow. I found it to be the perfect time to learn new stuff. Regarding Clojure - I just took a hiatus after quitting one job, and then after some time learning it, used Clojure in a test task for a position that didn't even ask for Clojure. :)


If you come from Java, one hour of Clojure might be enough. If you come from PHP or Javascript, one hour/day will take you an order of magnitude more time to learn.


If you come from an academic background, that too helps 😉 Lots of people learn programming from speed courses.


If you have a modicum of time and enough interest, you can absolutely do it. I don't have an academic background - I don't even have a degree of any kind, just high school. Not to brag, but I've learned C++ to a degree that surprised recruiting agencies, all by myself - just by gradually going through Andrei Alexandrescu and Herb Sutter works, and reading Qt documentation. All while I had 10-12 hour work days, 6 days a week. :) Started using C++ for work, and after a couple of years started learning Python in a similar way, although mostly by using the official documentation, and with much better working hours. Even before using Python for work, started learning Clojure. Along with that, started undergoing courses in genetics, as I described above. Used both Python and ClojureScript for work, now mostly using Clojure+ClojureScript. The absence of any degree whatsoever hasn't stopped me from finding nice people from a local genetics institute, and I've been working with them for almost 5 years now. All just because I spend some time every day learning new stuff. Not just by reading a random article here and there, but by actually making notes and experimenting where possible.

👏 1
👌 1

yeah, this starts like any failure to accomplish the goals set out by others is purely attributed to lack of 'modicum of time and enough interest'


I did similar 12-16 workdays/weeks about 3 times in my life and I consider myself lucky that I had the circumstances so I could focus so much time on work, either because I was not responsible for others at the time, or because others were helping actively


neither of those experiences are in any way pleasant and I don't think it's appropriate to expect anyone to follow our example


Not sure what you mean exactly with the book reference, given that I haven't read it, but that's indeed my personal observation. - I can't do anything, I just don't have enough time. - Do you have an hour a day? Half an hour a day? - ...yes. - Have you tried doing something what you say you want to do in that hour, every day if possible? - No.


I am shocked right now that you wrote an imaginary dialog.


It's not an imaginary one. It's almost a literal recreation of dozens of dialogs on the topic that I personally had. It usually continues with me asking "why" and then hearing improvised excuses. :)


Do you assume that you and I are talking about the same people?


Seemed like it. So, aren't we trying to generalize what would be an overall acceptable experience of being introduced to Clojure, independent of background and circumstances?


No. I'm conveying my own opinions and experience, nothing more.

clement hamon14:04:25

I can think in 3 differents strategies to achieve something in general: 1. you have a clear vision of what your goal is and you are ready to put all your energy to achieve it, fail and retry until succes (becoming a Clojure developer for example) 2. you have a broad idea of what you want (be an happy developer), you are ready to adapt along the way depending of the events. You gather info, resources and come up with a plan (I am here) 3. leave it all to chances (you are an unhappy developer and waiting that something good happens to you).


I’ve thought about this a bit. The path I’m taking is: Learn Clojure on my own time and bring lessons learned to my day job (JS/React). If I get Clojure work in the future that’s great, if not there’s a good supply of React work out there. This does depend on having free time but I have found there’s a lot of principles that are transferable, so it’s worth it.


> No. I'm conveying my own opinions and experience, nothing more. I find this attitude troublesome. You could say anything and if anyone disagrees, just say 'well, this is my opinion, deal with it or ignore me'?


@UTN5ZSWUR I learned Clojure after mostly PHP experience, so it has been done. I have no comp-sci degree or anything related (went to a business school, of all things). But I’ve been building websites since I was 13 or so, a lot of various experiences, ranging from Flash animation (back in early ’00 days when it was still Macromedia), through HTML, basic design, etc etc. As with anything, when learning something new, an “I CAN DO THIS” attitude is essential. I can’t recall a situation where somebody has made significant progress in a reasonable amount of time without it. I would not quit a day job unless you’re comfortable financially or you’re OK with higher levels of risk. The latter is very subjective and varies much across people. You know your own tolerance and level of preparation, both financially and psychologically. Use proper judgement. In my personal opinion, most people skew towards WAY too little risk, but that can be a hard pill to swallow in the heat of the moment. You can make the time to learn while still having a job. Assuming you’re working standard 8 hour day, there’s weekends, nights, etc unless you have a lot of other commitments. If you have other commitments (family, etc), communicate clearly you’re doing this and you’ll be less available over those N-months. Those can be the hardest conversations to have, possibly even harder than the actual learning. Don’t expect to just receive buy-in. You need to earn it. Be respectful. Good luck!