Php, Perl, Ruby, Java, or .Net. Many startups kickoff with one or two engineers and will often pick 'the best' technology stack, or just the one that they want to work on. The latest greatest framework.
It's my blog, so I get to be biased. I've seen about two dozen different startup environments. Not a huge number, but not a small number either. So my opinions are largely based on what I've seen these startup environments morph to after one or two years of development.
First, if you're building a product that's interfacing with native Windows systems, then you should probably be looking at a .Net architecture. Otherwise, my preference is the open source languages because of the infrastructure and licensing cost savings.
I vote a thumbs down on PERL as a web development framework. The language is very powerful, particularly for small projects, scripting, data processing, and even lightweight analytics. However, for web applications that tend to have larger code basis, I think there are better platforms. I've seen very large PERL code basis on the order of 1M lines of code. Ugly. That's all I can say. If you're strong enough to do PERL, then move over to Java and follow a framework so that others have a chance to build off your programming.
Ruby? Quite honestly, I haven't reviewed enough large sites using it to weigh in on this relatively new language. If you're a fan of Ruby, make sure you have a good understanding on where you'll find other Ruby programmers.
Python has been around awhile, but I know relatively few programmers that list Python as their top language. Same rule applies to Python as Ruby.
My general preference is Java (more on this next), but if the startup team is more design oriented and not from a traditional programming background, then I would recommend Php. Java is great for software programmers but if the development team doesn't have a strong Object Oriented background, then the resulting code will probably be a mess. A design oriented team might as well stick with a RAD environment like Php.
Why Java then? I could list several reasons; a very powerful IDE (Eclipse), a choice of app servers (open source and commercial), lots of web development frameworks to choose from based on your application needs.... But the most important reason is scalability, not processing scalability - I mean resource scalability. Most startups begin development work with a very small team and often with one (or a few) really fast experienced programmers. These developers pick frameworks that enable them to do rapid, agile development. When they need to add new development resources, they can find people that are familiar with the chosen frameworks and the new programmers can use the frameworks as a guide to learn the application specific presentation, logic, and data access patterns.. When the Founders need to upgrade their implementation in a specific functional area, they can apply standard refactoring methods to the appropriate areas of code.
This is not to say that this can't be done in other programming languages. It can. But in my experience, the combination of the OO background of Java architects, and the tools, frameworks, and standards in Java facilitate resource scalability.
continue reading "For Startups, My Two Cents on Programming Languages"
It's my blog, so I get to be biased. I've seen about two dozen different startup environments. Not a huge number, but not a small number either. So my opinions are largely based on what I've seen these startup environments morph to after one or two years of development.
First, if you're building a product that's interfacing with native Windows systems, then you should probably be looking at a .Net architecture. Otherwise, my preference is the open source languages because of the infrastructure and licensing cost savings.
I vote a thumbs down on PERL as a web development framework. The language is very powerful, particularly for small projects, scripting, data processing, and even lightweight analytics. However, for web applications that tend to have larger code basis, I think there are better platforms. I've seen very large PERL code basis on the order of 1M lines of code. Ugly. That's all I can say. If you're strong enough to do PERL, then move over to Java and follow a framework so that others have a chance to build off your programming.
Ruby? Quite honestly, I haven't reviewed enough large sites using it to weigh in on this relatively new language. If you're a fan of Ruby, make sure you have a good understanding on where you'll find other Ruby programmers.
Python has been around awhile, but I know relatively few programmers that list Python as their top language. Same rule applies to Python as Ruby.
My general preference is Java (more on this next), but if the startup team is more design oriented and not from a traditional programming background, then I would recommend Php. Java is great for software programmers but if the development team doesn't have a strong Object Oriented background, then the resulting code will probably be a mess. A design oriented team might as well stick with a RAD environment like Php.
Why Java then? I could list several reasons; a very powerful IDE (Eclipse), a choice of app servers (open source and commercial), lots of web development frameworks to choose from based on your application needs.... But the most important reason is scalability, not processing scalability - I mean resource scalability. Most startups begin development work with a very small team and often with one (or a few) really fast experienced programmers. These developers pick frameworks that enable them to do rapid, agile development. When they need to add new development resources, they can find people that are familiar with the chosen frameworks and the new programmers can use the frameworks as a guide to learn the application specific presentation, logic, and data access patterns.. When the Founders need to upgrade their implementation in a specific functional area, they can apply standard refactoring methods to the appropriate areas of code.
This is not to say that this can't be done in other programming languages. It can. But in my experience, the combination of the OO background of Java architects, and the tools, frameworks, and standards in Java facilitate resource scalability.