It’s a follow-up to this thread What do beginners struggle with?
This story wouldn’t be written without the great help of @PEZ - thank you very much!
I’m a 26-year-old female software engineer. I spent half a year in my current company, writing both Clojure and ClojureScript and fighting with React Native and Android. Before that, I spent 2 years learning half-time. My first job was a freelance project for a Canadian Company. I was using HTML, Sass, and touching pieces of Angular.js. Other than that, I used JavaScript and Python.
I decided to check out Clojure because I was learning JavaScript, struggling with all the quirks and I asked my partner (who was and still is a Clojure Developer) - “why didn’t you tell me to learn Clojure if it is so great?”. He said that it’s not a Junior-friendly language and that there are not many Junior-level resources or jobs out there. But I’ve decided to try it despite all that. I installed Visual Studio Code - I’ve heard that this is the best editor for Clojure, mostly because of the Calva integration.
My partner showed me Clojure Koans - I solved them with a little bit of his help. The first problem was of course learning to read LISP syntax because it was the very first time for me. Although it wasn’t as hard as I expected at the beginning. The parenthesis was also a problem. I used to (which is not good practice, but I was a noob) add parenthesis in JS while I was not absolutely sure about the sequence of actions (in for example math actions - in Clojure it’s clear, in JS you need to remember which one is stronger. Or in logical statements…) - so I added them in places, where I wanted to be sure it’s gonna be evaluated first. Now it’s very clear, but back then it was a bit confusing and caused a lot of mistakes. Then I keep asking “How can I change anything if data is immutable? It’s a crazy idea! Can I just make everything an atom please?” I’ve been struggling with this concept for a very long time, probably because of my previous experience with Python and Javascript.
Other things I’m struggling with in general:
- Shorthand functions - hard to catch for me
- Regex is still magic, but that’s not Clojure-specific
- Recursive functions were a horror for me, now it’s a bit better.
- Another hard thing is refactoring - deciding when it should be refactored and when it’s good enough. I have a huge problem with removing my code because every time I’m very proud of what I wrote.
I get most of the tips from my partner, but also from the Clojurians Meetups. The most important tip was to just start coding and learning in the meanwhile. I wanted to read 2-3 books first, but they encourage me to create projects and to learn by coding and reading documentation mostly.
AfterClojure Koans, I start using Clojure for real projects as everyone recommend - so I created a word-counter - an app for the terminal ([https://github.com/EwaTrzemzalska/word-counter]), and then check-weather ([https://github.com/EwaTrzemzalska/check-weather]) with the use of Weatherstack API, and a similar app for air-quality checking ([https://github.com/EwaTrzemzalska/air-quality]). I started reading “Clojure for Brave and True” (I never finished this book, which I’m ashamed of). I was also using clojuredocs.org very often.
I really like that Clojure is well-organized and that it has great and clear documentation. One of my favorite Clojure things is that most of the basic functions already exist, just waiting for me to be used. I like function-oriented programming and I feel like everything is less messy than JavaScript.
Later, I attended ClojureBridge in London, where I built my first Single Page app and it was my first contact with ClojureScript. Next, the pandemic started and it wasn’t the best moment to look for a Junior Clojure job - actually, it’s still very hard. I started a Nanodegree program at Udacity - Full Stack Web Developer in Python. I learned a lot and was about to start looking for a Python offer, but then I accidentally found a job posting for Mid ClojureScript Engineer, I applied and solved the recrutation task. It reminded me how much I like this language compared to Python. I did not get the job, but I switched to Clojure again, for good - I finally found my first full-time Clojure job shortly after, and now I’m learning the language every day. I’m reading “Learn Clojurescript”, and searching for functions for my project at clojuredocs. I’m working a little bit with my partner and he helps me big time, teaching me good practice and showing some solutions and paths - unfortunately, in my job, there isn’t anyone else except the usually-busy-with-other-stuff CEO, who knows the language, and I’m the most senior engineer despite being a complete newbie. But I guess we all have to start somewhere.
Thank you for reading that!