Hacker News new | ask | show | jobs
Ask HN: How does a beginner get started with web development in 2016?
11 points by clfougner 3529 days ago
I'm a student looking to create a reasonably simple web app for a side project, and quite frankly, I have no idea where the hell to start. I've developed an iOS app, and created a static personal web site, but when it comes to web app development, the whole ecosystem seems like an absolute mess. As a beginner, I'm wondering how one is meant to figure out what stack/languages to go with when a new one seems to pop up every other week? Should a beginner start with something out of fashion but established, like Ruby on Rails or PHP/HTML/CSS/JS, or should they try to hop into the soup of trendy frameworks and languages that is the MEAN stack, Go, Flask, LAMP, Meteor, Django, Ember, Backbone, React, etc. etc., and how does one choose between them?
11 comments

As a beginner don't go for the bleeding edge. Look for something stable with thorough documentation and an active community. You might want to check out Laravel Homestead [1]. All the batteries are included so you can jump right in and start developing your web app.

[1]: https://laravel.com/docs/5.3/homestead

Watch this brilliant video, I think the author nailed it:

https://youtube.com/watch?v=sBzRwzY7G-k

tl;dr:

- Learn Node, Django, or Ruby if you want to do the backend(personally, I HIGHLY recommend Django. It's extremely awesome and is the perfect way to start in my opinion).

- Learn HTML/CSS/JS on the front end, then Sass and jQuery, then, if you want to be an advanced frontend developer - Webpack, React, and Redux.

I think this is the optimal way to go right now.

Thanks for the great video! Between the three you recommended I ended up going with Django, largely because I've been meaning to get a grasp on Python for a while (I do a fair amount of bioinformatics work in R, and Python should be a useful complement for statistics tasks). Also, the Django project website has great tutorials for beginners to follow!
Amongst the backend options, in terms of the concepts they employ, they're all more-or-less very similar. For that reason, especially as a beginner, I'd stick with a (micro)framework that's written in a language you're familiar with. If you're not familiar with any backend languages yet, then choose something that runs on Node (JavaScript). The point is, you want to reduce the number of technologies you're learning at once. Secondly, choose the leading/biggest (micro)framework of your desired language. The community will be the strongest (help is easier to find), the documentation is typically the best, there's more supporting libraries, etc. It just makes your life easier.

For the frontend, yes, it's kind of a shit-show. That said, I don't think you can go wrong with React/Redux/ES6. (Use create-react-app to get started).

Above all, don't worry about not knowing where to start. Pick something established and still popular, and stick with it. Don't look back. Learn it, inside and out. Once you've got the concepts under your belt, migrating to something else is a million times easier.

(Personal story, by no means a reference)

I started by looking up how MVC frameworks function. Then made my own little framework in PHP. It was crappy, full of architecture/security/design/performance issues. But I learned a lot.

Then I picked up Symfony and Laravel (both PHP) with those you can make decent code, because they force you to.

After that I picked Node and Sails.js looked a lot like Laravel.

If you want to learn the ins and outs of creating a full web application with a database, users and forms, then choose RoR or Django. I would go with RoR since I think it has more mind-share, but Django is fine. Of course, RoR, might just confuse you, among the Ruby syntax, Coffee script, all the magic, it might be difficult to learn. But, if you want the full-stack skills, then jump in, and you'll be part of the largest full-stack ecosystem. Whether it's "fashionable" or not seems kind of silly. I guess all kinds of isomorphic JS stacks are fashionable now...

If you want to make single page apps, then learn React. But you still need all the server-side stuff eventually, like a data store, web server, API service, and probably a web app stack too.

You should pick a language you feel comfortable with, then the stack. I would just use Rails, Django or ASP.NET Core 1.0, Sqlite as my DB, an ORM that comes with the stack, and start making traditional MVC pages with forms. use Bootstrap for the CSS.

There are a couple ways to choose. One is to choose something that feels right to you. If you try PHP, Ruby, C#, Java etc. which do you find the most intuitive?

Another factor is what languages will get you a job (if you want a job). You can look at job ads, and the monthly whose hiring for an idea of that.

Also it depends where you live. Where I live C# and Java are more employable skills then Ruby and PHP. But if you want to do a lean startup kind of thing, using Ruby and PHP has it's advantages.

I think to start off with ignore npm, bower, webpack and all that jazz and just code up stuff up in HTML and JS. Add JQuery when you are ready. And then try a web framework - React would be a good bet when you are ready. Then once you are used to all that, adding other tools in to the equation will seem less daunting.

It depends on the app. If it can be started using HTML and JavaScript then there's no reason to learn a framework first and by 'first' I mean second because learning the framework comes after choosing the framework and by 'second' I mean third because choosing a framework comes after researching frameworks and getting a handle on the confusion.

And a beginner is by definition not in a position to carry out informed research or make an expert decision. So just start.

Good luck.

Hi, I am a student but with a bit more experience with Web development. What I did to improve my skills was to progressively build my own "project structure". And as I learn new concepts, I refactor my code to include better concepts/libraries. It was in PHP.
What is it that you want to achieve? if possible, find a mentor. There is so much more to the game than just writing the code. http://mycustomessaywriters.org/
Start by learning HTML and CSS. Then if you want to learn JS, learn plain JS and learn it well. Forget about frameworks and libraries for now or you'll confuse yourself.
Depends on what you want to do.

If you just want to get a web-app up go for Meteor, it's probably the simplest fully integrated solution.