Started learning in July and stuck with workflow - where to go from here?

First a little backstory. I’ve been working in the supply chain management field for the past five years and discovered along the way that I have a knack for writing Excel programs. I’ve become the go-to guy at my company for Excel stuff, and I love building programs that solve departmental and inter-departmental problems. I decided in July to dive into the world of web development, under the assumption that if I enjoyed programming in Excel, I might as well learn real programming.

My goal has been to learn web development on the side for 3-4 hours a day. Considering that I work full time and have a wife and two kids, this has been challenging to say the least. But I’ve managed to stick to this goal for the most part.

I started by going through Mark Myers’ A Smarter Way to Learn JavaScript and A Smarter Way to Learn HTML/CSS books. Finishing those, I debated whether to jump into a related framework (e.g., jQuery, Angular, React) or deep dive into vanilla JavaScript. I chose the latter. I went back through Myers’ JavaScript book a second time and put all the major concepts into Anki to ensure that I review them regularly enough to get them into my long-term memory as I work on learning new things.

I thought the next logical step would be to tackle the much-talked about You Don’t Know JS book series, but I’m finding it very difficult to grasp the content of these books. Even after reading and re-reading the chapters, I feel like I only have a superficial understanding of first Scope & Closures book, and the experience has been very similar as I work through the this & Object Prototypes book. I feel like the concepts in these books are out of my reach at my current skill level.

Aside from reviewing Anki cards every day and working through these books, I’ve also started spending about 1-2 hours a day working on challenges at Codewars. I like working on these challenges that require me to put my current knowledge to the test, but I’m struggling even at some of the lowest-tier problems (in this case, 7-kyu and 6-kyu). Furthermore, I am often mystified by the best-practice solutions, and struggle to understand them even after looking up the foreign concepts in the Mozilla Dev Docs and StackOverflow.

So, in review, my daily workflow currently looks like this:

  • 1-2 hours doing challenges at Codewars
  • 1.5 hours reading from the You Don’t Know JS series
  • .5 hours reviewing concepts in Anki

I write this post to ask: how can I improve my workflow? Am I trying to tackle intermediate stuff too soon? Are there resources I should be using that I’m not? To answer the question that may be on your mind, yes, I did start the FCC course pretty early in my journey, but stopped because I felt like I wasn’t retaining what I was supposed to be learning from the challenges. I decided that perhaps FCC would be a better used a a barometer of my knowledge, not as a place to learn the knowledge. Perhaps I was misguided and need to try again. I’ve also purchased a handful of courses from Udemy that I haven’t started on yet. I have 2-3 JavaScript courses, a Bootstrap course, a Node course, an Angular course, and a React course.

I’m kind of frustrated that after two months I still don’t have any clue where to begin if I wanted to build something with JavaScript, despite knowing a fair amount of stuff about JavaScript. But I just keep reminding myself that, hey, it’s only been two months, and if I keep at it I’ll get to where I need to be. I just have to put in the time, and I have to work smart. I’m committed to the former; I’m asking for help with the latter.

Sorry for the long post - this is actually my first post here! - but I’d appreciate any advice you all may have. :slight_smile:

1 Like

Hello, hysterical.useless I think you should change your name to something more encouraging.
I started in July also have not been nearly as committed as you have, sometimes after doing the challenges I feel the exact same way, my very first project was so ugly after learning jqery bootsrap and everything else that the challenges introduced. I think you should take your time and do the projects. What you will realize overtime is that after you practice you get better like every other thing, what the projects do is forces you to read over the challenges and read wider, you’ve been reading wider but maybe try and focusing on one thing at a time instead of so many things at once, one step at a time and you’ll get there. Try and building something simple with HTML and CSS first and then put in JS step by step. Remember you can use basic text editor for html & css. hope this helps

1 Like

Wow, that’s a pretty devoted schedule.

My goal has been to learn web development on the side for 3-4 hours a day.

That sounds like a pretty good investment, especially considering your schedule.

Finishing those, I debated whether to jump into a related framework (e.g., jQuery, Angular, React) or deep dive into vanilla JavaScript. I chose the latter.

Why? Why not both? First off, jQuery and React are libraries, not frameworks. And while it is good to learn vanilla JS, I should point out that jQuery is used on more than 70% of the web pages on the planet.

I thought the next logical step would be to tackle the much-talked about You Don’t Know JS book series, but I’m finding it very difficult to grasp the content of these books

Yeah, they dive pretty deep. I would say that these are good books to reread every 6 months and each time a little more will stick.

I’ve also started spending about 1-2 hours a day working on challenges at Codewars.

