

Ask HN: What's the most easy-to-learn framework? - zaidf

I primarily program in PHP. Over the last three years, I have tried to learn various frameworks(rails, cakephp, symfony) only to give up after a couple days.<p>I feel like I am too used to my current development process yet I know that my current process is probably not the most efficient, time-wise and quality-wise. I have my own little framework I've naturally developed. But it is still a hassle to setup a new project with it. At the same time, I find difficult to adjust to the database magic that frameworks do.<p>So I am set on learning a framework. Is there a framework more easy to pickup than others? Or is that like asking what's the best programming language?<p>I know php/python pretty well. Thanks for your help.
======
coglethorpe
"I know php/python pretty well."

If you know Python, Django is rather well reviewed and you can leverage your
current knowledge.

I've started with Ruby on Rails in spite of almost no Ruby expernience. I've
found that the learning curve for the language was low (I've used
PHP/Python/Java before) and the framework was rather straightforward.

~~~
intranation
As a very experienced PHP and fairly experienced Python developer, I can back
up the notes about Django. It's by far the easiest Python framework, and the
full stack it comes with is very nice if you have a database etc.

Be warned it has a slightly steep curve for deployment if you're not used to
deploying Python/WSGI applications. Be sure to read the mod_wsgi and Django
deployment documentation first!

------
scott_s
Don't give up after a few days. It'll make a world of difference.

If you choose a framework in a language you're not familiar with, spend time
learning the language first, then learn the framework. Yes, it'll take some
time, but that's what it takes to really learn something.

------
ErrantX
KohanaPHP hands down.

They took codeigniter and pared it down to the bare essentials then rebuilt it
from scratch.

It's easy to use, has a wealth of libraries (though not too many to confuse
the issue) to build stuff with and is extremely fast.

As an example of how well it is written I recently built an entire
hotel/restaurant booking system (inc. room monitoring & payment gateway) in
around 350 lines (not including any HTML).

------
noodle
if you know php already, codeigniter, imo.

its the lightest-weight (edit: popular) framework and least restrictive. very
bare-bones by default. plus, the docs are great.

if you feel like subsequently moving to another php framework from there, the
principles are very similar and the transition would be easy.

~~~
intranation
Codeigniter, whilst good, only runs on PHP 4:

<http://codeigniter.com/user_guide/overview/at_a_glance.html>

which means they've missed all the performance and security improvements in
PHP 5 (like applying filters to user input), not to mention that PHP 4 is end
of life now.

~~~
arien
Taken from that same page: "Note: CodeIgniter will run on PHP 5. It simply
does not take advantage of any native features that are only available in that
version."

So, it does run on PHP5, just doesn't use PHP5 only features for the sake of
backwards compatibility. For PHP5 one can use KohanaPHP, as mentioned by
another comment :)

------
charlesju
What I have found helpful, coming from someone that now uses RoR but failed to
learn it the first time around, is that you need a project in place that you
are going to build using the new framework. Then you need to tell all your
friends and family that you're going to launch a new web app in X amount of
days, and that they should be excited about that. After establishing a
foundation of peer-pressure, you will be a lot more motivated to achieve your
goal with the new framework.

With that in mind, it seems to me that Django, RoR, etc. are all pretty much
the same difficulty to learn. It essentially boils down to some Active Record
component, a MVC model, and some funny sugar here and there.

------
hrabago
Frameworks can be difficult to learn if they are designed differently from the
one you've worked with before. I've been in your position where I was in a
team using our own homegrown framework and was switching to a more widely
accepted one. What we ended up using would not be considered an easy to use
framework today, but the switch was seamless for us. This was because the
framework we switched to worked almost the same way as our homegrown one (at a
high level, not at the implementation level). The patterns were the same, the
actors were the same, the interfaces between objects were very similar.

So my advice is, with ease of learning for YOU being your primary criterion,
read about the different frameworks out there now and see which one works
closest to what you've been using. Hopefully you've designed your framework on
sound patterns and known best practices and finding a similar one wouldn't be
too difficult.

