

How do I get started with web development? - fredophile

I&#x27;m an experienced C++ developer who&#x27;d like to try out some web development in my spare time. I&#x27;ve got a couple of hobby projects in mind ranging from dynamic webpages to client server stuff with an app running on a phone or tablet as the client. It seems like there are lots of frameworks and tech that I could use. This leaves me wondering what the best things are to learn. I&#x27;m not afraid to learn a new language but I&#x27;d like to understand the trade offs before I begin. A few options that seem popular include Ruby on Rails, Haskell, Erlang or Go.<p>I also don&#x27;t know much about setting up the actual server. I&#x27;d like something relatively inexpensive to initially learn on but I&#x27;m willing to pay for quality. I&#x27;m more interested in the best bang for my buck than just being cheap. Any recommendations on this front would also be appreciated.
======
mlave
As a good starter for ten, if you don't mind targeting Windows for your server
then it's hard to beat the Microsoft development stack.

Start by downloading the free version of Visual Studio Express.

For the server: C#/ ASP.NET MVC / ASP.NET Web API

For the client: JavaScript / HTML / CSS

Pick a JavaScript framework like Angular/KnockOut, JQuery and make it pretty
and responsive for mobile with something like Bootstrap or Zurb.

For hosting your project, take a look at Windows Azure. You get a free hosted
web site to play around with that can be automatically deployed from your
source code stored on your github/bitbucket account.

Even if you're no fan of Microsoft, I'd recommend spending the time to look at
the technology as they've invested heavily in it and it is rather good and
developer friendly.

~~~
taternuts
As a .net dev by trade, I seriously don't recommend going with .net for
starting with web dev. For every microsoft option, theres 15 open source
options with better community support that is easier to get started with.

------
kennethkl
Start with nitrous.io for a free quick dev environment. It gives you a little
linux box you can play with and setup the web server. Perfect for learning.

As for language, I'll defer to the rest of the community. I'm partial on
Node.js, since you really only have to learn Javascript, HTML and CSS.
Everything else you can rely on your programmer knowledge. The choice is
yours.

I recommend you choose a fairly simple project that interests you. No stupid
hello world -- you're not completely new. Try an online tic tac toe game or
something.

As for front end, I recommend you try backbone. It's barebones enough that
you'll learn exactly what other frameworks do for you. It's also short enough
to read to see how it works.

------
codegeek
Here is my recommendation (I am learning web apps myself)

\- Learn HTML/CSS/Javascript first if you don't know already. Build a static
HTML page before you get into the dynamic client/server stuff. This sounds
simple but many people lack the basic understanding of HTML/CSS.

\- Server: DigitalOcean ($5/mo). It is a great choice and balance between
crappy shared hosts and expensive dedicated servers in terms of ease of use,
cost and setup required.

\- Language/Framework: I suggest Python and Flask (happy to see few others
suggesting the same). Why python ? Just a preference. But if you do choose
python, I would highly recommend Flask. It is "micro" enough that you don't
have to worry about too much boilerplate that you don't understand at first
but powerful enough that you can create a simple web app in no time. Once you
understand flask, you can try larger frameworks like Django which have all
batteries included. As a learner, I don't recommend Django right away because
it does too much magic which means you won't understand what's happening
behind the scenes. Flask makes you think about that.

\- Database: Go with Postgresql or even mysql. Don't think about NoSQL stuff
at the beginning. If you really want to keep it simple, start with sqllite

The above items should get you started with web dev learning basics.

~~~
fredophile
Based on the feedback so far I'm planning to go ahead with Python. Looking at
Flask and Django they both seem like pretty popular frameworks. Are there any
reasons to prefer one over the other that I might not realize until I've been
using one for a few months?

------
zhte415
> I'd like something relatively inexpensive to initially learn on

DigitalOcean: It is $5 for a server that can run pretty much anything you'd
need when starting out, and they have a vast bank of tutorials. A full VM, you
will have control of everything. I have had good experience with customer
service requests.

