"It almost feels as though already being able to program is actually a hindrance."
Hmm , that's interesting i faced the same problem.
Fwiw , here is a technique i use to ease the learning curve. I picked up a light-weight project - Lancet from Stu Holloway's book. Following the book, i wrote all the code tasks given there in the known language (Java or Python)- to understand the problem- and then transcribed it into Clojure. Initially it was really bad non-idiomatic Clojure , i was aware of this but would consciously only aim to finish the task. This gave me some confidence, made me "think" in Clojure and allowed me to learn some of the clojure libraries. I have finished the book.
Now, i am looking at the clojure-contrib code and discovering/learning idiomatic Clojure and going back to my Clojure code and changing that to be more idiomatic. This time i don't need Java code to actually understand the problem. Hopefully, at the end of this cycle i will be a little better.
I also found that knowing programming language fundamentals helps a little but only in the abstract , it doesn't help in being fluent in a language.
I've had the learning curve problem as well. So far the resource which has most helped ease the curve is http://clojure-notes.rubylearning.org/. If you have/find anything better let me know.
This has been my experience too. I found CL, Scheme, and Haskell pretty easy. Clojure has taken me more time. I think it's because there aren't many good books yet, and because Lisp-speaking émigrés have to learn a set of new ideas that's mostly separate from the new ideas Ruby/Python/Java users need to learn.
That there is no side-by-side comparison of how a seasoned 'imperative' programmer would set up a fair sized website (not some toy), so something with user authentication, database access, templates and some serious business logic and internationalization compared to how you'd tackle the problem in clojure, functional style.
Then I'd be able to take a section from the one, compare how the 'natives' get the same effect on the other side of the line.
It would be nice to have a 'reference' website that gets ported to every language that is used in a web context following best practices for that language/environment.
That way you'd already understand the problem they're trying to solve and you can concentrate on how it is solved.
Hear, hear. I am quite at the point where I play too much with Python's itertools and want a more pure language - but Clojure is seriously unhelpful in telling you how to actually construct any Clojuriffic code.
It almost feels as though already being able to program is actually a hindrance.