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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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. One shows you how to use the Google Web Service and another how to use a Geo IP web service.
Good luck with your career!