Codewars is a nice way to get exposed to algorithms, but I would point out that while algorithms are important, they are a fraction of what web development is. When you need an algorithm, you really need it, but if you understand the basic concepts it is easy to either build a solution or find and adapt someone else’s. I don’t know if Codewars is the best investment of your time, at least that much of it. Codewars is a great way to test your JS knowledge in a gamified way, but that isn’t the same thing as web development.

I did start the FCC course pretty early in my journey, but stopped because I felt like I wasn’t retaining what I was supposed to be learning from the challenges.

Yes, but I think that also depends on what you mean by “retain”. It’s a common misconception that we need to memorize these languages. I think it’s more important to be familiar with them, know the basic principles, and know where to look when we get stuck.They are too complicated and keep changing for us to memorize them.

There are so many different languages, libraries, frameworks, and related technologies that if you think you need to know it that well, you’re growth will be stunted by trying to limit what you are learning. Even within that one thing you will be limited because you will shy away from that many places that it intersects with other technologies. I know it is frustrating, but I think the way to do it is to dive in and struggle. Yes, many of the things you learn will not stick the first time. But you’ve been exposed to them and you are gradually gaining bits of knowledge and seeing how they fit together.

Yes, it’s frustrating. And one could argue that FCC makes it worse by not holding our hands. But of course you could also argue that that’s how the dev world works. When your boss says, “I need you to learn this new framework to set up this new app that’s going to interface with these three APIs”, he isn’t going to give you a tutorial on how to do it. You’ve just got to go figure it out.

I’m kind of frustrated that after two months I still don’t have any clue where to begin if I wanted to build something with JavaScript, despite knowing a fair amount of stuff about JavaScript.

That’s because (imho) things like Codewars are “JS for the sake of JS”. This can be useful and fun. It can reinforce an understanding of the algorithmic side of JS. But you need “JS for the sake of web development”. Have you tried any of the FCC Intermediate Front End Development Projects? That’s basically what they are all about. You’ll get to use your algorithmic knowledge and knowledge of JS, but you get to use it interacting with web pages and the internet.

If you want my $.02, you should spend more time actually building actual apps and web pages. If FCC doesn’t work for you, then there are other options.

2 Likes

One thing you haven’t mentioned are projects… doesn’t matter if it’s simple or stupid personal project, but it seems you left that out in your workflow.

The problem with reading a bunch of books or taking lots of online courses from start to finish is you learn a bunch of “random” facts and syntax – but when it’s time to apply them into a real-world application, people fall flat, have no clue even how to start, or where to begin. If you can’t practically apply those learned facts and concepts in a project soon enough, you’ll forget them… and then it will feel like you’re back in Step 1, like as if you haven’t learned anything all these past months.

Contrast this with working on a specific project (could be an FCC challenge, or a personal pet project), you work on it and when you reach a wall, crack open the book, google the reference manual, or watch that chapter in that Udemy video course that is related to the problem you’re facing. Once you’ve picked up the necessary info, you go back to working in your project. The stuff and commands, concepts you learn while doing this project, you’ll retain far longer, and you’ll feel you learned it more deeper (as opposed to superficially). And the most important thing is you know how it applies to a particular situation in that project you’re working on.

2 Likes

I’m just gonna repeat what @owel said: get some projects under your belt.

You probably have a good enough grasp of JS that you’ll find the Tic-tac-toe, Simon and Calculator projects quite rewarding.

A little jquery will help you abstract away some of the DOM manipulation and let you focus on the more algorithmic aspects of th challenge. You’ll have to think about how you handle various states in your apps, but aside from that it’s all just variables, ifs and loops - bread and butter JS you are definitely ready for :slight_smile:

Happy coding!

Thank you all for the responses so far!

The biggest takeaway here is the need for projects. Which I’ve known I need to do, but have been avoiding. Mostly because I don’t feel I know “enough” yet to make something interesting. For example, I work with Cub Scouts, so a project I’ve wanted to tackle is to make a program that allows me to better to monitor and track the progress of each boy in the program. There are programs out there for this purpose, but most leaders I’ve talked with have complained about these programs being cumbersome and unintuitive. However, as I said - how to even begin? Storing user data sounds like it requires a backend database, which means I can’t do much with the idea until I learn Node. So that idea is on the backburner for now.

Of course, before you can tackle big projects, you have to start with little ones. Which seems to be the point of programs like FCC. Based on these responses, I’m strongly considering taking at least an hour out of Codewar time and reinvesting it toward FCC again.

I think you should change your name to something more encouraging.

Haha, yes, perhaps. It’s actually a lyric from a Radiohead song, and I’ve been using it as a screen name in several different venues for over a decade now. But yeah, hopefully no one takes it too literally. :slight_smile:

Why? Why not both? First off, jQuery and React are libraries, not frameworks. And while it is good to learn vanilla JS, I should point out that jQuery is used on more than 70% of the web pages on the planet.

To be clear: I still intend to learn these libraries (thanks for the clarification!). It was more a question of what to do first, and I figured that a solid foundation in vanilla JavaScript would help me better understand how these libraries worked.

Codewars is a nice way to get exposed to algorithms, but I would point out that while algorithms are important, they are a fraction of what web development is. When you need an algorithm, you really need it, but if you understand the basic concepts it is easy to either build a solution or find and adapt someone else’s. I don’t know if Codewars is the best investment of your time, at least that much of it. Codewars is a great way to test your JS knowledge in a gamified way, but that isn’t the same thing as web development.

Yeah, I can see that. What I’ve enjoyed about Codewars is being given a small(ish) problem to solve and having to put all of my current JavaScript knowledge to the test. It’s also been nice to be able to look at best practice code from my peers, and realize how much farther I have to go to write production-level code (even if I solve the problem in a more obtuse, roundabout way). The reason I’ve been spending 1-2 hours on it is because it usually takes me at least a half hour to attempt a problem and dissect the best-practice solution. Which means I only get through 3-4 problems a day, tops. But I agree that it may be wise to reinvest at least a portion of that time into other endeavors, like projects.

Yes, but I think that also depends on what you mean by “retain”. It’s a common misconception that we need to memorize these languages. I think it’s more important to be familiar with them, know the basic principles, and know where to look when we get stuck.They are too complicated and keep changing for us to memorize them.

I agree to a point. I know I can’t memorize every little detail of JavaScript (or, rather, even if I could it probably wouldn’t be the best use of my time), but my goal is to have the toolbox stocked well enough that I don’t have to turn for help at every turn. That’s a lesson I learned working with VBA in Excel. A lot of the programs I made in Excel used VBA. And I could read most of it well enough to get by. But if you gave me a blank sheet and asked me to write VBA code freehand, I wouldn’t be able to do it. Almost everything I did in VBA came from looking up solutions online, then adjusting it for my particular project. This was helpful for getting my programs to do what I wanted them to do, but I never felt like I was really learning VBA. So with JavaScript, while I know trips to Stack Overflow and the MDN are inevitable (and good, in many cases), I want to at least have the fundamentals down well enough that I really understand what is going on when I find solutions. I don’t want to just be a copy-paste-adjuster again.

The problem with reading a bunch of books or taking lots of online courses from start to finish is you learn a bunch of “random” facts and syntax – but when it’s time to apply them into a real-world application, people fall flat, have no clue even how to start, or where to begin. If you can’t practically apply those learned facts and concepts in a project soon enough, you’ll forget them… and then it will feel like you’re back in Step 1, like as if you haven’t learned anything all these past months.

Yeah, that’s the downside of books and lectures. A lot of theory and little application. Yet, while I see merits to the just-in-time approach to referencing book/online information, it also has the downsides I mentioned in the last paragraph. I took the time to setup a review stack in Anki for this very purpose, because I knew I’d forget most of what I was learning if I wasn’t reviewing/applying it regularly. It’s worked pretty well so far, but I definitely see the need to get started on projects ASAP.

Thanks again for all the replies - much appreciated!

I’m going to to repeat what everyone has already said, too, and say that you should really just get started with the projects. :slight_smile:

Also, I noticed that you said:

You don’t necessarily have to put the idea on the backburner now—if you already know enough basic JavaScript and have worked with some libraries, you could consider using something like Firebase for your projects. The database module is relatively beginner-friendly and I personally think that it’s fantastic for prototypes and small projects. It also has authentication covered, which is also very beginner-friendly (I don’t trust myself implementing authentication—and the more I read about infosec the less I trust myself).

I personally don’t think that jQuery is not a good idea anymore. In fact, I haven’t used it ever since I finished the Front End Development Certificate and I’m of the opinion that it should be excluded in the fCC curriculum anymore as it does more harm than good.

If I’m not mistaken, most things you want to do on a regular basis can now be easily done with vanilla JavaScript—abstraction is convenient and worthwhile if the alternative is awful, but this isn’t the case, and it will probably come back to haunt you later when you are working with other libraries and frameworks, particular those that are not compatible with jQuery.

Last but not least, don’t make yourself a victim to JavaScript fatigue—you don’t have to learn every popular library and framework out there unless you have very specific needs for them. For example, I’m not sure if you want to learn both Angular and React to begin with—if I’m not mistaken, most jobs require that you know one or the other, not both. Do feel free to learn both when you have the time or when it’s absolutely necessary, otherwise it’s just going to be a distraction.

Good luck. :slight_smile: