Should a Business Owner Care Which Programming Language is Used?
There is a lot of discussion out there about the programming languages. Which one is better? What should you use for your web application? Most of what you find is rather technical and the debate sometimes sounds more like religious fanaticism than logical comparisons.
As a business owner, do you really care? Java? .NET? PHP? Ruby? The list goes on. But do you have to know or even care? Just how much time do you spend choosing a technology to use for your web application to make sure you choose wisely, without wasting time you need to spend on other things?
The simple answer is that the selection of the right technology is important but not necessarily difficult. The level of importance depends a lot on what you do and what assets and skill sets you start with. But for the most part there are only a few options you need to consider and the factors you use to make that decision are straight forward.
Now keep in mind, we are about to simplify the issue for you. We want to make it easy for a non-technical business owner or manager to make a selection without having to become a technical expert. In light of this goal, we will start by narrowing our focus on the most widely used languages having the largest amount of existing capabilities and having a sufficiently large number of people out there you can hire to get the job done.
If you are a developer and feel we have unjustly left out your favorite web application development language, remember that we are not interested in including everything. We want to focus on what is important to business owners: quick, high quality and inexpensive web development.
To help focus on languages that are most useful for the business, we will restrict ourselves to these more popular choices. They are:
Web server languages
- Java
- .NET (C# and VB.NET)
- PHP
- Python
- Ruby on Rails
Now that we have a short list, how do we choose? The best approach is to ask yourself a few questions.
What technologies do I currently employ?
Does your business already have a large number of computers, servers and software? If so, you want to take inventory of what you use.
For those companies that use exclusively Microsoft software on their servers, you probably want to heavily consider .NET with C# and VB.NET. The consistency of vendor software across most or all of your systems will help with support, specialization and expertise of your staff and make integration across software applications much easier.
Of course, all the languages listed above will run web applications on Microsoft Windows. Your web application can be build on something other than .NET. If you are concerned about vendor lock-in (here often called "being married to Microsoft"), you may want to be careful. However, if you feel that vendor loyalty can strengthen your relationship and support, it can pay off.
If your company uses Linux, Mac or Unix servers, .NET is out. You can run .NET applications on Linux but it is not generally recommended and can lead to complications with the development and unexpected problems and costs. The rest of the language choices are all good choices for these server platforms.
What skill sets do I currently have or will have available?
This is probably THE most important factor in making your decision. Who do you have - employees, contractors and preferred / trusted vendors - and what skill sets do they bring to the table?
You should take inventory of what these individuals know and ask them what their opinions are. Even if they choose a language that isn't necessarily recommended here, they may have some deeper knowledge or expertise that makes their chosen language perfect for you.
Based on the skill sets of those you bring in to help with your web application development, if you do decide to go against recommendations listed here, you should at least challenge your team with why they want to use their chosen technology. Make sure these reasons are synergistic with your business needs and are not simply because it is what they like - take the emotion out of the equation. Above all, make sure they have addressed current and future needs of functionality, cost, time to market and future growth.
When it is at its highest use, how many people will be actively on the application all at the same time?
You need to start off by being realistic with answering this question. All too often entrepreneurial business owners become optimistic. They overestimate how many paying customers they are going to get.
Get an idea of how many users you will have when you first get started. Unless you have an existing customer base that will eagerly jump on board, it is highly likely you will start with a very small number of users.
Next, project the growth of users. The timeline for this growth is good to know but not super critical. You just need a general idea of how fast you will need to grow to keep the business going.
If you are going to need to support only a small customer base or your customers will use the web application infrequently, you won't need to be too concerned with supporting a high number of concurrent users (users all on the web application at the same time).
If, on the other hand, you expect to see a large number of concurrent users, you will need to be prepared to scale your web application to service that large number of users.
Small-scale applications (web applications that don't need to support a large number of concurrent users) can get by with any of the above languages.
Large-scale applications, on the other hand, will need a more enterprise level, scaleable software supporting them. This is most easily achieved with Java or .NET. Typically the largest companies use Java for their most heavily used systems. .NET can scale but can also be a little challenging and expensive if your user base is enormous.
How complex is my web application?
Does your web application require a large amount of complex logic, back-end processing or integration with other systems?
If the answer is 'yes', you should consider more of an enterprise level web development language like Java or .NET.
If the answer is 'no', and your web application is fairly straight forward, you may be better suited with selecting a simpler language like PHP, Python or Ruby on Rails. PHP especially is heavily used for web application development and there are a large number of pre-built systems out there that require very little custom programming to get you what you need.
How much money do I have to spend?
If you are running on a very tight budget, your best choice is likely to be one of the easier languages like PHP or Python or possibly even Ruby on Rails. (Of course, it is becoming more and more common to find web application development firms that can provide Java and .NET development without a large expense.)
If, on the other hand, you are willing to pay a little extra for the ability to scale your application or to set a good foundation for business growth, Java and .NET are a better choice and worth the extra investment.
How confident am I that what we build will be exactly what I need the first time through?
Unless you have worked for companies that have similar web applications or you are working on a new web application that is similar to one you already have, it is highly likely you will have to make changes after the initial web application development effort is completed. The initial offering will be your first test of the market and customers always surprise you.
If you really have no clue what to expect and your effort is more of a proof of concept, you should consider looking at Ruby on Rails. This web application development platform was specifically designed for rapid build and prototyping. There are ways to get rapid prototypes with PHP as well. However, Java and .NET are a little more difficult to use for this type of effort.
If you expect changes but know these changes will not require a full rewrite of the web application, just about any of the other options will suffice. The key will be to choose a web application developer who is used to working with businesses and making these changes. These more experienced developers can then make sure the initial web application build is done in a way that facilitates easy modification.
Web user interface languages
There are two sides to the web application development coin. One is what will run on the server. That was listed above. The other is what will run on the user's computer (inside their browser).
The options here are much smaller and the decision much easier to make. They are:
- Java Applets
- JavaScript
- Flash / Flex with ActionScript
- Silverlight
Do I need to support rich multi-media?
Video games and web applications that are heavy in animations, screen drawings and rich user interaction will likely need a technology designed for this more complex user interface. This is where you need to consider Java Applications, Flash / Flex or Silverlight.
Most web applications are simple enough not to need special technologies to manage the web site. If the most you will need are simple animations and a few cool sliding windows or menu drop downs, JavaScript will suffice. JavaScript is the only one of the above technologies that is guaranteed to be available to the user. The others require installed plug ins and are more complex and costly to build and maintain.
What technology am I using on the back end?
If the answer is .NET and you need rich multi-media (games, fancy video and animation along with user interaction) then you might consider Silverlight. It is a Microsoft technology. It will run on a Mac as well as Windows. However, if you are not using .NET, you may want to discard Silverlight as an option.
If you are using Java on the back end and need rich multi-media, your best bet is to use Java or Flash / Flex. This technology is provided by Adobe which also offers products to help integrate Flash and Flex into Java based servers.
For the remaining languages, if you need rich multi-media then usually Flash / Flex is the best choice. This is because it is more heavily used, has been around much longer, has greater support and there are more developers available that have mastered the technology and its tools.
What devices will my customers use to access the application?
If you are wanting to deliver web applications to the iPhone, iPad, Droid phone or Droid pad then you want to stick to using JavaScript only. If you need rich multi-media, there is the promise that JavaScript will be able to handle that reliably on all browsers in the near future. For now if you must deliver rich multi-media to a phone or pad device you may have to resort to creating specialized applications for each device.
What kind of "cool factor" do I need in order to impress people to buy from my business?
You can get a lot of "cool factor" now from JavaScript. I am always surprised to see web sites that continue to use Flash for fancy looking animations. They look fancy but are often really simple with JavaScript.
However, you still may need to fall back on a technology specifically designed for the rich multi-media. In that case Flash / Flex is often the choice.
Digging Deeper
In the event you want to know more before making a decision, there are a number of comparison web sites that help you understand the pluses and minuses of each technology. Check into what similar businesses in size and market use. And do a little Google searching based on what your team has recommended.
If you love statistics and want to see some details on what these languages are and how they are used, check out this article on the Ten Programming Languages for 2011
If you are interested in the popularity of programming languages, check out this site.