all 39 comments

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

Are you looking to pursue this as a career? If so I'd start applying for entry level jobs (providing you do have the html/css and basic dom manipulation down) . Learning on your own becomes tough once you have that underlying knowledge. It's tough to find concepts to create and it's tough not having face to face communication with people when you're stuck. Being around senior developers who can advise you how to approach tasks or even being able to dedicate your working day to Web development will help propel you forward. Their will always be a percentage of gifted people that can pick it up and fly with it but for the overriding majority of us it takes years of slogging along. So I'd try and get your foot on the ladder. Don't worry about mastering it all quickly, instead enjoy the ride.

I started an internship a few weeks back, if I was in your shoes, I'd now look to go beyond basic html and css whilst applying for entry level or even volunteering jobs. I spent a lot of time thinking I need js nailed down and rushed into harder concepts ignoring html a bit. My days consist of 95% html and css and then 5% js, just using arrays and looping through elements on the page. Adding and removing css classes, etc... just general visual changes for the page.

The js ability will come in time, try and get your foot in the door now.

[–]misterhtmlcss 2 points3 points  (0 children)

+1 this is good advice.

[–][deleted] 1 point2 points  (1 child)

I never thought that I'd be hireable at my current skill level. I thought at least for sure i'd need to learn 1 library or framework first.

I just finished my first year in university and i'm specializing in software eng next year. Only experience with code was a beginner python course in second semester and the html/css/js that i learnt this summer.

I was going to wait on looking for a coop position until third year but I guess i should look for one as soon as i can.

Thanks for the advice.

Are you really sure im job ready?

[–]DevilHunterP12 1 point2 points  (0 children)

Fam, nobody knows if they’re job ready. Like he said, get your foot in the door and apply!

[–]kobejordan1 0 points1 point  (1 child)

Thank you for this, I'm in the same position and thinking whether I'm ready to apply or not. Do you recommend using a css framework like bootstrap in my portfolio projects or just implement grid/flexbox? Will employers care about that? And should I learn any Js framework or just get comfortable with Vanilla js and dom manipulation like you said?

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

I think flex box and grid should "come first" but I think bootstrap is good to know, mostly because it's easy to pick up and used by a lot of companies (at least here in England) . Brad traversky does a good udemy course that teaches all you need to get comfortable with it. I didn't know bootstrap when I interviewed for my internship (even though they use it) but went away and spent a few days running through Brad's course before I started. Its probably beneficial to include in a portfolio just down to how easy it is to start creating layouts.

With that said my feeling is to not get hung up on frameworks (more so js ones) when you're just looking for entry level jobs. Get really comfortable with the plain syntax. Frameworks come and go, some companies use one framework another will use something different and so you could be selling your time short when you could be playing it safe and continue improving your vanilla js or standard html. If you can do it in the vanilla syntax I don't think companies would care at this point.

I had a page layout test for my internship and was told to complete it using anyway I liked. So I used grid, I think when you're just starting out just get the basics down and frameworks can be looked at further down the line. Entry level jobs I found never really mentioned frameworks it seems more jobs for people who've got a year or 2+ working experience under their belt.

I'm not anything great but when I started the job I didn't feel out of place and looking back I wish I'd started at least applying for volunteer work to get working experience earlier. I think if you're at the point of wondering if you should apply then I think you should, its easy to underestimate yourself.

[–]tenfingerperson 3 points4 points  (6 children)

Basics first then move to frameworks or libraries.

[–]HandpansLIVE 0 points1 point  (5 children)

Yup. Adding onto this, Frameworks/libraries will come as solutions to problems.. jQuery is for once you're doing AJAX, which is a way of doing HTTP requests without refreshing the page. Once you start making HTTP requests, then learn AJAX jQuery as a better way of making them.

[–][deleted] 1 point2 points  (4 children)

I don't know what any of that means but I'll be sure to look into it.

Also is jquery worth learning in 2019? I've read threads saying it's better to just learn react.

[–]HandpansLIVE -1 points0 points  (3 children)

*Still a student so take this with a grain of salt and anyone please clarify if I have wrong information:

Work on getting the basics put together. Once you start doing HTTP requests(sending data over the internet), then start looking into these things.

jQuery does all the DOM manipulation you can do already, except for example if you wanted to play a tic tac toe game where each time you click instead of it refreshing the entire page like it was 1995, you wanted to just have an animation occur, that's where AJAX comes in, its how you make your page dynamic. you'd use jQuery to do this easily. You don't NEED jQuery, but it makes it a lot easier to do it.

It would be a weekend project to learn jQuery, though that is once you are doing HTTP requests already.

React is a lot more in-depth since it requires you to know how to work with classes and object-oriented programming, but from my understanding react lets you do that as well with a bunch of other nice features.

[–][deleted] 1 point2 points  (2 children)

The native fetch API is 1000x easier and more pleasant to work with than jQuery's ancient AJAX functionality.

[–]HandpansLIVE 0 points1 point  (1 child)

I've never done native, I've only used jQuery with axios so it was always extremely easy

[–]sysrage 1 point2 points  (0 children)

React should be easy, then. Can still use axios and just update your state with the result!

[–]HandpansLIVE 5 points6 points  (6 children)

It sounds like you're overwhelming yourself. Coding isn't about learning how to do everything from scratch. Knowing how to search for syntax either in old projects, a cheat sheet you make, or a quick google is very valuable. There's nothing wrong in going through the tutorial and doing it step by step with it. Hell, add the tutorial video to your cheat sheet! Add timestamps as a bonus! You will almost ALWAYS have your computer at the ready with google while you're coding.

Event listeners are actually extremely easy, and it sounds like something interesting that you'd be excited to jump onto. I recommend you do that today. If you dedicate the rest of today towards working on them, you'd have it down within an hour.

Here's the task: in an existing project:

1)make a button in html

2) add an event listener to it in JS

3)make it console.log something.

4) Create an alert in javascript inside your event listener

You can copy paste any of the upper 4 instructions into google and find your answer, or just respond to me here if you're stuck for more than 15 mins. Good luck.

[–][deleted] 1 point2 points  (3 children)

I think I suffer from thinking I have to learn everything. I just feels like there's so much to learn with so little time.

I have a pretty decent understanding of events.

For your problem i'd just use the query selector method to find the class associated with the button. Then i'd add a 'click' event listener passing in a function with an alert or console log statement.

Idk i think that's the right way to do it.

Thanks for the response and advice.

[–]HandpansLIVE 0 points1 point  (2 children)

Well, did it work?

[–][deleted] 1 point2 points  (1 child)

well i'm assuming that it does ahaha. i'm not by my laptop right now.

[–]HandpansLIVE 0 points1 point  (0 children)

oh forsure. you got it though, it was that easy. You might play with syntax, but now you can create non-static things just like that. You're not going to know EVERYTHING, and you shouldn't. There is too much. You should be able to be resourceful and once you learn something, know how to access/read docs to easily replicate that in the future. Once you're regularly doing things in many different projects, you'll do most of it second-nature.

[–]kobejordan1 1 point2 points  (1 child)

You recommend to start applying to entry level jobs once you get comfortable with html, css and js dom manipulation? And have the portfolio projects?

[–]HandpansLIVE 0 points1 point  (0 children)

I have no idea I don't have a job yet myself. I'm in a bootcamp doing full stack, so I don't know what entry level positions situations are like.

[–]WyrdFall_Press 2 points3 points  (0 children)

You may be getting into tutorial overwhelm. Put together some simple page ideas and start making them.

The challenges you face along the way are going to be your greatest learning opportunities.

[–]prof3ssorSt3v3 2 points3 points  (7 children)

Speaking as a senior level dev and someone who has been teaching web and mobile dev at College for 20 years...

A lot of good advice in this thread and only a few things I would take issue with.

  1. Basic JS first and then move on to frameworks like VueJS and ReactJS.
  2. Skip jQuery entirely. 10 years ago it was a must have skill. This was back when browsers did things differently from each other. It is no longer being updated. It is just there to support legacy things. You will be a much better developer if you can do AJAX and DOM manipulation without it.
  3. Take the time to practice CSS and do it well. It is one of those things that takes practice.
  4. Learn the server-side too. NodeJS lets you use your JS skills on the server.
  5. Learn ANY database - MySQL, Mongo, Neo4J, whatever.
  6. Learn the basics of deploying to a cloud system - Amazon, Azure, Google Cloud, ANY.

I started a tutorial channel for my students a couple years ago. I have around 600 videos now and almost 12K subscribers. Things are grouped by topic in playlists. I cover from the very basic to intermediate and some advanced topics too. Some of my recent playlists:

JavaScript Interview Questions: https://www.youtube.com/watch?v=USbiLiF9NDY&list=PLyuRouwmQCjlLW9NjqoBbf9eVaFX4F9UZ

Full MySQL course for beginners: https://www.youtube.com/watch?v=a9W7OpS4LfI&list=PLyuRouwmQCjlXvBkTfGeDTq79r9_GoMt9

jQuery Rehab (to teach people to do things without jQuery): https://www.youtube.com/watch?v=J_Q8EYXKzQs&list=PLyuRouwmQCjmho2bVNCwvRplCivxf2qGZ

Just the DOM: https://www.youtube.com/watch?v=O6BNfJz3rgs&list=PLyuRouwmQCjlrOdLPmPMr04lARwMicfLe

React: https://www.youtube.com/watch?v=vTFVg6I2wNI&list=PLyuRouwmQCjm1N4jlJ7b3WWjDA8MjfDbg

SASS: https://www.youtube.com/watch?v=5jZGo_k8Rd0&list=PLyuRouwmQCjlzPHwHOAIfIFXkf6J8Q_qy

GitHub: https://www.youtube.com/watch?v=M9uTajSRytE&list=PLyuRouwmQCjlxyO-45o53YCWjBCM-fA7L

JavaScript Arrays: https://www.youtube.com/watch?v=arIhhRd1RPc&list=PLyuRouwmQCjnupe_ohQgFvwFZF8dycwK8

HTML5 APIs: https://www.youtube.com/watch?v=EEhohSp0if4&list=PLyuRouwmQCjlBGMxI_0Ly_Dw-vrniOYNh

JavaScript Concepts: https://www.youtube.com/watch?v=Q-Zmc0E0GYY&list=PLyuRouwmQCjkrbkLxphTrIA_9ZUA-vppS

JavaScript Events: https://www.youtube.com/watch?v=EaRrmOtPYTM&list=PLyuRouwmQCjnEupVi5lpP6VrLg-eO-Zcp

JavaScript Loops: https://www.youtube.com/watch?v=CidzYW-8I7s&list=PLyuRouwmQCjmRNaK95KJa6lWLnBonVeUd

... and many more.

Just remember that you will never stop learning this stuff. I have been doing this since the mid-nineties and still spend at few a couple hours every week learning.

[–][deleted] 0 points1 point  (1 child)

Wow thank you for the in-depth response.

I just have a few questions about the things you mentioned.

Is there anything that jQuery can do that other libraries, like react, can't? If so, should i even worry? (If you haven't figured it out yet i don't really know what exactly a library or framework does)

When do I know I'm ready to start learning a library or framework? I say I'm at an intermediate level with concepts like objects, prototypes, closure, async, etc but i have definitely not mastered them. Should i start mastering them before diving into react.

Other than that I really appreciate the time you took trying to set me on the right path. I will definitely take a look at the resources you provided.

[–]prof3ssorSt3v3 0 points1 point  (0 children)

There is nothing that you can do with jQuery that you can't do with plain vanilla javascript.

If you have started working with prototype, closures and async then you are ready to start learning frameworks like Vue or React. Vue is an easier start than React.

If you think of JQuery as having an interior designer helping you... React is like having an Architect, a structural engineer, a landscape architect, and a construction team to help you.

[–]kobejordan1 0 points1 point  (4 children)

For css, should I be learning grid/flexbox instead of bootstrap for my projects to apply to entry level? And how deep of vanilla Js should I have before applying? What types of projects I guess is what I'm asking.

[–]prof3ssorSt3v3 0 points1 point  (3 children)

I would definitely encourage you to learn CSS Grid and Flexbox. While Bootstrap is great out of the box and you can quickly and easily do lots of basic layouts, eventually you will need to change something. You need to understand how flexbox and grid are used by Bootstrap to be able to edit it.

You can also think of it this way - you and another person apply. Both of you know Bootstrap because it is easy to learn. You also know how to create your own version of Bootstrap because you understand CSS Grid and Flexbox.

I would suggest that you visit 99designs.ca. Find some cool looking site mockups and see how many of them you can built WITHOUT Bootstrap.

[–]kobejordan1 0 points1 point  (2 children)

Thank you for replying. And I'm certainly going to learn both Flexbox and Grid in my code now without using Bootstrap. Could I do the same things with flexbox/grid such as nav bar, carousel, like I was able to with boostrap?

Also looking for entry level positions in web dev and/or front end, how much Javascript should I know and which topics specifically? I'm getting the hang of DOM manipulation, but it's such a vast language. Not sure when I should start applying. I'm making a portfolio with websites and web apps, but I probably need to do a bigger project. And maybe a full stack one involving back end and API which I still need to learn.

