Computer programming (or coding) is one of the largest subject fields in the world. Millions of programmers code away to give you apps for your desktop and mobile. Developing countries have jumped on to this bandwagon years ago to alleviate themselves out of poverty and provide their citizens access to a very robust economy that computer programming holds on to.
In Pakistan, there are 1000s of talented programmers, churning out codes in the wee hours of the night, slowly and surely aiding our economy and in turn their wallets. Is enough being done? No.
Ask any IT/Technology company and the one constant complain you will hear is the lack of quality coders. What is preventing us from becoming world class coders? Why can we educate our students and churn out quality coders in our country, considering how easy it is for us to have access to all the study material (and teachers) that are available today on the Internet?
The problem is not that simple. The root cause as pointed out by many people, is the education system. Our universities and colleges are the first entry point for computer programming and that too is flawed in many ways.
On the high-school level, computer programming is virtually non existent. Barring a few eliter schools, the majority of the high-schools in this country have a curriculum that has an absolute vacuum when it comes to computer programming.
To understand why computer programming is important, and why we need to inculcate coding as part of our curriculum early on, do watch these videos:
Learn to Code via Code.org (1 Minute version)
Learn to Code via Code.org (5 Minute version)
Learn to Code via Code.org (9 Minute version)
There is a vast list of programming languages from which we can choose and code from. Two websites that really are a source of much needed inspiration and perhaps implementation in Pakistan are HackReactor and DevBootcamp – both of these teach people how to code, intense program in as little as 9 to 12 weeks. They are currently offered only in the US, but if someone were to model this in Pakistan, and charge a decent premium, whilst delivering the kind of quality that these two organisations put out, a lot would change.
There are computer training institutes in Pakistan, but they are literally struggling to stay afloat because of the price wars amongst institutes. Add to this, there is the issue of teachers (instructors). The instructors themselves have very little training in true Computer Science curriculum. Most of the graduates become teachers, just to supplement their income. They cut-borrow-paste material from the Internet and try to pass it on as authentic course material, doing a massive injustice to the students who enroll hoping to become quality coders. Most instructors that I have talked to, have very little industry experience, and those that do stand out, have limited time in learning and polishing their skills set. Very, very few instructors are truly shining examples, and these are paid well and retained by the companies they work for.
For a student wanting to learn how to code, the road to self-education can be an information overload. Which course to choose? Which one pays off well? Which one is the correct course to start learning with? What is the true path towards become a quality coder?
The above is Codeeval‘s list of most popular coding languages (for the year 2013). This list (and the one below) however, should not be taken as the definitive list. There are literally 100s of languages and apps one can learn. There is a huge world of Big Data for which companies are desperately looking for coders. Then there is a surge in the jobs for coders who excel in NoSQL, specifically Apache Cassandra, MongoDB and CouchDB. The list is literally endless, where one graduates from the coding itself to using apps that require you to have a prerequisite of coding, like modifying the Linux Kernel or large distributed computing using Hadoop or Google’s MapReduce.
But, I digress. For most, the 10 or 20 most popular programming languages would be an excellent menu to start from. Choose a language to your liking, and take it from there. If you cannot decide on which language to start with, I would always recommend you get started with HTML. Basic HTML is something you can dive into from Day 1.
Whilst, everyone has a different approach as to which language they choose, you should not be in a hurry to decide. Take your time, learn what each language does, its advantage over the others. Its weak points. The market for it. In simple words, take good 1-2 months (in my opinion) and learn about all the languages in the images here (depicting their popularity).
RedMonk published their Programming Languages Ranking (for January 2013). This is also a decent read (for the slightly advanced) on what is in demand out there (click on image to enlarge)
No matter how you look at it, the languages that are highly popular today are:
I hav tried listing below a few resources that I have personally visited and read up on. The amount of resources available on the Internet, are in the millions. If you are looking for expanding your horizon, improving your skills set, perhaps you should seriously look at coding as a gateway to a world that is full of promises.
References / Study Guides:
- I’d like to start with web-related programming, what should I start with?
- How do you explain the basic terminology of Git in the easiest way?
- What are the best books for learning Python?
- Web Development Tutorial: Learn PHP, MySQL, jQuery, CSS and Java (phpacademy)
- What makes C++ better than Java?
- What should I read and view to become a self-taught software engineer from scratch?
- What the are best sites for learning programming?
- What can I do to improve the quality of my code?
- What language would you recommend a beginner to learn: Java, C or C++?
- In layman’s terms, what are the major programming languages, and what are they used for?
- What are some good online tutorials to learn basic HTML and/or CSS?
- Software / Resources to learn Website Design?
- What are some good beginner programming projects?
- What websites can help you learn to code?
- What set of programming languages should I enroll my 10 year old son in, who has just started learning HTML/CSS at school, and wants to learn web programming?
- Learning to Program on Quora
- StackOverflow – One of the best resources on the Internet today related to programming. A community driven Q&A website.
- PyPy – a fast, compliant alternative implementation of Python
- What is a good book to learn Objective-C for programming on iOS?
- Mixu’s Node book: A book about using Node.js
- Erlang Programming Language
- Treehouse: Learn to build websites, create iPhone and Android apps, code with Ruby on Rails and PHP
- Clojure: Clojure is a dynamic programming language that targets the Java Virtual Machine. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.
- Code Academy: Learn to code interactively.
- PHP Programming Tutorials and Reference Guide
- CakePHP – A PHP framework that makes building web applications simpler, faster and requires less coding.
- CodeIgniter: Fully baked PHP Framework with a small footprint.
- Phabricator: Open-source collection of web applications which makes it easier to scale software companies. It helps software companies communicate about software effectively. It was created at Facebook.
- LearnStreet – great website to get cracking with learning how to code. A great section in LearnStreet is called Code Garage which is a project playground where you can tinker with existing code.
- Great article on Object Oriented Programming: A Critical Approach by Udemy
- Udemy: Start learning from top instructors (has courses related to non programming as well, but also has a lot of programming courses, paid site, but very economical)
- Code.org – The online movement to enable everyone to learn how to code
- HackReactor: Learn to Code. 12 weeks intensive course in programming (only available in the US)
- DevBootcamp: Intense apprenticeship for becoming a coder in 9 weeks.
- List of Interactive Programming Websites as seen on Reddit.
- Programr: Build cool stuff, right in your browser
- Google Code University
- P2PU: Learn anything with your peers. Online and totally free
- Khan Academy: One of the best sources for e-learning on the Internet. Has tons of courses on computer programming.
- Learn to Code the Hard Way: Learn Python, C and Ruby the hardway, by coding from Day 1.
- The Next Web: So you want to be a programmer, huh? Here are 27 ways to learn online. (Really good resource, highly recommended)
- List of 32 free online programming/CS courses (MOOCs) with feedback (exams, homework and assignments) as seen on Reddit.
- General Assembly: Learn to Code.