Readit News logoReadit News
Posted by u/alinalex 9 years ago
Ask HN: For beginners: what is the hardest part while learning web dev?
Hey there,

Self-taught web developer here. I managed to get a job after 11 months of learning of my own. For me, the sheer amount of resources was overwhelming and sometimes got me thinking to give up, but I kept at it and managed to get a job and find out how web dev looks like in real life.

Eager to hear your stories.

Thanks, Alin R.

codegeek · 9 years ago
I think that a majority of "beginnner" tutorials miss the point. They start with the actual HTML/CSS right away. Heck, some even start with jquery as part of a beginning course.

I really believe in learning the "why" of something and not just the "what" or "how".

For example, if you really want to learn web dev, you have to learn to some extent how the internet works, what are the various protocols for web (http vs ftp vs ws etc), what the hell is DNS, the whole client/server cycle (request/response etc) etc. Sure it can help showing actual HTML code to explain http or request/response but I feel a lot of beginner tutorials just focus on the result and not the actual path.

Teach about the document/DOM etc and then write a simple helloworld.html. But then open the web inspector, show them how the request was sent (header,data) and then show the response received from the server.

There is plenty of tutorial on the usual stuff but not many that get real deep which is useful for beginners.

Jugurtha · 9 years ago
Udacity's CS253 "Web Development"[0] taught by Steve Huffman does exactly that. It uses Python on Google App Engine and Jinja for templating.

It starts from the basics. Tackles forms, handling requests and parameters. Cookie handling and authentication. Hashing (on which he even shares a bit of Reddit history: they didn't hash passwords which allowed them to detect spam accounts using the same password, but then Murphy's Law hit and the laptop was stolen and the database with it). Indices, joins, etc..

He discusses Reddit's architecture evolution and why they made the choices they've made given the context, etc. Sometimes, it boils down to "we chose it because that's what we knew". Other times, "we chose it because we hated the other thing". It's fun to hear him talk about this.

The course is pretty cool and the subtitle "How to Build a Blog" is an understatement. There was no stress on writing beautiful code or something, but the message is clear.

