-
-
Notifications
You must be signed in to change notification settings - Fork 632
What was it like to learn JavaScript? #741
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I started off being a little scared and reluctant. Seeing things like wat made it seem like JS was at best weird and at worst kinda broken? The first project where I first really tried to have a go at it was an Angular2/Typescript project, where everything was OOP and typed. I muddled through, but the OOP patterns dictated by Angular2's design didn't make a whole lot of sense to me. I started properly getting into it with my current job, where I work on a frontend written in ES6 and React. I really felt like I found a groove here, and a lot of it was getting more comfortable with the functional programming techniques that Javascript makes really easy. I love how easy it is to write a curried function with arrow notation. I love how easy it is to express functions of functions. Some problems I ran into included the concepts of equality, and how that's down to object references, and needing to keep track of what's considered an object and what's considered a primitive, and how that affects notions of equality. I can't speak to the experience of using classes extensively - I tend to prefer a functional style, so I haven't had to deal with things that people complain about in that sphere like the weirdnesses of prototypical inheritance. |
Now I really enjoy using ES6 syntax and all the functional capabilities in JavaScript. I'm glad I learned "the long way" of doing those things, e.g. using a for-loop on an array, because now I use |
I wasn't a developer at the time, but I remember a coworker telling me to read JavaScript: The Good Parts when I expressed interest. On reflection, it was not the best recommendation, because it went into a lot of theory and I didn't grasp exactly how to write JavaScript after reading it cover-to-cover. What I found helpful:
What I struggled with initially:
How I tackled problems:
ES6 was the big thing, but after learning it JavaScript became easier to write, actually. Nowadays I mostly write JavaScript in the context of React, which is also simpler in a way. |
I was a C# developer when I first got in touch with JavaScript. I had to learn as I joined a new team in my old company. I fell in love pretty quickly as it's really easy to find free/open-source resources for it. Especially packages/libraries/frameworks! The most helpful thing I did was to get involved in the community: ask questions, try to help others, and understand what you can build with JavaScript. There are tons of free resources on the web and people trying to help! I just took advantage of it!
I'd say the ES6 was the most different I experienced. Once I understood how to use it, things got better. My code looked more readable somehow. Now I use it for everything! |
I'm not sure when I started learning JavaScript as I've been doing webpages since the mid-90's. But I used it more like a swiss army knife to connect up buttons, forms, and whatnot not really in a cohesive pattern. I probably got more serious into javaScript in the last 5 years, when working on a bootstrapped app in VanillaJS. It was interesting to see how the DOM and JavaScript had evolved over time and how they could work to complement eachother. Things that have always helped me to learn is being able to read good examples of what is possible with a programming language. How do you organize ideas, what patterns work, which patterns don't, which choices lead to future problems. I think I struggled with the idea of JavaScript objects formed from factory functions (in ES6+, a I'm not sure how it differed from other languages that I knew at the time, as I think PHP exists in a similar space but on the server side. |
1
2
|
I had ups and downs :) Some things were really easy to do, but for many other things you'd have to build them yourselves as JS doesn't have much of a base library (I started doing JS a long time ago).
That JS is very easy to get started with. You can easily test things in a browser without having to setup a project file or anything like that.
The dynamic nature of JS meaning I usually found out I had made mistakes only at runtime.
Mostly just trial and error and StackOverflow.
JavaScript being a prototype-based language was a big difference. Also, the lack of a nice, full-fledged base library was quite annoying.
Figuring out what
That
Not much.
Functional concepts I knew of (map/filter/reduce) all had JS equivalents. |
I didn't really have a great time with JS coming from a Ruby background. I started learning JS when it was all about callbacks and I had a hard time reading through them. It was useful to me to know that in JS, functions are treated as first-class citizens and you could pass them around as normal arguments. Though it gets harder when you forget to do I guess the real struggle for me has been dealing with everything asynchronous, specifically the concept of Promises. It felt so foreign to me and I didn't know how to read through the chained
I think it didn't really differ that much from Ruby. It just had some extra concepts, such as async, which Ruby didn't have. Also, I think the struggle for me was trying to know how to write specific things in JS. I feel like Ruby does a better job at this as it's more intuitive in my experience. Ruby's functional concepts, such as In Ruby, I've been a lot more comfortable writing several classes. In JS, I don't really have any experience in writing any. I've struggled to write abstractions, such as Value Objects in JS. It probably just boils down to experience. I'm also unsure whether reaching for Value Objects as a solution in JS is the correct thing. |
I am closing this issue, we will still refer back to the provided information though. Thanks everyone! |
We’ve recently started a project to find the best way to design our tracks, in order to optimize the learning experience of students.
As a first step, we’ll be examining the ways in which languages are unique and the ways in which they are similar. For this, we’d really like to use the knowledge of everyone involved in the Exercism community (students, mentors, maintainers) to answer the following questions:
Could you spare 5 minutes to help us by answering these questions? It would greatly help us improve the experience students have learning JavaScript :)
Note: this issue is not meant as a discussion, just as a place for people to post their own, personal experiences.
Want to keep your thoughts private but still help? Feel free to email me at erik@exercism.io
Thank you!
The text was updated successfully, but these errors were encountered: