What language is best to start a career in programming?
I was recently asked for advice on how to get started in a career in programming, I found that I had a lot to say and that it is not a simple question.
As far as what is the best language goes, it really depends on what you want to do and where you want to do it. I would say that the powerhouse language is, and has been for a very long time, C++. It is fast, widely used and very powerful. Is it the best language for you? Well that depends. C++ programmers can make a wide variety of things but the tend to make things on the hardcore application/operating system side of things. Is that what you want to do? And BTW if you are seriously, or not so seriously, considering programming as a career (or hobby) I highly recommend "The Pragmatic Programmer" by Andrew Hunt and Dave Thomas. It is an older (in the tech world) book, but the information is invaluable, it is easy to read and it will help you improve and enjoy your code. Here are a couple questions to ask yourself, they may seem obvious, but I have found them to be important and wish someone had made me ask them when starting out.
- What type of programs do I want to write? - There are many many types of programs out there including games, operating systems, drivers, web applications, databases, productivity tools, etc. And there is a market for all of them, however coding drivers is more difficult and specialized and has a smaller market than writing business applications.
- Where do I want to live? - This may seem like a silly question right now but think about it. When you get a career going you will be in demand by employers (if things keep improving in the tech field). The language(s) you know and the types of applications you write are in higher demand in different areas of the country. For instance Microsoft is in Redmond and a lot of Seattle companies use Microsoft products. Sun is in the Bay Area and Java is used more often there. If you are an OS coder you will most likely want to live in Redmond or go open source. Something to think about.
- What is in high demand/Who am I working for? - Are you simply wanting to be a programmer and work for the company that treats and pays you well or do you have other ideals in mind. Would you rule out working for Microsoft for personal reasons? Remember Microsoft treats its employees very well but also works them hard. If you are simply happy to work programming computers, you will want to find a niche that people are paying for.
- What is important, elegance or end result? - A good language is not always a successful one. Successful languages are not always easy to use. Smalltalk was way ahead of its time but was not often used. Java has many nice features that make it easy to use and maintain but it is generally slower than poop. C++ is very powerful but allows you to make some huge mistakes. Ruby (my current pet language) is not the most popular language for what it does, but has a strong community around it. You might call it a cult language. Visual Basic is easy to learn and highly supported and is integrated into nearly every Microsoft product (very useful) but is lacking in nearly other area.
- Do I want to support a specific operating system? - Languages such as Java are truly cross platform. C has compilers for almost any computer and can be ported to which ever. You are not going to find VB on a Linux box. Of course there is always the web where the language is JavaScript on the client side and wide open on the server side.
- SQL? - SQL is a language I use every day because I use databases. It is quite different from other languages however if you were a DBA you would have to know it. Most applications have to store their information somewhere and SQL is the language that is done with.
- Status? - No matter what type of programmer you are someone will thing they are better than you simply because you use language X and create Y type of programs. Does this matter to you? What about your audience? Do you want it to be large or small? Are you wanting to run a small company or be part of a bigger one? All of these things will affect your status. Personally, I've worked in environments where I've been looked down on because I was on the low end of the coding scale and where I was the only techie person around. They both had advantages and disadvantages. When you are on the low end of the skill scale people can point you in the right direction so you can learn quickly. When you are the local code god it gets very lonely.
- What experience do I have? - Apply what you already know.
I'm sure you were looking to think about all this, just asking a simple question. I do think that these questions are important when planning a career in technology.
Here are a few lists to give you somewhere to go from here:
Languages I know
- Visual Basic (Including VBScript, VBA)
- Java
- SQL
- Powerbuilder
Languges I have used
- Visual Basic (Including VBScript, VBA)
- Java
- SQL
- Powerbuilder
- C++
- Perl
- Ruby
- AWK
- BASIC
- ADA
- Assembly
- Delphi
- Javascript
Languages I would recommend to someone wanting to be a programmer
- Visual Basic - A decent beginner language and the brunt of the coding world will get you a sense of accomplishment when you see your code run. It is widely used and the glue of the Microsoft world. It is used widely and with .NET is the same code underneath as more sophisticated languages like C#.
- Ruby - As I said this is my current interest. An amazing elegant language. Though you will want to know another language as well to find work.SQL - You won't code any applications with it, but if you are using databases you must know it.
- C++ - Much of the world runs on C++. In fact most of the software you are running right now was most likely written in it.
- JavaScript - If you are doing any client side web programming you need this.
- Java - This is an excellent introduction into programming for the simple reason that it supports good application design which is very important.
Other things you should know about
- XML
- CSS
- HTML
- Object Oriented Code
- N-Tier Applications
- Databases
- Refactoring
- Unit Testing
- Design Patterns
- UML
Books you should read early in your career - I love tech books, read as many as you can.
- Pragmatic Programmer - Andy Hunt / Dave Thomas
- Design Patterns - Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides)
- Refactoring - Martin Fowler
Well there it is. My biggest piece of advice is keep learning, don't settle on one language or technology. There are many web resources that can keep you in the loop such as slashdot.org, msdn.com, oreilly.com and google.com
There is also a good essay on being a programmer here.

