A guide for those who want to learn programming but don't know where to start. It guides you through selecting the right programming languages at the right time.
This guide is for you if…
This guide is for you if you consider that developing software applications might be interesting, but you don’t have a clue about how to program. Most of the people who want to learn programming and have no prior experience at all, find themselves in the situation where they don’t know where to start.
Of course, I suppose you have at least one year experience on using computer applications and you are completely accommodated with using an operating system like Microsoft Windows XP. If you don’t yet know how to format a hard drive, install an operating system, configure it, partition a hard drive… I’m afraid programming is not for you yet.
This guide is not for you if…
This guide is not for you, and in fact programming is not for you, if you want to become a programmer just because it is a well-paid job. Software development is not the kind of thing you learn overnight. To get a well-paid job you need a nice résumé plus years of experience. That’s why there is no one month course on how to program. Programming is more like mathematics where you need to exercise continuously. Don’t be scared, even if the high school’s mathematics left you with a trauma, you still can be a good programmer without any vast knowledge of mathematics.
Who am I?
I ask myself this question all the time. Even if I would love to say that I’m a programmer with over 20 years experience, I’m not. In fact a few years ago I was in the same position you are now – in front of the computer… not knowing where to start. As a side note, if this sounds to you like one of those ‘Learn how I lost 20 pounds in a week’ guide, it’s not. I don’t have a ‘before’ and ‘after’ photo of me.
Concerning my programming experience – look at the good part – maybe it’s better to get advice from someone who was recently in your position than from someone who started to learn programming 20 years ago.
Some programmers reading this may not agree with my guide. They might say something like: it’s better to start programming with Java and then continue with C++. However, each person has a different opinion, you can’t satisfy all.
Enough about me.
Am I too old / young to learn programming?
Are you too old?
Well, it depends… not so much on the age but on your ex-profession. I believe that if you are asking yourself this question you are over 25. If you are… let’s say… a 30-year-old sales manager with a degree in marketing and a nice salary. In this case, at this age and with no prior experience in software development, I don’t quite see you as a lead programmer at a software company. Of course, it all depends on your will and power of learning at that age. Don’t quit your job, because you won’t get a good job without continuously programming for at least 2 or 3 years. The best way to see if you can still learn and programming is for you is to follow step 1 and 2 of this guide. It won’t cost anything, just a little time spent for learning something new.
Are you too young?
You’re never too young in my opinion. Start programming while you’re in the elementary school and chances are you’re going to become a highly skilled programmer. Sixteen is also a good age to start learning.
What’s the cost of all this?
Programmers and other geeks are known to have less interest in their social life. It’s not all true, we have a social life, only it’s mainly based on the internet. As a side note, I’ll mention here that you need a permanent internet connection at the computer you are learning. You will permanently ask questions – how to do this, how to do that, why is that so, why is my code not compiling – and the only place you’ll get some good fast answers is on the online community of programmers.
The main cost of learning to program is time. Fortunately this isn’t wasted time – time spent for learning something new is never wasted. If you wanted to become a good programmer in a couple of years you’ll have to spend at least 6 hours a day, not necessarily programming without any break (unless you’re not human) but also spending time on some programming forums, newsgroups where you can gain experience.
I think I’m ready, shall we go for it?
Certainly yes.
From now on this guide will tell where to start and how to move forward. There will be programming languages, book and tutorial recommendations for each step.
Step 1 – Learning HTML – not quite a programming language
You saw thousands of websites until now, but you didn’t bother to find out how their done. Dynamical websites are created using programming languages like ASP .NET, PHP or JSP. No matter in which language they are written, they all end up being HTML pages. I’m not going to explain why and how because you’ll learn later when you’re going to have to learn one of these languages.
HTML is not really a programming language – it’s a mark-up language. You are probably thinking now – I want to program, not to… mark-up, why do I have to learn HTML? Moreover I don’t even want to make websites, I’m interested in software applications.
There are many reasons why you need to learn HTML first. One of them is that easier programming languages are usually designed for web programming. So before you move to a programming language like C#, Java or C++ you have to experience some easier language s like JavaScript. Remember that these programming languages and HTML work together, so you need to learn HTML. Another reason I can think of is that you’ll eventually use XML, which is another mark-up language, and it will be easier for you to learn XML (another mark-up language) because you already know the basic concept.
In conclusion, first learn HTML. HTML is really easy to learn and in a few days you should be able to make some simple web pages. However remember, the programming languages you are going to learn – they are nothing like HTML, because (I repeat), this is a mark-up language.
Also before recommending you any book or online tutorial I should tell you that there is also something called CSS, which you’ll often hear about. Almost any HTML book will also cover CSS – I’m not going to describe you what it is, I’m just going to tell you that it’s good to know CSS as it’s very easy to learn and you’ll surely need it if you want to make some nice looking websites.
One more thing: XHTML is almost the same as HTML, actually, it’s a newer, stricter version of HTML. There’s no big difference, if you learn HTML then it won’t take you more than half hour to understand XHTML.
Recommended book:
This book is perfect for the total beginner who has never written one line of HTML. Even if it has 480 pages, don’t let this scare you, in a week you’ll be creating some nice web pages. It also teaches you CSS, so after reading the entire book you’ll have some good design skills, which are always important even if you don’t plan in creating websites in your programming career. Because you never know when you may need it… to create a website for your company or for your portfolio… or perhaps just for fun.
It won’t take you too long to finish this book as it is a very pleasant lecture, and you’ll probably be so excited about the web pages you will create that it won’t take long until you reach the last page.
In this book you will also get a grip of JavaScript. Actually our next step implies JavaScript as a language to learn so don’t skip chapter 19.
Recommended links:
If you are really cheap you can learn HTML on the web. There are plenty of tutorials to choose from. Here are a few selected by me:
HTMLGoodies.com – Check out the HTML primer, it will put you up on writing HTML immediately.
W3Schools.com – Along with many other tutorials they have a well formed HTML tutorial and a nice CSS tutorial which are both useful also as a reference.
Recommended communities:
These are places where you can discuss HTML and ask questions:
Experts-Exchange.com – Experts Exchange is the place where you can ask questions and expect an answer in the next few minutes. Highly recommended.
HTMLForums.com – Here is a very active forum that discusses different HTML subjects and compatibility between browsers.
Step 2 – Learning JavaScript – a scripting language
Most programming languages, even if they differ in syntax they have a similar concept. For example in almost any programming language you’ll encounter variables and loops.
Perhaps you’ll get your first job as a programmer in C++ or maybe Java. No matter in which you end up programming at last, you don’t usually want to start with that language because it’s usually more complex than a simpler language like JavaScript.
You don’t have to learn JavaScript by heart, you don’t have to be an expert in programming JavaScript. JavaScript is, if you don’t know already, a scripting language. You can consider scripting languages as a lite version of a programming language.
It’s easier, less complex, therefore it’s very good to teach you to the basic concepts and give you an idea of how a programming language is like. For example, the variables, arrays, operators and loops in JavaScript are very similar to the ones in C++, Java, PHP, C# and almost any other programming languages. Sure, the syntax may be different and they may have a slightly different behavior, but the concept of a variable, array or loop is the same.
So when you’re going to learn the loops in PHP (in the next step) it won’t take you more than 5 minutes. It’s like driving a car. You learned how to drive on a SAAB and now you’re moving on to a Cadillac Escalade. You’ll get accommodated fast because you already know what’s important: how to drive.
JavaScript works a lot with HTML, because JavaScript is designed for web pages. It brings a little dynamism to your page and improves the interaction with the web page user. I’m sure you’ll like JavaScript mostly because it’s your first programming language and you’ll discover a brand new concept.
Before recommending any learning material, I should tell you what’s the deal with object-oriented programming. Object-oriented programming is a recent concept of programming based on objects. There are books with hundreds of pages that describe object-oriented programming so I’m not going to explain it in a paragraph. I’m only going to tell you that you’ll have to learn it. Except from the old programming languages, most languages have object-oriented capabilities including JavaScript.
Almost any recent JavaScript book also teaches you how to program object-oriented. It’s your decision if you want to skip that chapter and learn object-oriented programming with some other language like PHP or C#. Eventually you’ll have to understand the base concept of object orientation.
Perhaps you’ll end up being a programmer in some .NET Framework language like C# or Visual Basic .NET which is fully object oriented… so there’s no way out. Even if you’ll go the C++ or Java way… no one will hire a programmer that has no object-oriented programming skills.
Recommended book:
There are many good books that will teach you JavaScript, yet I selected this one because I think it’s the very suitable for the non-programmer, great to teach you JavaScript as your first programming language.
It will teach you variables, arrays, functions, operators, loops, event handlers, objects… these are common to many programming languages as I said earlier, so learn them good.
If you find out you like JavaScript and designing websites, you can also read chapter 16 of this book (An introduction to Advanced Techniques), where you’ll improve you JavaScript skills. It will teach you Regular Expressions which you’ll encounter later in other programming languages.
Recommended links:
Although you’ll get the best results from the JavaScript book, here are a few links to some JavaScript tutorials on the web:
HotScripts.com – HotScripts is a major resource of tutorials and scripts for different scripting and programming languages. It also has scripts and tutorials for JavaScript and I recommend you to try some of these scripts, see how they are done and try to do similar stuff yourself.
W3Schools.com – This famous website has a JavaScript tutorial that is also useful as a reference.
Geekpedia.com – How can I not recommend the website I have created. Geekpedia has a JavaScript section with a few tutorials including some introductory tutorials I made a while ago.
HTMLGoodies.com – Along with the HTML primers, this website also has a JavaScript primer that you should consider.
Recommended communities:
These are some places where you can discuss JavaScript and ask questions:
Experts-Exchange.com – Experts Exchange also has a JavaScript section.
ProgrammingTalk.com – A nice community of developers with a JavaScript section where you can get answers to your questions.
CodingForums.com – Great forums for web developers.
Geekpedia Forums – You are always welcome to our forums at Geekpedia.com.
Step 3 – PHP & MySQL – thousands of lines of code
You may fall in love with this duet. PHP and MySQL makes a very nice couple with which you can create interactive websites like Geekpedia.com. Many scripts like vBulletin, phpBB, phpNuke are written in PHP and use a MySQL database.
While you learn to program PHP and to handle a MySQL database, you may decide to go for developing websites and other web applications. It’s your decision, the next step (step 4) is the last one, and there I’ll show you how to go for both ways, the web applications way or the windows applications way. So beware, PHP can be rather addictive.
You learned JavaScript, which is a client-side language, now you learn PHP, which is a server-side language, therefore you’ll see some major differences.
While you learn PHP you will get deeper in programming therefore you’ll develop new skills and experience. MySQL will be your first contact with a relational database, and no matter if you’ll end up doing web or windows applications, you’ll often encounter databases. In addition, it’s a good introduction to Structured Query Language.
If you really like to program you will make some websites, perhaps some forum scripts or content management systems powered by PHP and MySQL. I encourage you to do that, a good programmer is a programmer with experience.
Recommended books:
It’s not very efficient to learn PHP and MySQL from two different books, as they work hand in hand. That’s why there are some books that teach you both PHP and MySQL. These two for example.
I learned PHP and MySQL from the book on the right (at that time it was the first edition). Very good, complete book.
The book on the right is also one of my recommendations. I had the chance to read from it recently and I think it’s also a good book for the total PHP & MySQL beginner.
Both books have practical examples (my favorite way of learning) so you’ll write some thousands of lines of PHP code.
Recommended links:
There are lots, lots (!) of tutorials and scripts for PHP & MySQL on the web. Here are just a few:
HotScripts.com – HotScripts is a major resource of tutorials and scripts for different scripting and programming languages. The PHP category is well organized and it contains tens of thousands of scripts and programs.
PHP.net – You will often find yourself coming to this website, as it’s the official website of the language. A great reference.
PHPBuilder.com – A community of PHP programmers with PHP articles and a rich code library.
DevShed.com – DevShed offers you professional articles on web development subjects and of course PHP and MySQL.
Recommended communities:
These are some places where you can discuss PHP and MySQL and ask questions:
Experts-Exchange.com – You’ll get some professional answers to your questions here.
ProgrammingTalk.com – ProgrammingTalk.com has an active forum named PHP & MySQL that you can join.
DevShed Forums – DevShed also has a big forum where you can get answers to your questions or discuss PHP & MySQL development.
Geekpedia Forums – You are always welcome to our forums at Geekpedia.com to ask your PHP questions.
Step 4 – Choose your final programming language
This is the last step. This is where you choose what kind of programmer you want to become.
Mainly there are two options – web applications Windows applications. That is: you either make websites, web services and work with technologies like SOAP, or you make software applications (perhaps for the Windows operating systems). Of course you can always do both. Actually in the communication era, it’s good to know a bit of web programming even if you’re planning on making offline software applications, so you’ll get the chance to work with web applications a bit.
In this final step, you can choose from programming languages like C# (C Sharp), Visual Basic .NET, Java or C++. Personally I recommend you to go with the .NET platform (C#, Visual Basic .NET), but instead you might like Java. It’s a matter of taste. Don’t go with programming languages like Visual Basic (the old one, not .NET) as they are obsolete.
If you go with the .NET platform, you can learn both the main languages: C# and Visual Basic .NET as they are similar because they are part of the same platform. Also, if you choose the .NET platform you can choose from Web Applications and Windows Applications, or both (as I said earlier). If you choose Web Applications you will be more interested in Web Services and ASP .NET.
Java is similar to C#. You can try it, maybe you’ll like it more. Also, you can try J#, Microsoft’s version of Java.
In conclusion, at this step check the characteristics of the .NET programming languages and compare them to Java or C++. Programming languages don’t quite conform with “one size fits all”, so you’ll probably love a language and dislike another.
Learning one of these languages isn’t enough, you also need to learn technologies like XML. Also you’ll need to know how to work with databases like SQL.
Before I move further I should tell you that I’m going for .NET, and because I have more C# knowledge than Visual Basic .NET or some any other language, I can only recommend you books on C#.
Recommended books on C#:
Some books will only teach you C# and some will only teach you Visual Basic .NET but many books will show you examples on both languages, and if you’re really ambitious you can learn both at the same time.
As I suppose this is are the languages in which you’re going to program for a long time from now, a book is not enough to teach you anything you need to know. You’ll need many books and lots of time spent developing.
First, you’ll need a book that will give you a taste of .NET. For this I’m recommending you the book on the left – C# How to program. Don’t let the 1500 pages scare you. It’s a beautiful book that teaches you C# by using real-life examples.
Along with it, the book from O’Reilly named ‘Programming C#’ is pretty good for learning C# and great as a reference.
If you are going for windows applications development here are two books I recommend. At the left side we have Windows Forms Programming with C#. The author of this book did a great job on teaching how to develop windows applications. It has a ‘photo album’ application that you develop while learning. At the right side, there is a well-known book by Charles Petzold. A bit similar with the book we discussed earlier, but paying more attention on GDI+ (a feature of .NET).
If you are looking to develop Web Application with C# I can recommend you the book on the left – Developing Web Applications with ASP .NET and C#. This well-written book will get you on coding C# for the web.
Further, you’ll want something more advanced. I got the perfect book for you.
It’s called Essential ASP .NET with examples in C#. A concise book that covers data binding and technologies like HTTP Pipelining.
After reading this and some other books on C# I believe you are getting ready for the MCAD exam. MCAD is a certification from Microsoft for .NET programmers. Here is more information on MCAD.
Preparing for the MCAD certification:
Microsoft recommends some books for preparing for the MCAD certification on its MCAD Requirements and Training Resources page.
In addition, I also recommend some books by Amit Kalani that will prepare you nicely for the exams.
At the left side we have the book entitled MCAD Training Guide 70-316: Developing and Implementing Windows-based Applications with C# and Visual Studio.NET, the training guide for the C# Windows Applications MCAD exam (70-316).
At the right, although it may seem to be the same book, is another book by Amit Kalani but for the 70-315 exam (MCAD/MCSD Training Guide (70-315): Developing and Implementing Web Applications with Visual C# and Visual Studio.NET).
Finally
Along with all the books I recommended at step 4 you will have to read more. Even the MCAD certification implies an XML Web Services exam, so you’ll have to read some XML books and then get accommodated with Web Services. If you are curious to see some examples of web services, there are some tutorials at Geekpedia.
Good luck with your career!