Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

This quote by Joel Spolsky resonated with me:

Which is better, XUL, Eclipse's SWT, or wxWindows? I don't know. They are all such huge worlds that I couldn't really evaluate them and tell. It's not enough to read the tutorials. You have to sweat and bleed with the thing for a year or two before you really know it's good enough... Unfortunately, for most projects, you have to decide on which world to use before you can write the first line of code, which is precisely the moment when you have the least information.

I'm enough of a perfectionist that I hate the thought of picking a framework for a new project without complete knowledge of what the best choice is, but the fact is that, as Joel says, there's no (practical) way to have complete knowledge of what the best choice is.

Right now I'm trying to pick a web framework. Right now, based on our target platforms and my judgment of various languages, I'd pick Python over Ruby, C# / ASP.NET, or Java / J2EE. Of the available Python frameworks, based on this SO question, I'd pick Pylons over Django. (Our intended projects are somewhat specialized, not content-related, so Pylons' flexibility sounds better than Django's CMS support and built-in admin. Our team has relatively little experience in any of the alternatives, so that's not a significant factor.)

But Django is substantially more popular than Pylons, and Ruby on Rails or ASP.NET are substantially more popular than Django. So what am I to conclude?

  1. The very popular choices are more popular because they're much better, so I should pick one of the more popular choices instead of what I'm currently planning.
  2. The very popular choices are not necessarily much better, but more popularity means better documentation, better community support, better add-ons, and an easier time finding developers with prior experience, so I should pick one of the more popular choices instead of what I'm currently planning.
  3. Any of the options would be good, so I should pick what sounds best for my target project without stressing about popularity.
share|improve this question

3 Answers 3

up vote 7 down vote accepted

Don't choose based on the community

Well, unless you're looking for good documentation and support.

Find something that you are comfortable with and use that. Then pray it has a decent user base so when you get stuck you aren't up a creek. If it doesn't have that, create the user base. Rip the source apart and figure out how it works so when other people have questions you can answer them.

That said, you're comparing ROR (Ruby) to Django (Python) and ASP.NET (.NET). There are different uses for each. Ruby people like ROR. Pyton people like Django. .NET developers will probably use ASP.NET. I don't see a lot of competition between languages, more like internal struggles. Compare CakePHP and CodeIgniter, or better yet, search SO for php framework and see what you come up with.

I recently started work on a project, and the goal at the time was to use Java. Turns out I haven't done as much Java web development as I thought, heck there's a Struts 2 now. After playing with about eight different frameworks I settled on Play! Then ended up scrapping that a month later in favor of ditching Java and moving to Node.js.

My point is sometimes you aren't going to know until you start coding, and even then you might be up to your knees before you realize that your choice was really bad.

share|improve this answer

Dive into the problem domain:

1. Write down the options known to you

You will miss a lot, but don't worry: you'll stumble upon more information in the process.

2. Write down how those options relate to each other

E.g. what are the programming language used, the supported operating system, system requirements? Is the project active? Is it written in OOP or FP?

You will miss a lot, but don't worry: you'll stumble upon more information in the process.

3. Write down how those properties relate to you

E.g. do you hate Perl or have no clue about Forth? What would be hard or impossible in practise? Are you comfortable about a database-dependency?

You will miss a lot, but don't worry: you'll stumble upon more information in the process.

4. Filter the options and try those options left

E.g. exclude all projects written in C# because you're a Mac guy. Exclude projects with a small user base.

Implement a dummy with the left options to gain more insights.

Start over with Step 1 if necessary.

share|improve this answer

Pick a new and popular language. Python and Ruby are both new and popular. They both run on too many web servers to count. When it comes to a web framework pick the popular one for the language you chose (since the language is new, you can bet the framework is too).

Examples are few and far between:

1) Ruby on Rails 2) Python/Django

OK, so WHY popular? "What kind of a fool is this guy? Picking something just because the masses like it? If the other kids in kindergarten jumped off a cliff would you?"

Popular because you know that all kinds of folks with all kinds of problems to solve have used the language/framework combo to solve their problems. The language/framework has benefited from their bug reports and they've documented their experience in countless blogs. All because the language and framework were popular.

I'm not going to answer that last question ;)

Why new? Cause'. Cause the old languages didn't know that coding was to create. They thought coding was to structure code and data. Ruby and Python try to get out of the way.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.