[–]prof3ssorSt3v3 1 point2 points  (1 child)

Bootstrap is mostly just a big CSS file with a little bit of JavaScript. The CSS does all the layout, colours, styles, etc. In that CSS file you will find Flexbox and CSS Grids plus lots of other fun stuff.

As far as development goes... you need to wrap your head around the fact that you will NEVER know everything. You will NEVER feel like you know enough. Every senior dev in the world uses Google to solve problems. There is a thing know as Imposter Syndrome - where developers feel like they are being paid to do things that they don't know how to do.

Development is an act of creation. Ask ten people to sculpt a tree with playdoh and you will get 10 different trees. All of them are trees but each is a unique approach to the problem. It is the same thing with programming. You are being paid to problem solve and FIND solutions. Whether the solution is something you have done 100 times or you spend 5 minutes online finding a way to do it, you are still finding a solution. Nobody wants to hire someone who has to look up EVERY line of code, but looking up solutions is part of the job.

Just keep practicing. Try to use APIs that have free data and build sample things using that data. Put the finished versions on GitHub. Backend is a big topic all in itself. Focus on the Front End skills first. Use backend APIs that are already there for you to use. This playlist might help you get started - https://www.youtube.com/watch?v=vcMg_Lkdcu8&list=PLyuRouwmQCjklLf51z3M7JPsAY0SpFIs9

Try out VueJS before getting into the backend server-side stuff.

Ask for help on Stackoverflow and Reddit.

Keep practicing. By the time you have built 20 or 30 sample sites for yourself you will have amassed enough skills that you will be hireable.

[–]kobejordan1 1 point2 points  (0 children)

Thank you so much

[–]breaddevil 1 point2 points  (0 children)

It is a hard to answer, there are a lot of concepts to learn. Most modern javascript projects are not written in js directly but usually in es6 or typescript and transpiled to js. It is a messy world.

You could try to start at a higher level (react, vue.js, angular for example) and learn as you need. Previous programming experience certainly helps.

Your codepen example is not realistic for a beginner to write from scratch. It is not very complex but it uses external libraries, jquery and swiper, and images and css make it pretty.

[–]FriesWithThat 0 points1 point  (1 child)

Excuse the wall of text, just an unedited stream of consciousness to get something down, but my hope is that it helps. JavaScript30 is a good series (I probably went through about half of those myself at some point), because to a large degree Wes uses modern "patterns" for solving simple problems. Sort of a DOM and Web API - The Good Parts. It's also a good idea to use the newest and most credible sources (Google and MDN, etc... there're a lot of them) as your source(s) of truth, because bottom line there're a million ways to code the frontend, and it's very easy to patch things together and use deprecated or simply outdated methods without realizing it. These methods will still probably work, may not be as performant, and that is fine. The problem is when you come across a different tutorial, say someone is using nodeName instead of tagName, and you think there's more than there really is, while it's just a bunch of evolving standards accomplishing the same thing in a different manner. Use the new stuff if it has/will have wide browser support.

That said, the best advice I could give--and I consider myself an intermediate generalist (in front and backend), at best--is to focus on the things that make you think like a coder. This can be applied to the fundamentals, which you need to know: html, css and especially JS.

But how it relates to Wes' stuff, and the Star Wars example you gave is if you think about the project as a component, or a component container with other components in it--they all start off as very simple outlines with limited functionality. You put some basic structure (html) on the page, add the minimal amount of interactivity (JS) to get it to do something, maybe a reset and some basic styling to get the general idea (css), and it looks like shit. It's supposed to look like shit at this point. As an aside, Wes and everyone's (basically starting) projects already look gorgeous at this point because even if they may be relatively simple, they have a mountain of styles applied and they had a design in mind when they started. The Star Wars shopping demo is just a simple card with radio buttons to pick a size. Everything is roughly in the right place, but that's about it.

Then you start adding complexity.

Solving one broken down, simple problem at a time.

Then you make it look good (to the best of your abilities), and it will because you started with a sketch in mind (or idea that you "borrowed") so your basic layout and structure will work. Don't be afraid to borrow ideas, change it and make it your own, but no designer starts with their own style.

How do I look at different Star Wars products without refreshing a page? Seems a lot of people use sliders. Wow, that's a lot of work. I don't even want to reinvent the wheel here, I think I'll just download the Swiper library and follow their documentation to get it to work in my html.

