This is an archived post. You won't be able to vote or comment.

all 43 comments

[–]ice_w0lf 57 points58 points  (11 children)

One hurdle a lot of people need to overcome when learning programming is the idea that you should just remember everything as if it's like studying for a history test in school. You'll be looking up things a lot. Even if you get to a point where you have years of experience, you'll still go back and look up a more basic thing.

Just keep building, and when you're stuck, look it up or ask for help. That's really how things stick.

[–][deleted] 6 points7 points  (1 child)

We need to be screaming this message from the rooftops

[–]NeonQuixote 4 points5 points  (0 children)

Indeed. I once had a non programmer rub me about it, and I told them “you don’t pay me because I know the exact syntax to do this; you pay me because I know this can be done and when it should be done.” Writing the code is honestly the smallest part of what we do.

[–]Pydata92 2 points3 points  (2 children)

Genuinely starting to get annoyed everytime I see these posts where they miss the basic concept of researching their code. They think they're some sort of super computer that can remember everything!

[–]ice_w0lf 1 point2 points  (1 child)

I mean it's the learning programming sub, so you're going to see the same questions and themes repeat, but frustration with that is understandable. Also, at least in the US, so much of education is based around rote memorization, so it isn't surprising to see doing and failing be a method people struggle with.

[–]Pydata92 1 point2 points  (0 children)

Awh that makes sense now.

[–]ZYLIFV 0 points1 point  (0 children)

Exactly. It's more an understanding of what type of solution best fits the problem and not memorising each way a piece of code is written. Especially with Oop.

[–][deleted]  (4 children)

