Having been developing software for as long as I can recall, this is a question that people often ask me.
As I’m currently looking for a new job, this is a time where I can asses the changes in development over the years and how I think people should go forward with the development life cycle and anything you might want to consider.
I’m not the greatest software developer in the world, I will be the first to admit this. I’ve been developing for about 14 years, and I have made mistakes and I will again. I just think I’ve made enough mistakes to have an idea of what I’m doing going forward.
So you’re now wondering about the language to choose.
You need to consider the following when choosing your programming language:
- Current skill set
- User Experience
- Ability to maintain
- Support of the language
- Storage available
- So many others
So you know a programming language? Well done! That’s the first step. However remember just because you know a language, doesn’t mean it’s the best for the situation. I know how to write Java, I don’t think I’ll use it for my blog.
You have a Windows Server / Linux? This is a big thing, as you can use .NET on a Windows server and not on Linux (ignore Mono, it’s horrible). You want to create a website? Then you are looking at the ASP.NET / PHP choice most of the time. While both will work on a Windows Server. Only PHP can be run on the Linux box.
Are you planning to use IIS? Apache? Something else? Remember IIS is only on Windows.
Obviously if you’re writing a form based application, the language choices are different again and it this case I might very well use Java for both sides.
User Experience is a very important part of the development of a new software package. Unfortunately a lot of developers don’t see this as an important enough thing and many packages are technically perfect, but are unusable by the client. There are simple things to check this, like looking for too many clicks, loading new pages to show information that can be presented easily on one. I’ve used systems that have text boxes that can’t be edited and have to go through other screens to implement changes.
I’ve been a Windows Developer for a while now, not that I don’t dabble in others (this webserver is Linux). I see legacy packages written in VB6 and new packages in C#.NET and they show. The C# layout looks much more modern, the rounded edges that you expect in Windows 7.
The ability to support a language is crucial. Remember any large package is going to need more than one developer. Can you recruit these easily and within your budget? Look at job sites and see about availability.
Is the language nearing end of life? Don’t bother with a language with a short life left. Unless it’s completely unavoidable due to other platform constraints.
Storage, could be the Database size or the size of the files? Some databases are in the terabyte range that you can’t keep up. Sometimes you are limited on disk space, and in others by limitations of the language. SQL Server Express has a limit on database size that you can very easily reach.
So I could go on and on about the concerns of programming language choice and you can’t learn them all.
The languages I would recommend you learning or using are only a suggestion and you should asses the needs of your development. They are:
- Microsoft SQL Server
- ASM (Yes, ASM it’s great)