

Ask HN: How do I get started making a web app? - solipsist

I have been contemplating the idea for a while, and now I think I'm ready to start building a web app. Unfortunately, I have no idea where to start. However, based on the number of '<i>Show HN: Look at the web app I built this weekend...</i>' posts on here, I know there are many people who have experience with building them.<p>A little background: I know some basic Java and am going to continue learning it this year through AP CompSci. I've worked with HTML and CSS, but have only been exposed to Javascript a few times. I have also tried building some Java web apps with Google App Engine, but it seems to take a while to get started.<p>My goal is to build a few web apps in between now and next summer. I would like it to improve my programming, whether that be with Java or some other web based programming/scripting language that I would have to learn. At the same time, I hope to end up with some fun results that could be shared with friends and added to my resume/portfolio.<p>What I've just described is of course what everybody wants. But I am willing to dedicate time and effort to get things done. I am also not afraid to learn a new language, if that what turns out to be best option.<p>Now what I'm looking for is a easy-to-learn platform that I can use to build dynamic web apps on. Preferably one that I could learn from and, at the same time, produce quick results.<p>From what I've heard, PHP might be the best when it comes to web apps. However, I'm not exactly sure how easy it is to learn. I know there are some hip and new extensions to JavaScript, such as Node.js and Backbone.js. Then there is Ruby on Rails, Ajax, etc. And since I already know Java, might I as well try the Play framework (which people seem to like)? Yet there are so many frameworks/platforms out there - how do you choose which one to learn and use for your weekend projects?<p>It'd be great if I could get some feedback on which platforms to use and any tutorials to go along with it. Thanks in advance!
======
mindcrime
If you already know Java, but you want something that enables rapid
development, and uses a more dynamic language, I have just the ticket for ya:

Groovy on Grails[1]

Download and install grails, and you can have your first webapp up and running
in a couple of minutes. The Groovy[2] syntax will be pretty familiar to you
from Java, but it has dynamic features that Java lacks. Grails also has
plugins for tons of popular libraries and extensions, which make adding
functionality to your app pretty seamless for many scenarios.

There's a lot of great "getting started" info here:

<http://www.grails.org/Tutorials>

and the "quick start" guide here:

<http://grails.org/Quick+Start>

Of course Grails is for the server side... you'll probably still want to bone
up on your javascript skills, including possibly something like JQuery. I
haven't used backbone.js, but have heard good things about it... might be a
cool thing to learn as well; looks like it would be useful for building more
advanced client-side javascript stuff.

[1]: <http://www.grails.org>

[2]: <http://groovy.codehaus.org/>

~~~
solipsist
Thanks! This was a very helpful comment.

You mentioned a good point about JavaScript. By sticking with Java, it'll be
easier for me to get started and yet I will still learn a ton on the client
side with new things like JQuery.

However, I read that the Play framework might be better than Groovy on
Grails[1]. Have you heard of it and, if so, what do you think about it?

[1] - [http://stackoverflow.com/questions/1597086/any-experience-
wi...](http://stackoverflow.com/questions/1597086/any-experience-with-play-
java-web-development-framework)

~~~
mindcrime
Just keep in mind that Java and Javascript are two totally different things,
and have very little in common. The naming thing is just a historical legacy
of some branding / marketing strategy that Netscape jumped on back in the
'90s.

As for Play Framework... yep, I've heard _of_ it, but I haven't used it.
Everything I've heard has been favorable, but by the time I got wind of it,
I'd put a lot of time into Grails and am using it pretty heavily now. And if I
were to switch away to something else now, I'd look hard at Lift or something
else using Scala. But Scala would probably have a steeper learning curve for
you, which is why I didn't mention it before. With Groovy, the syntax is
mostly a superset of Java, so it's very easy to start writing Groovy as just
"java files renamed to .groovy" then introduce the Groovy stylings and idioms
as you learn.

But anyway, yeah, spending some time playing (no pun intended) around with
Play and evaluating it, probably wouldn't be a bad idea either. :-)

------
jeffpalmer
Just jump in. That's exactly what I did 5 months ago and I am almost finished
with my first real web app that I built 100% myself.

I was in a similar position as you when I first started. I knew some HTML/CSS
and dabbled in PHP a bit. I took a look at Ruby/Rails and Python/Django as I
was unsure of what language/framework I wanted to learn. I decided to learn
Python/Django and it has been a wonderful experience thus far.

I used the following to learn Python/Django

<http://learnpythonthehardway.org>

<http://docs.python.org/tutorial/>

<http://www.djangobook.com/>

<http://docs.python.org/>

<https://docs.djangoproject.com/>

Stackoverflow.com is also an incredible resource when you have a problem you
cannot figure out. Search for an answer or ask a new question if needed.

Good luck!

~~~
mindcrime
+1 for Learn Python the Hard Way. I've sent a number of people to read that,
and the reviews have always been very favorable. I learned Python from a
different book and random online tutorials (to the extent that I can say I
know Python), and kinda wish LPTHW had been out when I started with it.

And while I still stick to my recommendation of Groovy on Grails for the OP, I
will say this... for anyone who wants to do Python, it _is_ a pretty cool
language. It's fairly easy to learn, makes it easy to write readable code, and
has tons of libraries and docs.

I'll also chime in a mention of Pylons... I was using it a bit back in 2008,
and thought pretty highly of it. I understand that - since then - some "stuff"
has gone on... merging projects, renaming, etc., blah.. I guess what was
Pylons is now Pyramid or something? But either way, at least a couple of years
ago, it was pretty impressive framework.

------
andrewcurioso
This site gets a lot of criticism but it is a good jumping-off point:
<http://www.w3schools.com/>

It will teach you the basics of PHP, XHTML, CSS, and Javascript. But you might
have to do some of web searching to answer your questions... use it like a
map.

I personally like PHP because it allows you a lot of freedom. There isn't any
framework as part of PHP so you can get up and running quickly. That was very
helpful for me when I started with PHP 10+ years ago.

Granted once you get good, for your "weekend projects" you will want to pick
up a framework like CakePHP (very much like Ruby on Rails) and start building
your apps on that. CakePHP has a nice blog tutorial [1].

Whatever you choose for a language / database / etc. good luck and have fun!

[1] <http://book.cakephp.org/view/219/Blog>

------
lincolnq
It doesn't really matter whether you use Play, Grails, Django or Rails. What
matters is that you actually sit down with a few hours and follow the
tutorial.

You have permission to start coding. Go forth and build!

------
pbreit
Jump right in and start building something that interests you. An important
learning technique is grinding through a real-ish world problem.

If you're open to the idea, I suggest Python and Web2py. With a bit of
programming knowledge, I suspect you could pick up both Python and Web2py in
less than a week and be coding with reasonable efficiency. The Web2py "Book"
includes a summary on Python which is enough to get you started. The nice
thing about Web2py is you can easily run it locally on Mac/Windows/*nix and
deploy to a server whenever. Good luck.

------
BvS
<http://ruby.railstutorial.org/> (the online version of the book is free).