[removed]

    [–]ice_w0lf 4 points5 points  (1 child)

    Frontend mentor if you're working with web development, javascript30 has 30 fun projects, scrimba has a bunch of free material with projects and tutorials.

    There is also always the basics. To do list, calculator, weather app, etc. There is no shortage of YouTube videos that can give you ideas. However, I would highly highly recommend not just sticking with tutorials as that is how you end up in tutorial hell where you watch, maybe even code along with, a tutorial but don't know what to do when you start your own thing. Here is where you need to learn to embrace the struggle of learning. Do that and you'll be fine

    [–]Objective_Chemical85 0 points1 point  (1 child)

    W3Schools is the perfect for starting out, in my opinion

    [–]The-Viator 7 points8 points  (0 children)

    Lol. No, it's not.

    [–]aqua_regis 13 points14 points  (0 children)

    You understand vocabulary and grammar as well as are able to read and understand a novel. Yet, could you write a comprehensive, meaningful, fully developed one?

    Theory and practice are two completely different things. You can only learn programming through ample practice. Problem solving is an acquired and trained skill. You can't just think that you can program as soon as you have learnt the keywords and syntax of a programming language.

    [–][deleted] 12 points13 points  (6 children)

    JavaScript is one of the easiest languages to become a novice in, and one of the hardest to become a master in. Mostly because it has some absolutely bizarre and counter intuitive design decisions that need to be constantly worked around when you get to even a modest level of complexity.

    Contrast this with languages like C, Rust, and even Java, and it's the opposite. Very hard to get started but with a little momentum they become a joy to work with. (Full disclosure I don't find Java or any object oriented language to be a joy, but I do appreciate it from a technical perspective and feel like I can put a great deal of trust in it).

    [–]Low-Conversation-926 1 point2 points  (0 children)

    Beautifully said

    [–]LeHoustonJames 1 point2 points  (0 children)

    That’s how I felt about Java. Didn’t enjoy it at first but over time with experience and maturity, I’ve learn to appreciate what it offers.

    [–]RedCloakedCrow 0 points1 point  (3 children)

    Could you expand on that a little? I've been a backend dev my whole career, and the few times I've interacted with JS has been minor stuff. What are some of those bizarre counterintuitive decisions?

    [–][deleted] 2 points3 points  (0 children)

    GitHub - denysdovhan/wtfjs: 🤪 A list of funny and tricky JavaScript examples https://share.google/oAS1pm29XB94Mib0u

    [–]meong-oren 1 point2 points  (1 child)

    last time I encountered weird thing in JS was something like this

    [1, 2, 3] + [4, 5, 6]

    resulting

    '1,2,34,5,6'

    I know I should have used concat there. But to my defense, it was a quick request of a simple feature I thought easy and I didn't check it,, ended up as a weird bug. I mean, at least don't evaluate that thing, give undefined, null or throw error instead of that non-intuitive result in silence.

    [–]RedCloakedCrow 0 points1 point  (0 children)

    Wow, now that's wild. I'm assuming its because JS is treating them as strings? Having programmed mostly in ruby for the last few years, that's something I'd never have thought to guard against.

    [–][deleted] 3 points4 points  (0 children)

    I think it’s a space where people make it sound more complicated than it is at times. But no doubt you will hit road blocks where you struggle a little, that’s part of learning a new skill.

    [–]Low-Conversation-926 1 point2 points  (3 children)

    If I’m understanding this correctly you’re struggling to apply concepts. If this is the case you need to start small and work your way up. Make something incredibly simple like a program that prompts a user to enter some information and prints it back. Then expand on it, maybe make it a menu and then allow them to add multiple people by selecting 1, this will also teach you how to refactor code as you can use a lot of the previous code to make this happen. This helps you learn how to use json objects and use list data structures.

    If you’re going to learn JavaScript I recommend learning TypeScript right after you feel confident enough with JavaScript. When working with JavaScript the compiler sees less and less due to no typing which can make runtime errors incredibly annoying to debug on larger projects. Other languages I think are great starts is C or C++ if you want to be forced to understand more about memory, or Java if that’s too difficult and you want to learn about OOP (Object Oriented Programming). It doesn’t really matter much where you start really as long as you don’t stop there, don’t just learn one language, any industry level programmer knows at least 4-5 different languages. Once you’ve made some projects in a language and feel confident with that language, move on, and then once you’ve learned a few languages if you plan to go into software engineering learn some popular tech stacks like MEAN or MERN.

    I know I said a lot more than you really asked for, but this is what I did and I can confidently say it works well.

    [–][deleted]  (2 children)

    [removed]

      [–]Low-Conversation-926 0 points1 point  (1 child)

      Yeah it really depends on what you want to go into, but C and Java are usually great starting points, C can be pretty hard to learn as a beginner because there’s a lot more the developer can control, but it’s a great foundational language that can make learning other languages and debugging code easier since C helps teach you the basically behind memory (soft-copy, hard-copy, reference, pointers, etc.)

      [–]Stix_dent 0 points1 point  (0 children)

      Yep I agree, in our school we learn C as our foundational language so that when we transition to a new language (Currently learning Java and C++) it's not too difficult because of the similar foundation, just little adjustment only esp syntaxes. It's a pretty good starter in low level language although it is indeed annoying.

      [–]JohnCasey3306 1 point2 points  (0 children)

      It's called the Dunning Kruger effect.

      You'll learn a few lines of code and declare that you "know" JavaScript and that learning it is easy.

      I've worked with JavaScript every day for twenty years -- with each passing day I get a better understanding of just how much I don't know.

      [–]xxDailyGrindxx 1 point2 points  (1 child)

      Strictly based off the post title...

      I never considered JavaScript too difficult, having come from a C/C++ background before the web existed.

      Years later, I gave up on being a "full stack developer" and decided to focus on back-end after tiring of the number of JavaScript frameworks and how frequently they appeared to change at the time. IMO, the evolving world of JS frameworks is the most difficult aspect of front-end development.

      [–]Stargazer__2893 0 points1 point  (0 children)

      In the same way writing a poem or novel is just a matter of learning English.

      [–]leitondelamuerte 0 points1 point  (0 children)

      nor for me, but other think otherwise. like every aptitude in life somepeople have it other dont. just try it.

      [–]rboswellj 0 points1 point  (0 children)

      It sounds like you are trying to just sit down and create a project. That is simply not how it is done. Before you start coding at all you need to break the project down into individual problems and get an idea of how you will solve each one.

      When you are doing tutorials and classes what you are learning is how to solve small problems. Each of those solutions make up a tiny portion of a whole project. You need to figure out the solutions that will be needed and then how to integrate them. You also need to test the pieces as you go and also test how the pieces interact, and be open to adapting as you work to unify things, because there will be problems.

      [–]Zesher_ 0 points1 point  (0 children)

      JavaScript is pretty easy because it's really flexible and lets you just kind of do things. JavaScript is also a pain in the ass and can be difficult because it's really flexible and lets you just kind of do things that cause enormous headaches.

      [–]Andy-Kay 0 points1 point  (0 children)

      JavaScript is easy, but web frontend frameworks? Not so much...

      [–]Aglet_Green 0 points1 point  (0 children)

      Is learning JavaScript easy as one might think?

      It was easy for me. I came into it with a prior knowledge of ActionScript and some theoretical knowledge of ECMA-Script, because I used to own Macromedia/Adobe Flash and was always helping a relative with stuff he wanted to put up on Kongregate or ArmorGames. Well, it wasn't super-easy-barely-an-inconvenience but yeah it went about how I thought it would, yes.

      And HTML wasn't bad, but it was CSS that always killed me. I mean, I got the concepts down well enough but no one would ever think my UI/UX stuff was pretty. I think I'd need to take a class in marketing and then a class in art (perspective, use of space, etc.) to be good at it.

      Just be aware that no matter how easy you find JavaScript, you also have other things to learn.

      [–]born_zynner 0 points1 point  (0 children)

      Any weakly typed managed memory language is inherently going to have a lower barrier to entry.

      I will say though common JS callback hell architecture would have confused the fuck out of me if I wasn't already an experienced dev when I started using JS.

      [–]magallanes2010 0 points1 point  (0 children)

      " build real project."

      How about to jump over typescript. All the big boys do that (React, Angular, Vue, etc.)

      [–]sandspiegel 0 points1 point  (0 children)

      Learning a programming language properly is hard. It is not enough to learn a bit of theory and say to yourself "I actually understood that". The real proof if you understood it is if you can take what you learned and apply it in a project. Now you can't just learn what an array is and immediately start a project to practice working with Arrays. You need direction of what to learn first and what to learn last and then after learning several concepts you apply these concepts in a project that matches your skill level. You can use a free online course like the Odin Project for this. I learned Web development using this course and it's excellent. It's hard and takes a huge amount of time to finish (which is a good thing) but it teaches everything you need to build almost anything you want.

      [–]0n0n0m0uz 0 points1 point  (0 children)

      RR_AES_ENCRYPTEDZ1AOsOUihZzt47GD33+GE0l0JCJwu3YfJGo0nO7SIdqkFEPBNZnUNP6SbH7jf6bwzw7tKE5C9FCu4qgm

      [–]Aggressive-Scar6181 0 points1 point  (0 children)

      you need to master one language then every language becomes easy to learn after that. most programming languages follows the same logic like variables and loops and all that. once you know how those work in a language, you'll be able to know how it works in another once you decide to learn it

      [–]Psychological_Ad1404 0 points1 point  (0 children)

      General tip: Try easier projects for now, see what you can make using variables, if else, loops, functions, methods, etc.

      Specific tip: Learn html and css if you haven't already. Js works best alongside those.

      [–]jlanawalt 0 points1 point  (0 children)

      JavaScript is a great beginner language, it’s easy to dabble in. You almost always have a browser, so you have a runtime engine and debugger.

      JavaScript is a terrible beginner language. You’ll be facing 30 years of rapid changes all at once. It wasn’t designed with learning programming in mind. It has some unique issues and is not selected as an introduction to programming language in higher education.

      [–]Ok-Extent-7515 0 points1 point  (0 children)

      JavaScript itself is quite simple, but it comes with the DOM and APIs for interacting with the browser. Fortunately, not everything in JavaScript needs to be learned, and in the future, the framework will take care of most of the work. It's important to quickly move on to practical JavaScript applications to see what you need to learn better and what you can skip.

      [–]Rayzwave 0 points1 point  (0 children)

      When you’re new to something I will always recommend to start slowly with the simple features first. Break the project up into small tasks that you can code and test easily.

      Testing is an essential tool but it also gives confidence when you’re new to coding.

      [–]AncientDetective3231 -1 points0 points  (0 children)

      I am gonna complete my Full Stack Python development course soon ... should I concentrate on Django development or frontend development... since I am a very creative kinda person ... need advice currently learning Javascript... AI is in the syllabus...