Job hunting, interview process and anything related to the experience of a job writing the Clojure language.
clement hamon 2021-04-15T09:44:01.027800Z

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 :/)

Aron 2021-04-16T07:00:26.032700Z

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.

Aron 2021-04-16T07:01:51.032900Z

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.

p-himik 2021-04-16T07:04:21.033100Z

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. :)

Aron 2021-04-16T07:05:42.033300Z

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.

Aron 2021-04-16T07:05:57.033500Z

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

p-himik 2021-04-16T07:16:11.033800Z

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.

Aron 2021-04-16T08:07:49.034100Z

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'

Aron 2021-04-16T08:10:05.034500Z

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

Aron 2021-04-16T08:12:07.034700Z

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

p-himik 2021-04-16T08:12:12.034900Z

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.

Aron 2021-04-16T08:15:39.035100Z

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

p-himik 2021-04-16T08:17:05.035300Z

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. :)

Aron 2021-04-16T11:46:57.035600Z

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

p-himik 2021-04-16T11:50:45.035800Z


Aron 2021-04-16T11:57:23.036Z

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?

p-himik 2021-04-16T11:58:53.036200Z

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

clement hamon 2021-04-16T14:07:25.036400Z

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).

philb 2021-04-16T15:24:37.037Z

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.

Aron 2021-04-17T07:46:45.037200Z

> 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'?

seancorfield 2021-04-17T19:15:35.047400Z

FWIW, I find myself agreeing with @ashnur here and I think @p-himik’s approach reflects a degree of privilege that isn’t available to a lot of people. We need to remember that as software engineers we already live quite a privileged life, compared to a lot of people, especially if software is anything close to a passion of ours. I have seen enough people struggle with trying to learn things on their own, while holding down a full-time job and juggling family responsibilities, to accept that some people literally do not have even half an hour a day to dedicate to additional learning — or even if they have an hour, they’re simply too exhausted by everything else that just need that hour just to relax and not have to “think”/work too much.

seancorfield 2021-04-17T19:18:19.047600Z

I consider myself extremely lucky and extremely privileged to have the career I have, at this point, and to have had the freedom to learn new tech multiple times throughout nearly 40 years as a professional software developer. Several of my early jobs that helped me gain a broad range of otherwise “specialist” knowledge came about in part or wholly because of “people I knew” and not just hard work on my part.

p-himik 2021-04-17T19:19:06.047800Z

I was specifically not talking about such people. I'll try to be more clear. Initially I wrote: "If you have a modicum of time [...]". "Having an hour while being too exhausted and having to use that hour for some rest" is not "having an hour". Free time is free - it's not the one where you have to rest.

seancorfield 2021-04-17T19:19:29.048Z

I’m also very lucky to be working somewhere that provides a lot of autonomy for staff to learn on company time and to experiment with things and, in my case, allows some amount of time each week for me to work on open source software.

seancorfield 2021-04-17T19:19:55.048200Z

@p-himik Right, and I understand that. I’m just trying to point out that “having time” is a luxury not available to a lot of people.

p-himik 2021-04-17T19:20:53.048400Z

Sure, I don't have anything against that notion!

seancorfield 2021-04-17T19:22:04.048600Z

For several years, I worked closely with a lot of ColdFusion devs (because I worked at Macromedia for six years and Adobe for a year) and many of them were self-taught back in the HTML days and so they had “just enough skill” to use CFML but they were often in situations where they didn’t have time — either at work or at home — to invest the time and effort necessary to learn more complex tech, that would enable them to move on to non-CFML jobs.

seancorfield 2021-04-17T19:23:54.048800Z

I initially would say “oh c’mon! you must have some time each week that you could learn new tech?” but I came to realize that a) many did not and b) many didn’t have the network of people to learn from. Many, being non-comp/sci folks, didn’t have the skills/background to pick up new tech without mentoring/training 😐

p-himik 2021-04-17T19:28:10.049Z

Yeah, it's definitely an unpleasant situation to be in, and I don't think there's a one-size-fits-all solution to it.

raspasov 2021-04-17T23:51:28.049300Z

@clementhamon 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!

p-himik 2021-04-15T09:55:13.028100Z

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.

gklijs 2021-04-15T11:32:52.028500Z

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.

p-himik 2021-04-15T11:42:06.028700Z

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

gklijs 2021-04-15T12:01:22.028900Z

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.

p-himik 2021-04-15T12:03:38.029100Z

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.

clement hamon 2021-04-15T14:09:40.029400Z

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.

p-himik 2021-04-15T14:13:25.029600Z

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.

clement hamon 2021-04-15T14:19:40.029900Z

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.

p-himik 2021-04-15T14:24:17.030100Z

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 hamon 2021-04-15T14:31:57.030300Z

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

p-himik 2021-04-15T14:40:25.030500Z

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.

marciol 2021-04-15T17:35:45.030800Z

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.