views:

239

answers:

6

This question is not about which is the best, it is about which makes the most business sense to use as a company's platform of choice for ongoing freelance development.

I'm currently trying to decide what framework to move my company in regarding frameworks for web application work.

Options are

  1. ASP.NET MVC
  2. Django
  3. CakePHP/Symfony etc..
  4. Struts
  5. Pearl on Rails

Please feel free to add more to the discussion.

I currently work in ASP.NET MVC in my Spare time, and find it incredibly enjoyable to work with. It is my first experince with an MVC framework for the web, so I can't talk on the others.

The reason for not pushing this at the company is that I feel that there are not many developers in the Media/Marketing world who would work with this, so it may be hard to extend the team, or at least cost more.

I would like to move into learning and pushing Django, partly to learn python, partly to feel a bit cooler (all my geeky friends use Java/Python/c++). Microsoft is the dark side to most company's I work with (Marketing/Media focused). But again I'm worried about developers in this sector.

PHP seems like the natural choice, but I'm scared by the sheer amount of possible frameworks, and also that the quality of developer may be lower. I know there are great php developers out there, but how many of them know multiple frameworks? Are they similar enough that anyone decent at php can pick them up?

Just put struts in the list as an option, but personally I live with a Java developer, and considering my experience with c#, I'm just not that interested in learning Java (selfish personal geeky reasons)

Final option was a joke

http://www.bbc.co.uk/blogs/radiolabs/2007/11/perl_on_rails.shtml

+1  A: 

As you said for the media/digital marketing sector php is the way to go.

I love .Net (it would be my first choice if the target market wasn't a factor).

I would really look for good well rounded developers regardless of their tech or market as opposed to ones with "media/digital marketing sector" experience.

ctrlShiftBryan
I choose this answer as it answer what I felt was the truth, there are the most php developers out there, although careful vetting is required.
optician
+1  A: 

It is possible to find good/experienced/reliable developers with knowledge of multiple frameworks. If this is a requirement, it is of course possible to vet candidates accordingly.

Given that you're referring to freelance development, it would probably make sense to add the dimension of "where the developer is based" into your thinking, as dealing with someone who's a stone throw's away compared to dealing with someone abroad or another city may affect how you work together. This means that where you are based also affects your choice: if you're based in a small town, there will be less quality canditates close to you with suitable skill sets.

I'm currently learning Symfony for myself, and work as a freelance advisor/product developer for a site that's built with CakePHP. Although an experienced PHP developer should be able to make the leap from one of the above to the other quite quickly, there's a fair amount of framework-specific intricacies that can only really be learnt by coming across the problem and then searching for the solution, or by being guided by someone who already knows. Symfony is considered to have good documentation, but I feel that there's a quite a lot in it that's also not in the documentation and that can really only be learnt by doing it.

I also worked for a company quite recently who used Symfony, hired high-quality PHP developers only, and if I recall correctly, it was about a month or two for new guys to get familiar with the code and the workings of Symfony, and start becoming properly productive.

Hope that helps.

Tom
+1  A: 

In my (heavily biased) opinion, Django is gaining some traction in this sector. Off the top of my head I can think of a number of high-profile news organizations that are making significant use of Django and I've seen reports of organizations utilizing Django for putting up special one-off sites quickly for unique coverage of special events or circumstances. I know firsthand that PBS and National Geographic also use Django extensively for their web properties and I understand Discovey Channel does as well. There is a nice testimonial about how Michael Moore's site was rebuilt quickly using Django: http://blog.concentricsky.com/2009/10/michaelmoore/. I'm not sure if MSNBC has begun utilizing Django internally, but they did acquire Everyblock.

A few others I'm aware of that use Django heavily:

  • Mahalo
  • NASA
  • University of Texas

I've also seen that Django is being used by startups outside the media sector so I wouldn't say it is specialized toward a particular business sector. There are a lot of organizations out there that have been sort of silently using Python internally over the years and so Django is quickly becoming a natural option for web-based services. Python actually has decent roots in the scientific communities, financial sector, and I've spoken with a number of people in the entertainment industry who use Python in their digital effects / post production pipelines.

Maybe not the most riveting content overall, but there is some good info in here: http://djangocon.blip.tv/file/3041158

Brian Luft
Another aspect to consider is that you get all the benefits of Python and it's rich ecosystem of libraries and packages that can address all sorts of software engineering problems. That's not to say the other languagues/frameworks can't. PHP has always felt very web-oriented to me. Obviously .NET and Java can handle much more beyond web apps but they're also a bit heavyweight IMO. Python has been under active development for 2 decades, has a vibrant community, and runs on pretty much anything that could be described as a mainstream OS.
Brian Luft
By standardizing on Python you have a lot of creative mobility. Here is a good example of what I'm referring to: http://ramblings.timgolden.me.uk/2010/03/04/what-do-we-use-python-for-at-work/
Brian Luft
A: 

Look at your clients. Frameworks are just tools, you will have to go with the tool that suits the particular job. This also means your choice to dive into a framework will choose your future clients.

Many SMB shops need PHP because that it is the easiest to host and is interoperable on many layers of "platform" (not just OS, but also supports all DBs etc.)

  • ASP.NET MVC: I heard a lot of awesomeness about it, I like C# as well. But I can't afford to go only with the options Microsoft provides (database for example) and Microsoft products only really support they own stuff.
  • Django: Expected to gain huge momentum, but I'll wait until the language itself (syntax) becomes stable.
  • CakePHP/Symfony: CakePHP is very easy to pick up and is a good choice if it fits all the requirements.
  • Struts: Quite heavy, I would learn Spring (MVC) instead.
  • Pearl on Rails: Haven't really used/seen it, so no idea.

You could also consider to learn a framework that is radically different from you current knowledge.

sibidiba
For Django: Python (and it's syntax) is very stable yet Django is very mature. Maybe you should stop waiting :)
Hellnar
I'm really not into Python, but as far as I understand, DJango is not running on Python 3 for example, which is incompatible with previous releases.
sibidiba
A: 

So I love Symfony. It does all I need for a Framework to work fast and clean.

The structure and the architecture is pre-defined so everybody knows where to put stuff, so you can easily work together with a whole bunch of developers.

I would never chose CakePHP over Symfony, because if you have to make changes to a model, you can never again generate code after the development has started. CakePHP just overwrites everything.

I sure lost all my code a few times. Really annoying.

Symfony just extends the generated code and that is where you develop.

Here you find a good discussion about CodeIgniter (with which I develop at the moment, and it is no MVC and PHP4-based) and Symfony: codeigniter-vs-symfony

The learning curve is a bit steeper for Symfony, but it has enough complexity for all situations I ever encountered.

My next project will again base on Symfony 1.4. And if you can wait, there will soon be Symfony 2.0

dazz
A: 

ASP.NET MVC, but only if you can use both a frontend and a backend developer for each project. It'll probably be harder to find developers with both competences and you might have to push .net-developers a bit to get them to use MVC.

svinto