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.

Reply via email to