Random topic - One thing that I have been watching with my self is that after sometime without doing Clojure in a daily basis, I feel loosing my skills, and with that also the perspective of landing at another Clojure job. It'd be interesting to heard other perspectives about the topic, something that I believe is hitting others in the community.
What are the skills that you feel you're losing? Does it happen only with Clojure? Or all programming languages? Or maybe even anything?
Clojure specifically.
I certainly get this but with all languages, basically if I am not actively using it the knowledge kind of fades, I would say its actually worse with languages like JavaScript where the language is less well defined and the churn is so high. I generally work on something in my own time where I can keep my skills sharp with my preferred technology
totally, and I think that Clojure is the easier language to maintain in general, and it's a good thing.
Had the same issue with Golang, worked on it for several months, now that I abandoned it, I find I forgot many of the details, and the design decisions. I feel it depends much on how long you worked with it before "taking a break". I guess that working for several years (3+) with any language will make it so second nature that it will become very easy to get it back. This is obviously not considering library-related skills.
I think it's very common and it applies to anything learnable in life (programming languages, spoken languages, musical instruments, practice a sport...), even if fortunately restarting a second/third/etc time is never like starting from scratch the very first time. I was in this situation last year, l was after a Clojure position and had to keep my clj-hand-on in my own time. Can be really annoying in particular when life throws you something-else random and you don't have always time/mental-space to put career plans at the top.
It all seems to be a natural thing. In any case, here's my 2c, just in case. I used to work with C++, a lot, not sure for how long but definitely more than 3 years. Didn't quite make it as far as Sean Corfield did. :D But my experience went much farther than regular "just getting stuff done". I haven't seriously touched C++ in probably a decade and I can't remember a lot. I can probably read the vast majority of it (at least the syntax that was already there when I stopped using the language) but I wouldn't be able to write simple programs without getting blasted with compiler errors every 30 seconds. But C++ has a lot of syntax and a lot of intricate and somewhat opaque rules. Python (at least, 3.7 and earlier) doesn't all that, at least definitely not to such an extent. And while I haven't been using Python for anything serious for about 4 years now, it feels like I remember most of it. I'd definitely have to refresh my memory on metaclasses, some dunder methods, built-ins, Cython, etc. But I'm pretty confident I can just start writing in Python without too many issues. Clojure has even less syntax and opaque rules, and I can definitely feel that. It's much more comfortable to work with it and I don't think I'll forget anything truly important even if I don't use it for a decade. Comfortable to such an extent that just reading some code in e.g. Kotlin/Swift/Scala feels like talking to an extremely obnoxious and wordy person. :D
Yep, I feel that it’s mostly library stuff and some conventions around where and how to use records and protocols vs plain maps, stuff like that
To be honest, even after using Clojure in production for a dozen years, there are still things I have to look up and stuff I have to think hard about in terms of idioms (I still have to remind myself about transducers every week). Re: C++ -- yeah, I did that for most of a decade but it was back in the '90s and "modern" C++ is quite different in several areas. For quite a while after I left the committee, Andrew Koenig would reach out and keep me in the loop about the changes -- but I never got to program with any of those things so it would be a heck of a job ramping back up to C++ if I had to. Even Java would be a ramp up -- I haven't done "core" Java stuff in maybe 16 years or so -- and I would be just as rusty with Groovy or Scala, despite using them both in production for a while since I last used Java.
I had a coding exercise for a Java position a couple of years ago and I found a library for persistent data structures. And then I abused the hell out of it. Yesterday I understood that the code which I wrote back then was safer according to transaction-like constraints as there couldn't be any exposed partially updated state. It was not the intention from authors of the exercise because they simply wanted to know whether a coder knows how to write fetching logic and update a with new data. I code in Java way more differently than I was coding in it before because since I did Clojure seriously I don't want to go back to the old way. I think that this changes over time and this could only be regarded to as "pythonic way" or "the new language meta" of each language. I don't think that "best pattern for each language" is learnable because programmers choose to abuse a pattern throughout a project and then it changes over time according to style of programmers. It could be inheritance, singletons, abstract classes... or maybe functional code and persistent data structures.
Should I make a "staying sharp w/ clojure" channel on youtube so you can watch me work on my weekend project? 😅
A clojure workout:)
yeah, I agree with others… your familiarity fades regardless of the language or tools… I’ve got the opposite to OP, after 6 years of Clojure I feel like I’m barely crawling in JS!
@donavan is not knowing js really a tragedy? laughcry
@v1nc3ntpull1ng Yeah, I’d much rather be working in Clojure but I found myself abruptly unemployed at the wrong time so need to land another job sooner rather than later
I concur. I forget or at least drop into long term storage any aspects of Clojure I don't use regularly This is the main reason I started writing the http://practical.li books, there is no way I am going to remember all that can be done with Clojure.