To be a language means to be a way of defining thoughts in order to have them delivered to another.
With no constraints you could just write random rubbish (a bit like this). With the constraints of Java or C# you write code which does it's job, however a lot of work is in fitting your thoughts within the extensive syntax of the languages' constraints.
Clojure, or any other Lisp, helps in that the initial constraints it imposes are simple ().
Once you get a feel for the simplicity you get the feel for the power it brings.
It's a bit like wingtsun kung fu. Your brain is no way fast enough to react to your opponent fast enough to decide for example is this a hard punch or a soft punch. By that point the punch would have been received, restricting your thinking further. However if your body knows the language of wingtsun there is no thinking involved. Period.
Your body knows the language of interacting with another body so leaving your mind the time to make decisions. Your body has embraced the language and can rely on it to keep you alive whilst giving your mind the freedom (time) to make decisions or ultimate kill moves or be creative.
Another word for decisions is creativity. The cost of creativity is time. So embrace your language and be creative with your thoughts given the time your language allows. If you feel your language is asking for help unrelated to your problem then either you don't understand your language or the language is not a language at all and maybe another is better for the current context.
I made a career move from dentistry to programming. And I would say that anything I've used pre-clojure is a good approximation of pulling teeth. But even pulling teeth has the benefits of knowing when you're finished and the direct customer feedback is usually good.
I'd been programming since a child and I think in all honesty I was pushed into dentistry by the people that love me and wanted me to make money.
However dentistry in London is medicine in two years then three years specialising in the head and neck. Then two years dentistry training.
I found it a LOT of learning facts. I know that knowledge-based systems are better than humans for that application.
I had the pleasure of learning human anatomy for two years with Prof Harrold Ellis. Which is what I really took away with me. The guy was a genius. And the other was "If you are not certain then say I don't know, never guess, always seek truth" not that many people appreciate that knowledge in my experience. Robotic surgery yes, lying about the safety of amalgamate fillings no and telling mums of the effects of sugar and carbonic acid drinks was not enough scientific exploration for me.
I think I was too young, always the youngest in my year, to really know and show what I wanted to do. I should have studied Physics but was told at the time "I'd end up a Physics teacher" as if this was a bad thing...
Pre-uni I wanted to build quantum computers but my Physics teacher at St John Ruskin College school didn't know what direction I should head in (the school at the time was also being ripped off by the head mistress, look it up, bad).
After that I got a scholarship to a private school to do A levels which was absolutely brilliant. Dulwich College an excellent school where I was treated like an adult and learnt maths, physics and chemistry. Two of the best years of my life.
Nobody noticed really that I wasn't just lazy and so it was very tempting to my parents to be told I could go to the best medical school etc when I pissed the exams.
So I went to the best medical school in the UK, Europe not really sure why.
After two years depression forced me to take some action and I quit and got a job in a bank as a COBOL programmer. I learnt that COBOL doesn't cure depression but can even make it worse. However I learnt from two old ladies who were probably employed AS computers in their prime. And they were the awesome COBOL dinosaurs.
From there on its always been a bit of struggle not having a degree. Although what I've taught myself, and continue to do so, is worth several degrees at least. Probably a PhD or two.
I now know a lot of programming languages and have lots of experience in them. Clojure took me to the next level with regards to meta-programming and language design. I still have hopes for genetic programming.
My interests now are really into augmented reality and basically augmentation of human perception, memory and "brain power" both in the progression of our species and knowledge itself.
That's another issue too. If it's not a public website that you're building it's quite hard to show off your work!
One of my favourites was a forward-chaining rules inference engine written in T-SQL on MS SQL Server for a sixth-form college. The Management Information System (MIS) was called unit-e built by Capita PLC and probably cost a LOT of money.
It was quite a good system, the query builder for advanced users was excellent (every MIS should have one), but it had a fair amount of data duplication - names, addresses, previous address etc. And the admin staff had lots of name changes and spelling corrections to make. Also you had the data entry dudes who'd write a lazy name like fiesta try basharat instead of Fiesta Try Basharat.
So I built the rules-engine as a stored procedure (SPROC) called by triggers on tables. The rules themselves were just simple SPROCs and some not so simple but the rule interface was simple and so the system was robust. All of a sudden every letter sent by the school was formatted properly and went to the correct address! The admin team even gave me and my junior a present! And the 'junior' became an expert in SQL and learnt a secret ninja weapon (rules, inference engines and conflict resolution).
How many good things were created? How do you demo the transition of knowledge? How do you monetize the time saved? How do you portfolio the potential for benefit of new rules that haven't been thought of yet?
Expansion of knowledge, the beginnings of infinities, there's so much out there I love it!
REPL Driven development as it's called is really yes having your whole system running at your thingertips (even production for the adventurous). You can execute arbitrary code and get results or see what state has changed. You can also redefine anything (in Clojure at least) that is referred to, such as functions and variables (I use these terms loosely here).
Normally you have your IDE configured so that anything executed is executed in the context of the running REPL session. So there should be no need to copy/paste.
When done properly with tests running on every change you really can't, as a developer, get any quicker feedback. It's brilliant and empowering!
Your issue could be emacs but, for Clojure at least, there is the Cursive Intellij plugin which is now definitely usable. Also there are the brand new IDEs like LightTable.
LightTable.com started out with some very different ideas with regards to code organisation and there is still a lot of potential work there. But lighttable instead became open source and a core for plugins. The plugins now range from rainbow parentheses to 'pick your language' evaluation.
If you want to discuss any of these ideas or others please do or PM me. I'm always willing to discuss as my girlfriend is hopeless. But then for everything not programming she keeps me sane.