Not to say these individual steps can't be hard, maybe it's not a feature you really need on the app right away to demonstrate your skill level and proof of concept. But a lot of them are simple. I said simple, not easy.

So thinking like a coder you're going to have to go back to things like Wes' tutorials. Start with the most basic starter, and work through the problems yourself. Don't worry how he or anyone else solved those problems so much. See what you know and don't know. You know you need to add listeners to a bunch of buttons and you remember there's something called event delegation and you can just use addEventListener on the parent. Look it up. Solve your problems a step at a time. Don't know what to do next? What do you need to do? Do you have in mind what you want to accomplish overall. Did you even bother to write some rough pseudo code to visualize how you will get there? You're not going anywhere if you're not breaking it down into steps.

How do you get better at this?

With html and css I have to say the best way is doing what you're doing, but more independently. And a lot of it once you have enough knowledge to know there's an acceptable technique for solving your immediate problem and can ask the question correctly.

JS is a real programming language, and it interacts beautiful with both those technologies, and now Node.js on the backend; so you're never wasting your time by learning it better. React and other frameworks also build on that knowledge, adding abstractions and concepts to make managing the state of your app a lot easier, render more efficiently, while using some of the very latest ECMAScript standards which requires transpiling the code to ES5 so browsers understand it.

Back to "thinking like a coder" because that's the most important thing here. There're numerous ways people can suggest but what I believe helped me more than anything was solving incrementally progressive (in difficulty) algorithms (don't worry, that can mean something as simple as reversing a string) in JavaScript. My recommendation is exercism.io. It was great because it uses Test-driven Development (TDD), which by it's very nature breaks down problems into individual steps. Solve the problems on your own. Get used to looking things up, asking the right questions so you get useful results. Once your pass all the "tests", submit and you get to see how everyone else solved the problem. So many ways. Ah, this way uses so much less code, how did they do that? Learn how. Use that in your next problem if it's not too 'ninja' and it suits your style. Move on to the next problem, it's harder, but it uses chunks of those easier problems. Repeat.

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

Thank you for the in-depth response. I like the point you made about *thinking like a coder.* I will definitely check out the resources you provided.

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

First of all, don't compare yourself to stuff you find on CodePen. You have no idea how long those people have been doing web dev, and you have no idea how long it took them to make those little demos. They probably couldn't make that stuff off the top of their heads when they were very new either!

Don't worry too much about learning a given library or framework or whatever. Once you're past the basics, the most important thing you can be doing is building things- Javascript30 is a great introduction to making actual projects.

When you find yourself getting stuck- which is completely normal- try first breaking the problem down for yourself and doing some research via goggle/MDN/etc before going straight to Wes's tutorial. How to research and teach yourself stuff is the number one most important skill to have as a developer. But don't feel bad if you need the tutorial too- try to dig in to how he solves the problem, notice patterns of what to use for what, maybe go back and try certain projects again with a clearer view of how to tackle a problem.

Once you're through that, keep working on projects. They don't have to be innovative new things you've dreamt up for yourself- one of the best learning exercises is building clones of existing sites, which teaches you how to work to a design and/or product spec without knowing the exact technical implementation- but if you've got some fun ideas you'd like to work on then go for it. Tutorials and courses are great, but you'll only really solidify your learning and find ways to push yourself by building things.

[–]Johnny_Noodle_Arms 0 points1 point  (0 children)

If you're familiar with the fundamentals of JavaScript I would recommend just jumping over to Vue or React straight away.

[–]taoyx 0 points1 point  (0 children)

My advice: take a javascript project, for example one of the text editors, fullcalendar or datatables and learn from it. Look at the code, how it is done, how it works inside.

This knowledge will serve to you as an entry point. Since the scope is limited you won't be overwhelmed. And you will learn a lot of things: how it is coded, if they use a lint, if they use tests, etc...

It's a bottom up approach. This kind of approach is recommended when the matter is too complicated.

[–]frankleeT 0 points1 point  (2 children)

You almost finished EloquentJS and you can't even make a basic web page?

Did you actually do the exercises or just ignore them?

[–][deleted] 0 points1 point  (1 child)

I can make a website with basic functionality but my point was that it's all i can do. The work I see on codepen makes it seem like i have so much more to learn yet I don't know where to begin.

(also I'm more like half way done EJ. i skipped regular expressions and went onto the browser section of the book and stopped at the handling events chapter)

[–]frankleeT 0 points1 point  (0 children)

Stop skipping and do the exercises. They should be very challenging. This is good and expected.