5 ms·
Clojure. Before learning Clojure, I didn't even have a career. I just wanted to get into software development. But at the time, all I knew was a bit of Python.
by votr 10y ago
Clojure. Before learning Clojure, I didn't even have a career. I just wanted to get into software development.
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.
- heyts 10y agoI'm very interested in learning Clojure. Would you care to share more of your experience learning the language in terms of learning curve, useful libraries or just general tips. I'm sure that would benefit the community at large.
- votr 10y agoI approached learning Clojure the way I approach learning everything else. I survey the resources available, then pick the two best books. Ideally, I want them to come at it from different perspectives. e.g. one may place an emphasis on doing stuff with Clojure while another may be more about functional programming. At the time, they were: https://www.amazon.com/Clojure-Programming-Chas-Emerick-ebook/dp/B007Q4T040/ref=sr_1_1?s=books&ie=UTF8&qid=1477404159&sr=1-1&keywords=clojure+programming https://www.amazon.com/Clojure-Programming-Chas-Emerick-eboo... https://www.amazon.com/Joy-Clojure-Michael-Fogus/dp/1617291412/ref=sr_1_5?s=books&ie=UTF8&qid=1477404159&sr=1-5&keywords=clojure+programming 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.
- Veen 10y ago> You write your base functions, then higher-level functions which use those base functions, and so on. Functions all the way down. 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)
- bpicolo 10y agoIt is useful and necessary to use both directions at times. You can't always presuppose the relevant details. But do be ready to factor away functions at a moments notice
- fsloth 10y ago"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!
- happyslobro 10y agoWhere did you get this financial data for your first project? Is it a public feed / API? This sounds like exactly the sort of thing that I would like to start playing and eventually working with. I had been assuming that this type of data would only be available to the kind of entities that have a compliance officer, but I would love to have that assumption proven wrong.
- avinassh 10y agoI would recommend Clojure for the Brave and True - [0] 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. [0] - http://www.braveclojure.com http://www.braveclojure.com
- slinger 10y agoAwesome story! I'm interested in hear more about the time you spent learning non-programming fundamentals. Would you care to elaborate?
- votr 10y agoI'd say non-programming fundamentals took about two months at about 4-6 hours a day, with the majority of that dedicated to algorithms and data structures. I took these two OCW courses: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/ https://ocw.mit.edu/courses/electrical-engineering-and-compu... https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2015/lecture-videos/ 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/dp/1848000693 https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena... https://www.amazon.com/Algorithms-Robert-Sedgewick-ebook/dp/B004P8J1NA/ref=sr_1_1?s=books&ie=UTF8&qid=1477403357&sr=1-1&keywords=algorithms+princeton 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.
- fsloth 10y agoWhat makes you categorize algorithms as non-programming? Isn't it like saying rhythm and melody are non-musical concepts?
- mpwoz 10y agoNot OP, but maybe "coding" is a better term: they are language-agnostic fundamentals that don't change as quickly as the tools and frameworks we use daily as "programmers"
- slinger 10y ago
- jnbiche 10y agoAre you employed remotely? Someone asked a question on Ask HN a few days back about whether learning a less common language made remote work more feasible. So this is kind of a follow-up to that question.
- votr 10y agoNope. Still commuting. But becoming remote is my number one goal. 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.
- byoung2 10y agoIf 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? Companies will pay a premium to have someone in the same timezone who speaks the language fluently.
- brianwawok 10y agoHave you ever worked with a guy from Romania?
- Ocerge 10y agoI agree :). Clojure re-invigorated my love for programming after years of working on boring products in boring languages. I still work on boring products, but at least I get to work with awesome technologies (Clojure/Datomic being my 2 favorite).
- ericn 10y agoWow! Awesome story! It totally resonates with my experience with Clojure. 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 eric@purelyfunctional.tv and we'll figure out the best way to do it. Thanks!