views:

173

answers:

4

Greetings,

With a friend, we have plans to start a startup company that will serve as a special type of e-commerce site thus having a successfully working website is a must.

Now we are at the brink of technology selection for running the website.

  • We want to be agile as possible as we can, which means we want to develop the site as soon as possible (but solid)
  • Scaling well (indeed I am not saying some giant site such as Twitter but possibly a million of users/day as our best).
  • We will hire one or two developers to help us build this site, maintain and extend for future. An issue arises here that, in my country Java and C#/.NET developers are easiest to find while later languages/frameworks are harder such as Django or Ruby on Rails.
  • We have the capita to pay for key technology (but indeed none to throw away :) ).

We both know python/django(this is where we are most confortable), php and java(no web based app experience for java but Java SE). Beside that, we are always willing to learn new technologies.

By considering these criterias, what language and framework would you suggest and please explain why ? (also it would be great if you also mention about other key parts such as web server software or database selection with your suggestion)

Thanks

+4  A: 

I say go with what you know, that will help you get a solid site up as quickly as possible. All of the technologies you mentioned have been used to implement sites with large user bases. Get the site up and running first, before worrying too much about the million users per day.

Kaleb Brasee
+1  A: 

Nice one, good luck! You're probably in a very fortunate situation as there are lots of technologies out there that will do the job very well.

As a result I think you're right in thinking of people ahead of the technology.

I'd go further and suggest that process should also be an important factor. Things you need to think about are:

  • How will your requirements (stories) be defined? Who's your customer, and who can be your customer proxy?
  • How often will you release?
  • Where will your team work? It's definitely a good idea to be together.

As far as technology itself is concerned, I've personally found the combination of C#, ASP.NET MVC, NHibernate and MySQL to be pretty good for the first couple of million users. Just about the only things you'll pay for there are licences for the servers, support for MySQL (if you reckon you'll need it - it's expensive) and hosting.

Even for a small shop I'd recommend Subversion and Hudson (or Cruise Control) if at all possible, and you'll definitely need some kind of virtualisation.

If you do decide to go down the Microsoft stack route it's worth looking at their BizSpark programme, which is designed for startups. You get a bunch of development licences (including MSDN and Visual Studio) in return for a commitment to pay a few hundred dollars after three years. Naturally there are deployment licences to look at for Windows and when the three year period expires you'll be required to purchase the full licences for your team - the idea, I think, is that by then you'll be able to afford it.

On the other hand - the Java stack can genuinely be implemented for free, and is also very very capable. So if you're really strapped for cash that might be the best option.

Jeremy McGee
+1  A: 

DB - My experience limits me to Oracle 10G (prohibitive for startup) & MySQL. I would suggest MySQL. Here is the article that got me started on MySQL -

http://www.computerworld.com/s/article/9017778/How_Digg.com_uses_the_LAMP_stack_to_scale_upward_?source=rss_news50

Middleware Since you have used dJango, you now how rapid the development can be. Scalability of dJango is moot, since the main bottleneck will be DB.

I was doing research to find dJango like in Java, but could not. You will have to rely on regular Struts, et al. if you go that route. The problem with Java - You have to re-invent the wheel for user-auth/sessions etc. If you no option then I guess that's o.k. else I see brighter future with dJango for startups.

Very Best of luck in your endevour.

PlanetUnknown
+1  A: 

I wouldn't worry too much about finding developers who know the specific technology you choose. Good developers can develop in any language. Bad developers can't develop their way out of a paper bag even in a language they've been using for decades. That's a dirty little secret of the software industry that very few hiring managers know. Choose a good backend technology and hire some good engineers. The two decisions are orthogonal.

Don't be afraid to go with a newer framework or language, as the most talented engineers are most likely to be the ones pushing the boundaries and learning the latest technologies.

Java is a behemoth. Nobody ever got fired in the last decade for choosing Java, but it certainly will not give you an advantage over your competitors in terms of rapid development. It's solid, it's an industry standard, but it requires a lot of boilerplate code and initial time investment.

There are several good choices that give a good combination of rapid development and maintainability. I personally would go with Django and Python, because I know them to be good, solid technologies and well supported (though I would substitute Cheetah for Django's crappy templating engine). Python is great for active development, and it is also reasonable to maintain down the road (especially with Django) because of the enforced discipline.

Good luck with your decision, and remember, it's the people that make a company successful, not the tools.

Eddie Sullivan