Would you like to do an interview about it for my site PurelyFunctional.tv? I think your story could help others find their careers. Email me at [email protected] and we'll figure out the best way to do it. Thanks!
At the moment, I have a client outside of work (ReactJS stuff), and am negotiating a remote gig with a company in California.
I agree that exotic technologies give you a leg up.
My stance is also that, if you're pushing for remote, then by definition you need to justify why you're a better choice than your remote competition who may live in lower COL areas.
If you're remote, then why should someone pay you a high salary vs. paying a lower one to that bright guy in Romania, who can still live like a king?
That's where marketing, differentiation, and service come in. But these are just my guesses.
Everyone has a plan until they get punched in the face.
Companies will pay a premium to have someone in the same timezone who speaks the language fluently.
I took these two OCW courses: https://ocw.mit.edu/courses/electrical-engineering-and-compu...
https://ocw.mit.edu/courses/electrical-engineering-and-compu...
And worked my way through these two books: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...
https://www.amazon.com/Algorithms-Robert-Sedgewick-ebook/dp/...
I wrote out my solutions on a whiteboard or pen and paper before typing them into a computer.
Outside of A & DS, I spent some time on operating systems and networking in general. A little bit of probability, but no hardcore discrete math.
There are swaths of areas which I now cover at a slower pace as time allows; compilers, AI, etc.
that seems like an incredibly short amount of time given the content. But if true, congrats! and please let me know your secret!
At the time, they were:
https://www.amazon.com/Clojure-Programming-Chas-Emerick-eboo...
https://www.amazon.com/Joy-Clojure-Michael-Fogus/dp/16172914...
I then wrote a data processing app in Clojure; consuming financial data and finding patterns in it.
My suggestions are: 1) If this is your first time learning a functionally-oriented language, clear your mind from any kind of assumptions picked up from other languages.
2) Get a handle on the core tenets of functional programming: immutability, purity, composition, and functions as objects. If you know Javascript, then a lot of this stuff may already be familiar to you. JS is underrated in that department imo.
3) To me, writing programs with Clojure is akin to playing with Lego. You write your base functions, then higher-level functions which use those base functions, and so on. Functions all the way down.
4) Write something with it; it'll force you to decompose your program and think functionally.
Clojure is a simple, opinionated language. I don't think you'll have a hard time picking it up at all. The hard part will be to think in a manner amenable to it.
These days, I think Clojurescript has overtaken Clojure in terms of traction, so if you're into webdev, then CJS would be a natural next step.
I'm hoping to follow a similar trajectory to you, but with Elixir instead of closure. At the moment though, I tend to do things the other way around: write the top level functions and then fill out the base functions.
So I'd start a module with
def whatever(something), do: something |> function1 |> function2 |> function3
Then I'll write function1, 2, and 3 and whatever helper functions they need. And so on until it works. Maybe doing it your way is a better approach: helps you think it through first.
(although I'm aware some would say that tests should come before everything else anyway)
Which some others consider a cargo-cult practice if done mandatorily for it's own sake.
Good luck on your studies!
I have done some 40% of this book and so far I have thoroughly enjoyed reading and learning. Plus, the book is free to read online.
But at the time, all I knew was a bit of Python. And while I could've learned Java, I figured that being yet another Java programmer in the marketplace, but with no experience and a liberal arts degree, was probably going to get me nowhere.
So I decided I had to learn something emerging. Something where there was nascent demand but not much supply. I chose Clojure because it looked weird, and all these bright people were talking about how great it is. I invested a couple of months learning it deeply, open-sourcing my side projects, and blogging about it. I also spent that time learning non-programming fundamentals.
When I felt I was ready, I started reaching out to people in the community and companies on "Who's Hiring" threads mentioning Clojure. Within a couple of months, I landed my first full-time programming gig at an investment bank.
I know that if it wasn't for Clojure, I wouldn't be here today.