If you picked ideas from other frameworks to implement in your own framework,
maybe you can start with the framework you copied from the most.

------
abyssknight
There is no silver bullet. Blood, sweat and tears is what you need. I played
with Django one night and then tried to repeat what I did the next day, but
unguided. I failed, and gave up. I started playing with Rails and the same
happened, but this time I snagged more training material and hit the books
again. This time, it stuck. Personally, I have to hit the subject from several
angles before it makes sense. Perhaps you work the same way?

~~~
swombat
Blood and tears are usually not required... I don't know of any frameworks
that physically assault you, and generally I'm quite happy when I'm learning
new things.

As for the sweat, you might want to invest in some deodorant, or perhaps turn
up the air conditioning.

~~~
abyssknight
:) Metaphorically speaking, of course. That first breakthrough is the best
feeling in the world, for sure. I enjoy learning new things, but frustration
is part of that process. If anything, frustration is a driving force for me.
If everything was easy it wouldn't be worth doing.

------
SteveC
Your problem was that you gave after a couple of days.

~~~
Travis
Agreed. I use CakePHP (used the dart-against-a-wall method of picking it from
the major frameworks). Now very familiar with it, enough so to understand its
limitations, and especially its strengths. Probably going to switch to Zend
soon, as I'm not the biggest CakePHP fan. But if you're only using it for a
few days, you're not doing yourself any favors. Try writing a complete app in
it (maybe an app you wrote a couple years ago, that you've always wanted to
rewrite...)

------
vamsee
I'm surprised that nobody suggested Web.py (<http://webpy.org/>) by Aaron
Swartz. Since you're comfortable with Python, that's the best starting point,
I guess. If you're ready to give Ruby on more shot, try Sinatra or Ramaze.
Both excellent light-weight frameworks.

------
apinstein
Use my php framework, of course ;)

<http://phocoa.com>

It is modeled after Cocoa development (Mac/iPhone apps).

If you already know Cocoa, that makes it very easy to learn since the
architecture and concepts are all the same.

OTOH, if you don't know Cocoa, then there's a learning curve. In that respect,
I suggest you follow others' advice and don't give up after a few days. Better
yet, find a mentor for that framework, it will speed up the learning curve by
a huge factor.

------
stcredzero
The one you manage to learn first because you really-really like it. Then, all
others that come along are somehow worse. You will then feel compelled to
engage in religious debates over this.

------
kez
I was quite a keen CakePHP user until it dawned on me how slow and clunky it
seemed to be.

Have since switched to Ramaze (<http://www.ramaze.net>) - a light, modular
Ruby framework. Bearing in mind I knew zero Ruby at the time, I have never
looked back. Definitely worth a look. (irc.ramaze.net/ramaze offers good
support, too).

~~~
Pistos2
That's irc.freenode.net #ramaze. Not sure irc.ramaze.net points there.

And +1 for Ramaze. :)

------
GiraffeNecktie
If the main criteria is only "easy", go with Drupal. Ok it's not a framework
in the sense that Rails and CakePHP are frameworks, but the modular
architecture allows you to snap together some pretty amazing functionality.
Bonus for you in that it's written in PHP.

------
theschnaz
I know php pretty well, I wrote an entire happy hour site with it. Which
framework is better/easier to learn cakephp, KohanaPHP or RoR. I hear so many
good things about RoR, but I've never used Ruby.

~~~
jraines
Ruby is pretty easy to learn. RoR is great, but the easiest Ruby framework to
learn is Sinatra.

------
asnyder
I would have to say NOLOH (<http://www.noloh.com>), but then again, I'm
somewhat biased. Check it out for yourself, and see what you think.

------
csomar
I have no idea but most of the guys i talked with recommanded "Code Igniter"
and said it's very good, you may give it a look

------
ucdaz
You should also check out <http://qcu.be/> It has a very cool auto-gen
function

------
walesmd
CodeIgniter, but I'm biased. :D

------
elouise
Catalyst

------
drahcir
web2py