Rimuhosting: A little more expensive (and with a better spec'd machine) but an
awesome technical staff that have been very happy to troubleshoot sometimes
very quirky problems (with my programs, not their setups). About $20.

Dreamhost: You don't get root, but you do get shell. They take care of
ensuring the machine, MySQL, a self hosted mailserver, amongst other things,
stay up. Shared hosting with performance boosting options. Sometimes someone
looking after the core stack, especially if just setting-out, can be worth it.
About $10. I have had good customer support and have had an account with them
for around 10 years.

------
texuf
This could sound like a joke, but I'm totally serious. Build a 2048 game.
There are loads of examples, the interaction is slick, and people will play
it. Then launch a flask app on heroku -- heroku has a great tutorial for
exactly that. It takes half a day if you know absolutely nothing going into
it. Then build a tool for yourself or your girlfriend or your boyfriend or
someone who is close enough to give you real feedback. Build it with rails
using a trendy js framework. I suggest react, at the concept level it seems to
make the most sense to me. Iterate on it for a few weeks. Now you are
employable. Then learn go. That's my opinion.

------
leostatic
When it comes to learning web development, my advice to beginners is to 1\.
Have a project in mind 2\. Pick a language and _not_ a framework

I don't need to stress on the 1st point for you. Regarding choosing language
and not framework, my reason is that too many beginners get caught up in which
framework to use debates which basically sidetracks them from the main thing:
learning. Also, frameworks do a lot of things for you. For eg, a higher level
framework will most probably provide you with login management which would
include cookies, sessions etc. While I know it is good to not reinvent the
wheel, if you let plugins and framework do most of the heavy lifting, the
learning process gets hampered.

Without a framework guiding you, you are bound to make mistakes in terms of
architecture of your app. But it is fine in the learning process. Knowing what
is going on is better than using seemingly magical solutions. Maybe later yes,
but for now stick to the basics!

I personally started off in PHP. For PHP I'd suggest Toro microframework. It
gives you routing and that's it. Whatever language you choose, pick the
smallest framework for the maximum learning. For python, afaik flask is pretty
light.

------
fsloth
Splendid question! I'm also an experienced C++ developer and I've been
wondering the same thing myself for quite some time.

Personally I found a wonderful step-by-step book from Pragmatic Press "Web
Development with Clojure: Build Bulletproof Web Apps with Less Code"
[http://pragprog.com/book/dswdcloj/web-development-with-
cloju...](http://pragprog.com/book/dswdcloj/web-development-with-clojure). The
book explains in step-by-step fashion and working example code how to build a
web app from scratch. Of course, the Clojure approach is quite different from
most web-stuff out there, focusing on reusable and small libraries rather than
large frameworks but I find it appealing personally.

------
erichurkman
I'd go with a popular framework at first. They all give you a built-in
development server that will run your web app directly from a terminal.

Do you have any experience in anything other than C++? If so, try one of those
languages first. In general, in my experience, familiarity is a great way to
break the barrier into a new area.

If you don't have experience in the other languages (Ruby, Python, Go, etc) —
pick a few common frameworks and built simple-stupid apps in them. Build a
TODO app in Rails and Django. They are so quick to build you can follow
tutorials and explore which one _you_ seem to like most.

~~~
fredophile
C++ is the language I usually use for day to day coding. I have experience in
plenty of other languages but most of them aren't relevant for this task. No
one is writing server code in Prolog. The only ones that would really apply
would be Python or ML. I tend to use Python for small one off tasks that take
advantage of its string manipulation abilities and hadn't really thought of it
as being a contender in this space. I haven't used ML since I graduated so at
this point I'd be starting from scratch with it and a different functional
language might be a better choice.

~~~
erichurkman
Python is definitely a contender, don't discount it. It's not as dynamic as
say, Ruby/Rails, but is certainly a good first web-type language. Flask is a
good first step, since it's very simple. You can digest the Flask code as a
rookie Python developer with relative ease.

If you wanted to veer off the beaten path of the big three (PHP, Ruby,
Python), Go has some cool things going on, and you might find it interesting
as a C++ dev.

~~~
collyw
I was going to suggest Django. I had been a back end developer for a while. I
could put together a Perl CGI script to display a webpage, but not too much
more.

One problem you first have with web development, is you see too many possible
ways to implement something. Using a good framework makes a lot of these
decisions for you (or at least encourages you to do things properly), and
reduces the amount or boilerplate code you.

Plus the guys that write these frameworks have loads more experience than you
and have added stuff you probably don't even know about. CSFR protection for
example. Sure it was a pain getting the first errors resolved, but now I know
that I ought to be including these things in my webpages now.

------
AbhishekBiswal
PHP is one of the easiest web programming laguange to start with. Drawbacks?
Yes, a lot of people hate PHP, but it's nice to start with it ( You can switch
later ). Or you can try Python with Flask.

Or try both. This should help :
[http://www.codecademy.com/](http://www.codecademy.com/)

~~~
mokay
Silex (silex.sensiolabs.org/) is also a good choice to start with PHP
frameworks, it's like Flask for Python

~~~
AbhishekBiswal
Micro-framework? I like Slim. Haven't use any other.

------
oweiler
I strongly recommend Udacity's Web Development Course:

[https://www.udacity.com/course/cs253](https://www.udacity.com/course/cs253)

------
el_guapo
For Python try Flask. Super easy to setup.

~~~
AbhishekBiswal
Switched to Flask from PHP, it's super fine. But there aren't many 'beginners-
tutorials' available, for people new to web development.