18 Comments:
A very nice guide for programming. I read it and recommended it to other beginner programmers like myself. Keep it up :)
Very nice, balanced look at programming languages.
The only significant omission in your list might be PHP. It's pretty much the de facto language for Web programming.
People who use the other dynamic languages like Perl, Python, or Ruby tend to look down their noses a bit at PHP, but if you do any amount of Web programming, you will run into it.
I, too, am a huge fan of Ruby. It's a joy to work with, and makes most programming tasks pretty effortless to accomplish.
Really nice job with this guide.
"Sun is in the Bay Area and Java is used more often there"
As a professional engineer for Sun, I have to point out that Sun has people everywhere in the US and worldwide. I work in Texas, my second-line manager is in Oregon and the rest of my department is spread between 4 timezones.
As for Java, while true that Java is Sun's baby it is by no means the only language in use here. Most of the Solaris kernel is written in C, with the remainder written in either SPARC or INTEL assembly. OpenBoot ( a IEEE standard ) uses device dependent boot loaders written in Forth and our service processors for the Enterprise class servers use software written in Java, C and assembly. In user-land, Sun employees use whatever languages fit the problem domain; perl, ruby, awk, lisp, PHP, FORTRAN, ADA or
any other language you care to mention (ok maybe not funge99 or BrainF*ck ).
I would agree on the programming what is hot at the moment that will get you work. You always have to adapt to new the new things, even if you master some programming language it is very likely that something new and hotter will come around. Once you learn one language it is not that difficult to learn new languages as long as you can motivate yourself to do it.
"As a professional engineer for Sun, I have to point out that Sun has people everywhere in the US"
Of course, I wasn't implying that Java is not used elsewhere. In my experience moving from California to Seattle and looking for work, I found that my Java skills were in far lower demand than they were in California. Additionally, many employers showed a preference for Microsoft products. Microsoft happens to be local here, but they too have operations everywhere.
Good point and thanks for the feedback!
This post has been removed by a blog administrator.
Increase your Adsense Earnings
I noticed you have adsense ads on your page, Would you like to increase your earnings from them, Free and Legitimate way to make your clicks increase.
Come see my Blogger blog and it will tell you more.
Hey, you have a great blog here! I'm definitely going to bookmark you! The information and Internet marketing product evaluations that you provide are great for beginner webmasters.
Now, I have a related business degree law online site/blog. It pretty much covers business degree law online related stuff. In addition, I supply the secrets that I used to make $12,124 from Google Adsense last month.
Come and check it out if you get time :-)
Last month I made $12,124 with Google Adsense...Click
here for free on how you can do the same!
Hello, just visited your blog, it's informative. I also have a website related togoogle adsense software. So make sure you visit and hope it's useful.
Dear friends, here is a really cool site that gives you a lot of FREE information that you can really use. Get FREE Daily and Weekly Foreign Exchange Outlook, Rates, Trends and Currency Shifts. Click here: FOREX
This is an excellent blog. Keep it going.You are providing
a great resource on the Internet here!
If you have a moment, please take a look at my 10 job paying top usa site.
Have a great week!
Hey Fellow, you have a top-notch blog here!
If you have a moment, please have a look at my 100 application job site.
Good luck!
popup killerhttp://www.hover-it.comGood judgement comes from experience and a lot of that comes from bad judgement ."W Rogers"popup killer
Hey Fellow, you have a top-notch blog here!
If you have a moment, please have a look at my work america site.
Good luck!
A very informative article for would-be programmers. Thumbs Up!
http://Free-Resume-Samples.blogspot.com
AdSense may be one of the fastest and easiest ways to monetize traffic to your web site whether you have products or services for sale or you simply provide free content to your visitors adsense
Very good information. I was looking for a definitive answer but you clearly explain that cannot happen in the programming world. You give a good basis to work through the problem on ones own.
Post a Comment
<< Home