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 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 https://en.wikipedia.org/wiki/The_Secret_%28book%29 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.
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'?
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.
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.
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.
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.
@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.
Sure, I don't have anything against that notion!
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.
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 😐
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.
@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!
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👍
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👍
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.
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.