

Ask HN: What framework to learn? Unusual situation - m43

I am a student in New York. My (well off) uncle has offered me $10,000 USD to build a fully functional web application for an idea of his, with a deadline in mid-January. He is doing this as an incentive for me to learn how to program - I have experience with Wordpress and the like, but nothing substantial.<p>I have spent the last few days heavily researching which framework is suitable for this project, and now I find myself in choice limbo. It seems that whichever framework I choose to learn from scratch can do everything I need, once I invest enough time in it - so now it is a question of which is the easiest to pick up and implement. I am aware that this question has been beaten into the ground innumerable times, however, the urgency of this project and my current lack of knowledge is holding me back from making a decision based on what I've read online.  I appreciate any input on your experience with beginner programmers.<p>The web application is a CRUD app that requires subdomains separate from each other, each with several hundred authenticated users (that either register or are imported), frequent batch/individual editing of a table of those users with some specific functions, and a decent amount of email sending.<p>It seems like this could be easily accomplished with Rails, Django, Symfony, or CakePHP. Which of these (or other) frameworks and respective languages offer the best environment for someone to learn from scratch? What books or online resources would you suggest?<p>I am only allowed to ask for advice, unfortunately I cannot pay for assistance with this project.
======
karolist
If you haven't done anything with web before (I mean, no working sites
developed and running), this deadline seems unrealistic and you should start
negotiating to extend it considerably.

All your mentioned choices are good, it depends which language you'd like to
associate yourself in the future more often than not.

If it was my first project, I'd start from scratch though, learning framework
and it's conventions without this experience might lead to sloppy code as you
haven't been exposed to the bottom layer of technologies you're working with
yet. This is not the same as saying "learn asm before you go up", web ain't
that difficult to understand, you'd be much more well rounded developer by
learning the bottom layer first.

Also, for me, learning a framework properly takes a long time reading the
docs, mailing lists, forums, it might not be a good move to learn framework
under a deadline.

If you do decide to build a mini-framework and code library for this yourself,
I'd recommend looking through Kohana [1] PHP framework. Very readable and
clean code, not over engineered to the point where it's impossible to
understand it for a junior developer.

For python, try web.py.

[1] <http://kohanaframework.org/>

~~~
swah
Folks are recommending Flask these days, because IIUC web.py has stopped. I
only had good experiences with Flask, and you're productive in a couple hours.

~~~
karolist
Thanks, I'll be sure to check Flask out

------
wgx
Thought process:

Rails or Django will stand you in good stead for future projects and 'hire-
ability' versus any PHP framework.

Rails has easy hosting with Heroku.

Django has a (slightly) less welcoming/active community than Rails. [1]

A: Rails.

[1 [http://www.embracingchaos.com/2010/05/choosing-a-web-
framewo...](http://www.embracingchaos.com/2010/05/choosing-a-web-framework-
python-django-vs-ruby-on-rails.html)]

Edit: +1 for the comment regarding timescales - you will likely need a
substantial extension.

~~~
kls
While I don't really do any of these, I would second this recommendation,
Rails and Django are growing where PHP has kind of peaked.

For me personally I don't use any of them anymore, I write web apps with
JavaScript/CSS/HTML and I write back end services with Java or Node. Once
mastered it is simpler than the server side frameworks, but it require
understanding of the core technologies, it may be a little daunting for a
beginner to start writing apps this way, because no one has packaged it up
into a platform like ROR. You have to go out and assemble the pieces because
they have not been assembled for you.

~~~
swah
What are your experiences with this style of writing web apps and SEO?

~~~
kls
Most web apps that I create don't have SEO concerns, the sites that market
them have SEO concerns. Lets delineate them as web sites and web apps for the
sake of this conversation.

A web app for me, replaces a desktop app, and does not need to be index-able
by the search engines. There are exceptions like social type web apps, but for
the most part it is not a concern in the apps I build. If I do have SEO
concerns for a web app, I use Googles #! fragments, so that Google can parse
the web app, in which case I just put a headless web browser on a server and
serve the Google crawler through that headless browser. Now that Google can
index sites that use JavaScript it is even less of a concern.

Now for web sites that are used to market the application, I use Wordpress,
Drupal, Alfresco, or some other content management system. I try to stick to
pure web technologies like HTML and CSS and push them out to a standard web
server, I am not a big fan of having a CMS that dynamically serves content,
sometimes there is no other choice but I try to minimize it.

Delineating web apps from web sites and using the appropriate technologies for
each, usually keeps the two very clean, if I cannot delineate the two and I
have heavy app requirements I will mix the two but I have only had to do that
with one app I ever built and that was before the #! pattern was available.

------
Egregore
It seems that since you worked with Wordpress, it will be easier for you to do
just plain PHP or CakePHP, I will suggest you try plain PHP, try to be as
stateless as you can and it later will scale easier.

------
saiko-chriskun
sorry but that deadline is not happening :P. as for your question, though, out
of the frameworks listed I'd go with Rails, personally, although that's just,
well, me. It's not like the others are less 'powerful', so you'll really have
to try them yourself and see what your individual style is.

In regards to Ruby, as well, I might even suggest going with a smaller
framework like Padrino or Sinatra to start off with. See
[http://www.horsesaysinternet.com/code/rails-is-not-for-
begin...](http://www.horsesaysinternet.com/code/rails-is-not-for-beginners/).

------
swah
Do you SQL?