Another course I'm looking into is Stanford's Startup Engineering CS184 by Balaji S. Srinivasan and Vijay S. Pande. It has been discontinued. I just did a flyby and it's pretty much what you're talking about (they do both "big picture" with their reading list (Thiel, Graham, Andreessen, etc) but don't shy away from getting down to "viewport" and CSS, setting up stuff on Heroku, talking about tmux. They apparently did a lot of "why" stuff).

In my opinion, much of learning is done as it would be in a physical system with non catastrophic consequences: doing stuff, analyzing phenomena by the changed quantities and state/side effects, deducing the governing laws. You learn much about CSS from inspecting elements and changing stuff then reading MDN, than from the opposite. The first gives you something to anchor new knowledge to as opposed to starting with a setting that is too formal and abstract..

I mean, even doing Physics one can't be so exact not to approximate and neglect the influence of something at some point and just do a basic thought/physical experiment.

[0]: https://www.udacity.com/course/web-development--cs253

anotheryou · 9 years ago
I think going front to back is valid too.

Restyling wordpress yields usable results qiuckly, which is great for motivation. And motivation might be the most important things if you learn it by yourself. It's just important to take your time when encountering issues related to things below.

In general there is a fine line in programming: going as high level as possible only gets you in to trouble when things go wrong or need optimization, but you often don't have to know much more than one level down and a few basics to make better guesses about errors.

wry_discontent · 9 years ago
I don't think this is true. I have worked with people who don't know enough going down the stack of web programming (and been one of them). They couldn't fix bugs as easily as I could. I'm sure there are other consequences, probably design related, but the bug one is apparent to me because I help when I can.
aphextron · 9 years ago
>For example, if you really want to learn web dev, you have to learn to some extent how the internet works

This is spot on. I would suggest someone who was interested in web dev to start with understanding the HTTP spec, not learning HTML.

joshmn · 9 years ago
Echoing. I started with the web hosting industry, then got into the web stuff.

I think a lot of web developers really don't understand hosting and all the ins and outs of it. And by a lot, I mean a strong majority.

jmkni · 9 years ago
In my opinion, it's the sheer amount of options available. It's overwhelming.

First of all, the tooling. Should I use NPM, Bower, Gulp, Grunt, Webpack or something else?

What text editor should I use? Visual Studio code? Sublime? Vim? Emacs? Something else?

What Javascript framework should I use? React? Angular.js? Angular2? Vue.js? Do everything with jQuery? Something else?

What CSS framework should I use? Bootstrap? Semantic UI? Material Design? Something else?

Should I just use ordinary CSS? SASS? LESS? Something else?

Should I use plain Javascript? Typescript? Dart? Something else?

All of the above have a learning curve (which means spending your valuable time learning the specifics of each choice). And no matter which combination you choose, somebody will come along and tell you that you have made all of the wrong decisions and should start again with X, Y and Z instead, which is incredibly frustrating when you just want to build something.

I've learned that, if you have learned X and are using it to build something, and somebody comes along and says, What are you using X for, everybody is using Y now, X is dead, you just need to have enough backbone to say, X works for me, I know it inside out and I can use it to build a mean product, go away.

It reminds me of the old but still relevant Joel Spolsky blog post, Fire and Motion[0].

[0] - https://www.joelonsoftware.com/2002/01/06/fire-and-motion/

isoos · 9 years ago
You will get plenty of strong opinions and materials on the tremendous amount of JS framework and libraries. In the end, choosing what is best for you is a balancing act, and there is no clear winner.

One benefit of learning Dart + Angular(.dart) is that you get an efficient programming environment with batteries included. The toolchain includes the usually required tools (SASS included, it is now implemented in Dart first and is ported to other platforms afterwards). The learning curve is small(er than usual), the tools are great.

open-source-ux · 9 years ago
"What is the hardest part while learning web dev?"

The sheer amount of stuff you have to learn other than just the programming language you picked up. In fact it feels like as much, if not more, time is spent understanding tooling, distribution, packaging and hosting options for you web app. Little of which feels satisfying or enriching to learn because so much of it is simply endless administrative minutiae. No-one seems interested in simple, easy alternative methods.

This won't be a popular opinion, but I'll say it anyway...I am learning Python at the moment, and I can completely see why so many people start with PHP for web dev. Python - the language - might be easier and friendlier PHP, but Python's 'eco-system' for deployment and distribution is horrible, fragmented, clumsy and not easy to learn (or documented well).

hyperpape · 9 years ago
I'm not a fan of PHP as a language, but anyone who denies it hits a sweet spot for deploying applications is seriously confused.
aphextron · 9 years ago
PHP has such a terrible reputation from all the spaghetti code that's out there, but modern PHP is a pretty solid language when written properly. So long as you are writing good OO code and using an IDE like PHPstorm its a breeze to develop in. Also with Facebook's HHVM performance is on par or better than Java or C#.

Dead Comment

devwastaken · 9 years ago
The hardest part, for me, is knowing how to 'get a job' as a web dev. It seems like thats something no one ever talks about, and rarely do I see any information for. The reality is that you need to have some worth to a company, and that is in your skills and ability to improve your skills. Thing is, how do you prove that? Just because you make some app in React doesn't mean you're now an experienced React developer that can solve complex problems with it. Just because you make some web apps doesn't mean that you know the proper technologies to work with in other projects. It takes a lot of time and effort to learn things, and there are plenty of companies that aren't there to pay you to learn a whole bunch of new things unless overall you have a lot of experience.

I look at job postings all the time, and I don't feel I can honestly say: "Yeah, I can do that". I could learn to do what they need, or maybe the circumstances of the employment may cause me to be useless in its duration. There just doesn't seem to be a way to know what you're going to be working with until you just jump ship into it, and if you fail, well, nobody talks about that, and thats legitimately scary to me.

Sometimes I feel its not real, like the people who get 'real' jobs with this stuff can either just fake it and get lucky, or are simply better. It sucks, because I know I've made some cool things and can make much better things. It sucks even more because there's a limit to how much time you can spend working towards a complex career goal like software development before you just end up working a retail job full time to survive.

So, yeah, that parts difficult.

LukeB_UK · 9 years ago
Also a self-taught web developer here. My advice would be to make sure you learn the languages, not the frameworks. Once you know the languages, you can pick up the frameworks far easier and you can actually dig in and see what's happening.
kikups · 9 years ago
I'll say it's more of learning the fundamentals / concepts, such as why a framework will be useful. Languages and frameworks will change over time, but some core concepts will remain the same.
christophilus · 9 years ago
As a former front-end instructor at a code bootcamp, I second this heartily.
nitin42 · 9 years ago
The hardest part what I think is that we are surrounded by numerous web frameworks which makes it difficult to choose one of them. It may be due to the scope of the framework, community support and learning curve. I am a JavaScript Developer and I too find it hard sometimes to move ahead due to the design paradigms (both frontend and backend), database drivers (MongoDB my fav), community support for the project. It doesn't end here but we also feel that our project or a small app that we make might be neglected because the stack which we used while developing it was too much flexible or was easy to implement.

A solution to this can be making your development stack more and more compact according to the current needs and choosing a open source project or framework to work on which offers good community support and has a future scope.

hamandcheese · 9 years ago
I started not even trying to learn "web". I was self teaching Python and trying to solve Project Euler problems... it was fun!

But also not very useful. I became pretty clever (imho) but didn't know much about the web. I had no idea how JavaScript would interact with HTML, for example.

I found that learning how the internet worked helped a lot. So TCP, HTTP, DNS. Before I learned these things, I struggled a lot.

From there I learned Rails (and then Ruby, which is common but perhaps not ideal), and the rest is history.

This was over the course of several years though. One thing I'd really like to point out is that you're likely able to get a job earlier than you expect. That's not to say that you should be overconfident, but embrace being a beginner, ask questions, and know that you can still contribute.

justanotherbody · 9 years ago
For me it was getting enough experience with the various tools and tooling to learn the right tool for each job.

I started around '08 on a Django-based stack with really only university courses and prior Python programming experience. I was very active reading about the tech stacks which helped substantially.

When building mostly static content, I relied heavily on templating. When it came time to add interactivity, jQuery was right there waiting for me. When more complex behaviors were needed, I had to figure out how to write actual javascript rather than string callbacks together. Then learning to manage dependencies and assets became necessary, ... and so on.

A mentor would have been an enormous benefit. I was very lucky in that I got a wide berth to work in, and much opportunity for greenfield work.