introduce-yourself

Himanshu Soni 2024-07-27T09:38:58.305449Z

Hello everyone, I'm Himanshu. I have been trying to figure out what to do with my life and recently discovered programming, which I find quite intriguing. I’ve spent a week or two learning Python and building basic projects, but I recently came across Clojure and am captivated by its elegance, even though I don't know much about programming yet. As someone who isn't a CS student and is learning independently, I’m wondering if Clojure would be a good choice for my first and primary programming language. Additionally, what topics should I focus on as a beginner to build a solid foundation in programming? I would also appreciate any recommendations for resources to help me get started. Thank you!

πŸ‘ 1
πŸ‘‹ 15
πŸ‘‹πŸ» 1
πŸ‘‹πŸΌ 1
πŸ‘‹πŸ½ 1
Himanshu Soni 2024-07-28T08:42:24.842699Z

Thank you so much, everyone, for all the suggestions. At first, I was a bit hesitant to join the community and ask my question because I’m new to programming, but I’m really glad I did. I’m excited to be part of this community and appreciate all the guidance. I’ve decided to go for it because I have to start somewhere, and I won’t know if I enjoy it until I try it for myself.

πŸ˜„ 1
πŸŽ‰ 3
adi 2024-07-30T11:05:55.769279Z

As someone who isn't a CS student and is learning independentlyFirst, I think you've found a community that is supportive of newcomers... Welcome! > I have to start somewhere, and I won’t know if I enjoy it until I try it for myself. Second, this is the way! Third, everyone's path is different, and it's a random walk driven by your reasons. One pro-tip is to articulate what matters to you... "I just want to have fun messing about with computers" is a great reason, perhaps the best one! I too fell into programming as a non-CS self-learner, first as a personal and intellectual challenge (I wanted to kill some old personal demons), and soon enough professionally. Events conspired such that I landed in the Clojureverse, by way of interning and then working at http://helpshift.com. Community is key to any self-learner, and apart from some nice books and community resources, I am grateful for receiving the help of m'colleagues @bg, @firesofmay, @kapil, @kiran, @adie, @h0bbit and many others over the years, along with the Clojure community at large. I'm glad to be here! So, all I can say is brace for a joyride, chase whatever project interests you (music, art, algorithmic stuff, web-apps --- whatever) and don't be just a lurker... Ask away in #beginners!

πŸ‘πŸ½ 1
❀️ 1
adi 2024-07-30T11:12:36.108609Z

Almost as if prompted, here are some origin stories you may like, as well as a link to join the Clojure Camp discord... https://clojurians.slack.com/archives/C8NUSGWG6/p1722311862398579

adi 2024-07-31T05:48:19.946249Z

@himanshusoni19222 I forgot to mention Aphyr's "Clojure from the ground up". It is a lovely little primer on Clojure and Functional Programming that you can follow along with minimal prior setup (doesn't even need an IDE). https://aphyr.com/tags/clojure-from-the-ground-up I got a lot out of it when I was first learning Clojure.

Himanshu Soni 2024-07-31T08:44:10.043509Z

@adityaathalye thanks, for sharing your philosophy and all the nice resources.

πŸ–– 1
mogverse 2024-07-30T04:39:32.660359Z

@adityaathalye If you would like to chime in! Because you have been there done that!

πŸ™ 1
p-himik 2024-07-27T10:11:56.579669Z

Hello! Clojure is not my first language, far from it. But I'd say it's a good first programming language nonetheless. What matters most is whether you like it or not. E.g. probably the majority of people would say that Python or JS are better choices (and I of course disagree), but if you dislike those langs you won't get far without suffering needlessly. As for the resources, I'd recommend the SICP book (Structure and Interpretation of Computer Programs). Just not the latest edition where they've switched to Python, but the previous one where they still used Scheme. I think it's the 2nd edition.

2024-07-27T14:28:56.439719Z

I'm not so sure Clojure is a good first language. In my experience and thinking of people I've worked with, imperative style and mutation feels more "natural" for programming. Doing that in Clojure is quite awkward (not a criticism, just a fact: Clojure makes it awkward because it doesn't want you to work this way), and that means you've got to wrap your head around functional style which may not be intuitive. A lot of the sales pitch for Clojure comes from addressing pain points that experienced programmers have encountered over the years, but really getting those choices, the idioms, the way of thinking, almost requires you to have experienced the same. Otherwise, it can sometimes feel like "why can't I just..." That said, I think the most important part to starting is to pick something you find interesting. At its simplest, Clojure is just data structures and functions, which isn't a lot to learn (as I mentioned above, the hard part is really the functional thinking). If the language sucks you in, that can be enough to motivate you through learning what you need to learn. Something like Python is probably going to be more straightforward in that you can switch between functional style, imperative style, and OO features more easily. But as we all know, easy is often not simple πŸ˜‰ I will note that starting point can have a significant effect. My sister-in-law has no formal CS background either, and she started with functional JS and finds OOP confusing (while my wife and I had the opposite experience)

p-himik 2024-07-27T14:55:29.393899Z

imperative style and mutation feels more "natural" for programmingThat might be so, but there are a few counter-points: β€’ That naturalness is rather superficial and quickly becomes irrelevant when you start dealing with a bit less-than-trivial algorithms, unless a particular algorithm is just much easier to implement with mutations β€’ For some, learning something imperative first might make learning function+immutable programming significantly harder β€’ I haven't seen an imperative language that's 1) simple; 2) relatively easy to learn to a degree so it becomes really useful; 3) has no crap within it and its ecosystem. E.g. both Python and JS both violate (1) and (3). They're both fine in terms of (2), which makes them appealing, but issues with (1) and (3) make things unnecessarily harder later on

seancorfield 2024-07-27T17:51:44.920709Z

Having been involved with both ClojureBridge and Clojure Camp, I can say with confidence that a lot of complete beginners do just fine learning Clojure as a first language. It's a "simple" language in that there is very little syntax to learn and you can build things using just the basics of the core library. Yes, there are some sharp edges in tooling but the community here is extremely helpful so, don't get stuck and frustrated, just ask questions here. I'd recommend working through the tutorials on https://clojure-doc.org and ask questions in #beginners as you go.

πŸ‘ 1
πŸ’― 1
πŸ‘πŸ½ 1
p-himik 2024-07-27T18:22:33.762259Z

Oh yeah, on asking question - I find it a good enough heuristic that if you're stuck for 15-30 minutes, don't keep at it and instead just ask. Otherwise, there are more downsides than upsides, it's just not worth it. Some people think that asking questions just burdens other people, but people join #beginners specifically because they want to answer questions, they are not burdened by them.

πŸ‘ 2
βž• 2
lyall 2024-07-28T06:09:41.590219Z

I think beginner programmers (including myself back when I started) get too hung up on β€œwhat language should I choose?” In my opinion the most important thing is to get programming! So whatever helps you achieve that goal is good. Bonus points for anything you find especially cool and engaging. Even if you start with language A but later decide you want to learn language B instead, the time you spent with language A won’t be wasted. It’ll be valuable experience you can draw on as you learn and develop your programming skills further. So long story short, if you want to try out Clojure, go for it! No matter what you’ll learn some cool things about a cool language, even if you end up switching to something else later.

πŸ‘ 1
βž• 4