Developing... an option
The open source community has changed the very way we look at software. The very non-commercial nature of it makes you wonder whether there is any future in software development.
When you see so many people developing software for free, you are sure to get the impression that it isn’t a very lucrative career.
However software development is far from a profit-less venture. There are still a large number of companies which develop applications, and provide software services. There is no lack of programming related jobs out there, it is just that the bar has gone up.
Even if you don’t intend to take up programming as a career, learning programming languages can be a lot of fun. It is like learning how to speak in another language, it gives you access to another programming culture and community.
Developing... desktop applications
Here, by desktop applications we mean to encompass all conventional computer platforms, x86, x86_64. For the most part this means programming for Linux, Windows, or Mac OSX.
While most programming languages are capable of targeting any of these platforms, there are some languages which are more platform biased. The core of Linux programming and its kernel itself is written in C and Apple platforms favor Objective-C.
The number of desktop programming languages is so diverse that it is impossible to learn them all. Yet there are a few that we might constantly run into in our programming endeavors, and a minimal knowledge of them is highly recommended.
All said and done, these are the programming languages that every developer should know:
C and C++
The syntactical similarities between C and C++ mean that by learning one, you essentially learn the other. C code will require very little adaptation to compile with a C++ compiler, however the languages differ in paradigms. A large amount of code is still written in the C programming language, and as such you are bound to run into it sooner or later once you start programming – learning C is thus a worthy investment for any programmer.
Windows is undoubtedly the most popular operating system you will find on personal computers, and as such, Microsoft Visual Studio remains a popular choice as a programming environment. The Microsoft .NET SDK is used to build applications in the recent Visual Studio products:
.NET isn’t a programming language, instead there are multiple programming languages which can be used to build .NET applications. Much like Java, .NET applications are compiled to byte code which Microsoft calls the Common Intermediate Language (CIL) which is then run by the .NET Common Language Runtime (CLR). Many of Microsoft’s technologies can use .NET as their programming system, so learning a .NET language means that you can write for any platform which is .NET capable . Microsoft Silverlight and ASP.NET are examples for web technologies which utilize .NET. While this is a Windows technology, the open source community is hard at work on the Mono framework, which will enable .NET applications to be written for Linux-like operating systems.
Computers have become much more powerful now than we could have imagined a few years ago, and this has also led to a change in how people develop applications. We are not talking about applications becoming larger, or having more visual effects, but about the way application are run or compiled. The abundance of computing power has led to the rise of interpreted languages such as Ruby, Python, Perl, and the overhead they consume is no longer that significant. Python and Perl are both very popular for writing scripts for the *NIX environment.
It is impossible to list all the languages you can use to write desktop applications or even those which you might need to develop in. On one hand, you can learn popular languages to make you suitable for a large number of jobs, and on the other hand, by learning some of the less popular languages, you gain an edge over the mainstream developers. For example, by learning some of the older languages such as FORTRAN and COBOL you can be of immense use to organizations which need to deal with applications written in such code in the past.
Developing... web applications
For web development, you need to know the languages of the web:
The web is HTML. Whatever goes on in the back-end is irrelevant to the user, as all they will see is what the final HTML code renders. You have to start web development by learning HTML, and no, knowing how to use a WYSIWYG editor like Dreamweaver won’t do.
CSS, HTML’s sister language is about as important for a web developer today. While HTML gives you the raw data and layout of the web-page, it is CSS which gives it style, and grace.
A static website is a stagnant website. Unless all you need to do is showcase pictures of your cats, you need to know at least one server-side language to make your website worthwhile. Some of the most important tools are
Possibly the most popular server-side scripting language for the web, and free and open source. If you have decided to get into web development, it is a good idea to know this even if you choose another language to develop in.
SQL (Structured Query Language) is not a programming language, but rather a language for describing how to access data from a database. Since any dynamic website you make will in most likelihood require a database back-end, it is necessary that you learn how to query the data and manipulate it using SQL.
A successor to Microsoft’s older Active Server Pages, ASP.NET is another popular server-side scripting language. It allows you to use any .NET language to code your web applications. If you’re already planning to develop on .NET, this will be just an HTML throw away.
JavaServer Pages use Java as the server-side scripting language to make websites dynamic. If you already know or plan to learn Java, then you should add on this one for good measure.
While Coldfusion is not nearly as popular as some of the other options listed here, it is still is very much in use in intranets of some enterprises. It has a rather expensive server, however it has enough free learning resources to get you started, and a free developer version of Coldfusion is available for testing your applications.
The Perl language has some of the most powerful features for manipulating text strings, making it a powerful language for the internet, which is essentially described in HTML text. Most paid hosting providers nowadays support Perl as a server side language. The popular Movable Type Blogging platform / CMS is in fact written in Perl.
Python is becoming increasingly popular as a server-side language for websites. It is in fact the language of choice if you wish to build applications which will run on the “Google App Engine” cloud computing service.
Developing... mobile applications
By developing applications for mobiles, you have the capability to reach into millions of pockets. Mobiles reach a different audience than personal computers as they may be used even by people who are not computer savvy, or in fact those who don’t use computers at all. While this is not much of a consideration while choosing what programming language to develop on, it does mean you need to take a different approach.
Unlike PCs, where you can write software using the same programming language for any OS, mobiles tend to be a little more picky. If you want to write native applications for mobiles, almost every OS will require you to learn a new language!
Even some of the lower end mobile phone out there today support Java applications, ensuring that any Java application you write will reach the maximum audience.
Applications for Android are also written in Java; however the dialect is a little different. Java’s presence in almost any computing field means that it is indeed an essential skill set if you intend to become a developer.
Being the language of the iPhone SDK, it is important to learn if you need to build applications for the iPhone. While you can build applications for the iPhone in C++ it is a rather more complicated process than using Objective-C.
Your skill set in Objective-C will not go to waste, since it can also be used for developing applications for Mac OSX and even PCs. However Apple has very vague policies regarding which applications will be accepted in the Apple store, so it is important you keep their terms in consideration.
C++ for S60
The language of choice for Symbian, Nokia’s preferred platform. The dialect of C++ used by Symbian differs from the standard, and is supposed to be tougher. While Symbian usage in mobile phones is decreasing, it is still the operating system on many mobile phones out there and will continue to be the OS for Nokia devices for the foreseeable future. Nokia will also make Symbian open source soon, which might affect its popularity for the better.
Developing... my career?
It is very possible to make a career out of programming, but if you intend to, it is important that you get into it as soon as possible. Leave nothing unexplored, and go where your curiosity takes you. Experiment. It is the best way to explore any programming language, and is more important than reading any book or taking up any course.
Any certification that you intend to get for proving your programming skill is not as important as the unique perspective you bring to programming. There is no dearth of code monkeys swinging on the branches of multiple certifications.
If you are indeed passionate about programming, you will find that there are plenty of opportunities. Think about it, programming is something that gazillions of open source developers find rewarding enough to do for free!
Here’s to a brilliant career in development ahead of you, and hoping we’ll get free licenses to any software you write!