This is awesome, thanks for sharing Aditya! (Thank you to all who shared as well!)
I agree with your concept of "whatever makes the work real for oneself", and this is where I'm struggling a bit. I think finding an O/S project and contributing to it would do the trick, but we'll see. Thanks for all the great information! Best, Marcus On Mar 23, 2014, at 9:22 PM, Aditya Athalye <aditya.atha...@gmail.com> wrote: > Marcus, > Thanks for asking the question and instigating this discussion. > > A bit late into the thread, but I just want to narrate my experience so far > as I'm a Clojure n00b (actually, I'm really a programming n00b). > > I found 4clojure and Clojure Koans useful, to get an initial feel > for the language and some of the basic ideas contained therein. > I used (and use) Halloway's Programming Clojure to understand > the basic concepts. > > I also found it incredibly helpful to attend a hands-on (fantastic) > Clojure workshop that @ghoseb conducted. > > I'd term this phase as picking up some of the "motor skills". > > I think the following minimum set of things helps become > creatively productive with Clojure: > - Clojure's primary data structures and sequence abstraction > - Manipulation of collections / sequences > - Core functions (it's sufficient to be only peripherally aware of > macros / protocols/multi-methods / concurrency semantics, > to begin with... They reveal themselves through libraries, > once one deep-dives into those through daily use.) > - REPL-driven development / the inside-out flavour of FP > (particularly to visualize and plan intermediate data transformations > that will lead to the final output of the function; > inspecting types and classes of things, and trying to understand > the various errors one produces.) > > Beyond that IMHO only a "real" project will provide the context > and the constraints, both of which are required to produce focus. > Ideally this project would involve ongoing development by other people. > > By happy accident I happen to be writing a fair amount of Clojure for > browser automation, with clj-webdriver, at a company where Clojure > is the workhorse of our server-side software (@helpshift). > > My particular situation has the following characteristics: > - Specific problem domain > - Write clojure daily > - Read clojure daily > - Get and do peer-reviews of code by other > (often way way better) programmers > - Fast feedback cycles (<= 1 day) > - Heavy use of at least one library from the Clojure ecosystem... > - to have to keep cross-referencing the docs, > - be forced to look into library functions when you misuse them > (therefore read s'more code by an orders of magnitude superior engineer) > - and having to do double-takes at the fundamentals (especially when > abstractions leak > http://www.joelonsoftware.com/articles/LeakyAbstractions.html) > - Bonus: other people happen to depend on this work, so there's no easy way > to slack off "thinking" if something particularly nasty starts to block > progress :-) > - Bonus: reading application error logs to see what's happening under the hood > > Also, I'm working through Dimitri Sotnikov's "Web Development with Clojure", > and I have the Clojure cookbook handy to look through for ideas. > I tend to use Clojuredocs's quick reference several times a day > (http://clojuredocs.org/quickref/Clojure%20Core), and often read core docs > and library docs to understand what I just did that so magically worked! :) > > Eric Normand's video series also looks very interesting > (http://www.purelyfunctional.tv/). > > Beyond that, I found working through SICP has given (is giving) me the tools > to reason better about Clojure's data structures and about functional concepts > in general (hat tip @ghoseb, again). > > As I try to pick up more working proficiency, I intend to explore > different approaches to writing web apps with Clojure/Clojurescript > (through small projects using ring/compojure, Hoplon, Pedestal, > Caribou, Om... I may actually try to write and rewrite the same small project, > with at least two or three of these libraries.) > > Afterthought: > Initially I struggled with the notion of "real" projects. Now, I prefer to > interpret it > as whatever makes the work real for oneself, as opposed to being predicated > on utility to lots of people, or on novelty (I'd argue it's actually better > to > solve problems other people have solved many times over). > > My 0.0002 BTC. > Thanks for reading! > - Aditya. > > > > > On Sunday, March 23, 2014 9:15:04 PM UTC+5:30, Marcus Blankenship wrote: > Thanks to all who responded! > > > On Mar 21, 2014, at 7:17 AM, Lee Spector <lspe...@hampshire.edu> wrote: > > > > > A little thing but I use it in when teaching Clojure to newbies and maybe > > it'll be useful for others: > > > > https://github.com/lspector/clojinc/blob/master/src/clojinc/core.clj > > > > -Lee > > > > -- > > You received this message because you are subscribed to the Google > > Groups "Clojure" group. > > To post to this group, send email to clo...@googlegroups.com > > Note that posts from new members are moderated - please be patient with > > your first post. > > To unsubscribe from this group, send email to > > clojure+u...@googlegroups.com > > For more options, visit this group at > > http://groups.google.com/group/clojure?hl=en > > --- > > You received this message because you are subscribed to the Google Groups > > "Clojure" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to clojure+u...@googlegroups.com. > > For more options, visit https://groups.google.com/d/optout. > > Best, > Marcus > > Marcus Blankenship > \\\ Problem Solver, Linear Thinker > \\\ 541.805.2736 \ @justzeros \ skype:marcuscreo > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. Best, Marcus Marcus Blankenship \\\ Problem Solver, Linear Thinker \\\ 541.805.2736 \ @justzeros \ skype:marcuscreo -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.