Lee Semel

Does The Language Matter?

Thanks to this new Web 2.0 bubble, nearly ever week or so I get contacted by a startup or small company looking for someone like me to join up. I’m always happy to give them advice. Inevitably, one of their biggest worries is what programming language to use. “Should I use PHP, Python or Ruby?” they ask, as if their choice of programming platform is the sole factor that determines the ultimate outcome of their business.

Well, I’m going to give the definitive answer to the question, “Does the programming language matter?” Yes and No.

  • Yes, because some languages are much more productive than others. What could take days to program in a strongly-typed, compiled language like Java or C# could be done in an afternoon in Ruby or PHP. Don’t get me going about J2EE, which you shouldn’t be using unless you know exactly why you need it.
  • Yes, because different languages promote different work styles and cultures, and will make it easier or more difficult for you to work together and find additional programmers. As an example, PHP is designed with minimal restrictions, promotes a free-for-all programming style, and everyone in every country around the world seems to know it. Ruby, especially with Rails, has more structure and elegance, making it easier to write maintainable code, but it’s harder to find people.
  • Yes, because some languages make it easy to make quick updates in response to your customers, and some languages require a lot more work, planning, and ceremony to do anything new.
  • Yes, because some programming environments are still evolving while others are more mature, and you may want to use a less cutting-edge language just so you can worry less about the technology and spend more time on the business side. For example, Lisp can be extremely cool and productive, but getting it connected to a webserver and getting set up with wide array of libraries isn’t an easy, out-of-the-box process the way it is with C# or PHP, so you may end up spending a lot of time on low-level tech issues, rather than working on areas that matter more.
  • Yes, if it’s an enterprise product you plan to sell to businesses to install on their servers. In this case, code it in the language your target market’s iT departments require (usually Java or C#).
  • No, because there’s so much more to making your business a success than whipping up some code. You’ve got to have a good business model. You’ve got to find good people. You’ve got to do marketing, customer service, and create a well-designed product. The initial build of the site is going to be just a small percentage of all the things you need to do right.
  • No, because bad programmers can produce bad code in any language. There’s no silver bullet that prevents untalented or indifferent people from generating garbage.
  • No, because the system architecture matters more. If you design an overly complex architecture, or one that’s unwieldy, or slow, you’ll produce an unmaintainable, unwieldy, slow site. Look at Friendster as an example. The initial build of Friendster was done in Java, and was incredibly slow. Could Java have handled a site like Friendster? Sure. I don’t have first hand access to what was under the hood at Friendster, but I can’t imagine it was clean, elegant, or well-thought-out. The language that a system design is expressed in doesn’t make a difference if the overall design is poor.

Ultimately, none of your customers care what’s under the hood, as long as it works and does a good job for them. So choose what works best for your particular situation, and entrust it to the most talented and motivated people you can.

Leave a Reply