What are some of the best ways to learn programming?
this was the answer that touched me !!
We were taught the C Programming Language.
And I absolutely hated it.
I just couldn't get myself to understand the syntax. It was all Greek and Latin to me. The semicolons, the weird keywords (int, char, etc.) hurt my eyes. It made no sense. So much so that I used to memorize all the code in my textbook in order to pass my exams.
I had developed an aversion towards Computer Science.
1. Get a good teacher.
Yes, there are lots of amazing books out there which cover everything that you could possibly want to know as a coder.
But there is no substitute for a good teacher.
In my 9th grade, my teacher told us that #include<stdio.h> had to be the first line of every C program. There had to be a semicolon after every assignment.
Why? Because she said so.
My 11th grade teacher went deeper into the nitty gritty of why C and C++ employed its seemingly weird syntax.
Why header files had to be 'included'. Why variables had to be prefixed with a data type. Why semicolons were required.
I study at an IIT. And frankly, the way programming is taught here is very disappointing (like my 9th grade teacher).
They expect you to grasp the pattern of how code is written and duplicate and manipulate it according to the needs of the program.
I'm sure this must have been the case with you.
For if you had actually understood why and how C++ does things, it wouldn't have appeared to be that difficult. At least, not at an introductory level CS course.
If you cannot get yourself a good personal tutor, I'd suggest registering yourself for Harvard's CS50 course on the edX platform.
The course instructor, David Malan is simply the best teacher I've ever come across. The way he teaches Computer Science is mind boggling.
I finished 12 weeks worth of course material in a week. It was addicting. And I've probably learnt more in that time period than I have in all the CS courses I've attended in college put together.
2. Practice
You've seen the 'Hello World' program.
You find it very simple. May as well move on to the next portion of the course.
Wrong.
You stop right there. And write the code down in your text editor. Change the output text. Ask the user input and greet accordingly. Tinker with every piece of code you write.
Learnt how to add two numbers?
Good. Now subtract them. Multiply them. Divide them.
Learnt loops?
Practice outputting fancy patterns. Calculate factorial of a number.
Learnt arrays?
Print the sum of the first thousand numbers. Implement matrix multiplication.
The only way you'll ever be a great programmer is by practice.
I disagree with the notion people have that some people are just 'gifted for coding'. It's simply not true. Some of the most amazing programmers I know struggled with code, at first. But incessant practice made them virtuosos of the art.
One really good platform to practice coding and get yourself introduced to competitive programming is CodeChef (Programming Competition,Programming Contest,Online Computer Programming). Do try it out. :)
Read this only if you are interested in web development and designing.
If you are well versed in a programming language such as C, C++ or Java, Web Development really is a piece of cake.
I didn't even know HTML when I joined college last year. And in a span of a semester, I managed to learn all web technologies required to build a fully functioning social networking site.
This is how I went about teaching myself web development. Of course, different people have approached it in different ways. However, this approach, if you choose to follow it, has a very gentle learning curve and is perhaps the least daunting.
1. Learn HTML and CSS
They are languages used to structure and design your pages. And as they aren't programming languages per se, you'll find them extremely easy to grasp.
Two resources I strongly recommend are the 'Head First HTML & CSS' book and the online 'HTML & CSS' course offered by Udacity.
The book --> Head First HTML and CSS: Elisabeth Robson, Eric Freeman: 9780596159900: Amazon.com: Books
The course -->Classroom - Udacity
2. Learn JavaScript and jQuery
Now that you know how to build static web pages, it is time to learn how to add some interactivity to it. Enter JavaScript and its most popular library, jQuery.
Again, I'd strongly suggest the Head First titles and Udacity courses.
In addition, you could try out the projects at Codecademy (Learn to code).
Books --> Head First JavaScript Programming: Eric T. Freeman, Elisabeth Robson: 9781449340131: Amazon.com: Books
Head First jQuery (Brain-Friendly Guides): Ryan Benedetti, Ronan Cranley: 9781449393212: Amazon.com: Books
Courses --> JavaScript Basics for Beginners Course
Intro to jQuery
Learning the aforementioned languages is really not that hard.
It took me around 2 months to get a good grasp on them and once I was done, using only what I had learnt from the listed resources, I was able to build this: Dramatics Section
Which brings me to my third point...
3. Build a website
You cannot exactly call yourself a 'web developer' if you haven't built a website from scratch.
So, with your new found knowledge, go ahead and build any website you want to. It could be your personal website, a blog or a website related to a cause or a group (Like the one I built).
Once you're done with these, congratulations! You can now call yourself a front end developer.
4. Learn SQL and a backend server scripting language
Now, you are ready to move on to building much more complicated websites such as social networking sites like Facebook, microblogging sites like Twitter or e-commerce sites such as Amazon and eBay.
You now have a choice of choosing a server side scripting language. Almost all the developers in my college know more than one.
The most popular languages right now are Python, Ruby, PHP and Node.js
i) Python
Python is one of the easiest languages to learn. It closely resembles the English language. And it is probably the most powerful language right now. It has got libraries for almost everything you could possibly want, an extremely strong community and tried-and-tested web frameworks such as Django and Pylons.
Udacity is an excellent site to learn backend programming in Python and Django. As far as books are concerned, I'd suggest the Head First Title, the online Django book and 'Core Python Applications Programming' by Wesley Chun.
Check out the following links to learn more:
Full Stack Web Developer Nanodegree
http://www.amazon.in/Head -First-...
ii) Ruby
Ruby was built with the intention of making programming fun. Ruby is extremely flexible and easy to use. The Rails framework built on Ruby is arguably the best web framework out there. In fact, a major reason for the growing popularity of the Ruby language is because of Rails.
The best resource for learning Ruby on Rails is the tutorial by Michael Hartl (You actually build a microblogging site like Twitter throughout the book. How cool is that!). You can find it here:
Ruby on Rails Tutorial (3rd Ed.)
iii) PHP
PHP is the world's most popular server side scripting language. More than half the web runs on PHP.
But that doesn't make it a really great language. PHP gets really messy when you use it in big projects. My advice would be to give preference to Python and Ruby over it.
Nevertheless, if you plan on learning PHP, 'Head First PHP and MySQL' would be a decent start (You build a Dating Website in the book. Pretty cool.)
iv) Node.js
Unfortunately, I do not know much about Node.js. It is Javascript on the back-end. It is relatively recent technology (created in 2008) and is still in the budding stage.
5. Build another website
Now that you've mastered server side scripting, go ahead and build the website you always wanted to! Sky is the limit here. There are very few things that you cannot do with your new found Full Stack Developer skills.
I found a social networking site called Retronet once I was done learning PHP. It had features that I always wanted in Facebook.:Anonymous confessions (you'd only know the gender of the confessor), the number of male and female views your profile got and a questionnaire that matched you with the most similar person of the opposite gender on the site.
Developing Apps for mobile devices is slightly different than coding browser apps.
However, Udacity has a fantastic Android and iOS Development Nanodegree programs that take you step-by-step to becoming a professional developer.
You can find the required resources here:
Android Developer Nanodegree
iOS Developer Nanodegree Program
As far as Android Development is concerned, 'Professional Android Development' by Reto Meier is a pretty comprehensive resource.
However, development in this book is demonstrated on the Eclipse IDE. Android Developers are increasingly migrating towards the Android Studio. So, I'd suggest waiting for the latest version of the book, 'Professional Android' which I believe comes out sometime in November 2015.
And everything else will fall into place. You need to fall in love with code. You need to eat, breathe and sleep code. Only when you develop an obsession with it will you become the awesome developer you always wanted to see yourself as.
Best of luck. :)
And I absolutely hated it.
I just couldn't get myself to understand the syntax. It was all Greek and Latin to me. The semicolons, the weird keywords (int, char, etc.) hurt my eyes. It made no sense. So much so that I used to memorize all the code in my textbook in order to pass my exams.
I had developed an aversion towards Computer Science.
General
1. Get a good teacher.
Yes, there are lots of amazing books out there which cover everything that you could possibly want to know as a coder.
But there is no substitute for a good teacher.
In my 9th grade, my teacher told us that #include<stdio.h> had to be the first line of every C program. There had to be a semicolon after every assignment.
Why? Because she said so.
My 11th grade teacher went deeper into the nitty gritty of why C and C++ employed its seemingly weird syntax.
Why header files had to be 'included'. Why variables had to be prefixed with a data type. Why semicolons were required.
I study at an IIT. And frankly, the way programming is taught here is very disappointing (like my 9th grade teacher).
They expect you to grasp the pattern of how code is written and duplicate and manipulate it according to the needs of the program.
I'm sure this must have been the case with you.
For if you had actually understood why and how C++ does things, it wouldn't have appeared to be that difficult. At least, not at an introductory level CS course.
If you cannot get yourself a good personal tutor, I'd suggest registering yourself for Harvard's CS50 course on the edX platform.
The course instructor, David Malan is simply the best teacher I've ever come across. The way he teaches Computer Science is mind boggling.
I finished 12 weeks worth of course material in a week. It was addicting. And I've probably learnt more in that time period than I have in all the CS courses I've attended in college put together.
2. Practice
You've seen the 'Hello World' program.
You find it very simple. May as well move on to the next portion of the course.
Wrong.
You stop right there. And write the code down in your text editor. Change the output text. Ask the user input and greet accordingly. Tinker with every piece of code you write.
Learnt how to add two numbers?
Good. Now subtract them. Multiply them. Divide them.
Learnt loops?
Practice outputting fancy patterns. Calculate factorial of a number.
Learnt arrays?
Print the sum of the first thousand numbers. Implement matrix multiplication.
The only way you'll ever be a great programmer is by practice.
I disagree with the notion people have that some people are just 'gifted for coding'. It's simply not true. Some of the most amazing programmers I know struggled with code, at first. But incessant practice made them virtuosos of the art.
One really good platform to practice coding and get yourself introduced to competitive programming is CodeChef (Programming Competition,Programming Contest,Online Computer Programming). Do try it out. :)
Web Development
Read this only if you are interested in web development and designing.
If you are well versed in a programming language such as C, C++ or Java, Web Development really is a piece of cake.
I didn't even know HTML when I joined college last year. And in a span of a semester, I managed to learn all web technologies required to build a fully functioning social networking site.
This is how I went about teaching myself web development. Of course, different people have approached it in different ways. However, this approach, if you choose to follow it, has a very gentle learning curve and is perhaps the least daunting.
1. Learn HTML and CSS
They are languages used to structure and design your pages. And as they aren't programming languages per se, you'll find them extremely easy to grasp.
Two resources I strongly recommend are the 'Head First HTML & CSS' book and the online 'HTML & CSS' course offered by Udacity.
The book --> Head First HTML and CSS: Elisabeth Robson, Eric Freeman: 9780596159900: Amazon.com: Books
The course -->Classroom - Udacity
2. Learn JavaScript and jQuery
Now that you know how to build static web pages, it is time to learn how to add some interactivity to it. Enter JavaScript and its most popular library, jQuery.
Again, I'd strongly suggest the Head First titles and Udacity courses.
In addition, you could try out the projects at Codecademy (Learn to code).
Books --> Head First JavaScript Programming: Eric T. Freeman, Elisabeth Robson: 9781449340131: Amazon.com: Books
Head First jQuery (Brain-Friendly Guides): Ryan Benedetti, Ronan Cranley: 9781449393212: Amazon.com: Books
Courses --> JavaScript Basics for Beginners Course
Intro to jQuery
Learning the aforementioned languages is really not that hard.
It took me around 2 months to get a good grasp on them and once I was done, using only what I had learnt from the listed resources, I was able to build this: Dramatics Section
Which brings me to my third point...
3. Build a website
You cannot exactly call yourself a 'web developer' if you haven't built a website from scratch.
So, with your new found knowledge, go ahead and build any website you want to. It could be your personal website, a blog or a website related to a cause or a group (Like the one I built).
Once you're done with these, congratulations! You can now call yourself a front end developer.
4. Learn SQL and a backend server scripting language
Now, you are ready to move on to building much more complicated websites such as social networking sites like Facebook, microblogging sites like Twitter or e-commerce sites such as Amazon and eBay.
You now have a choice of choosing a server side scripting language. Almost all the developers in my college know more than one.
The most popular languages right now are Python, Ruby, PHP and Node.js
i) Python
Python is one of the easiest languages to learn. It closely resembles the English language. And it is probably the most powerful language right now. It has got libraries for almost everything you could possibly want, an extremely strong community and tried-and-tested web frameworks such as Django and Pylons.
Udacity is an excellent site to learn backend programming in Python and Django. As far as books are concerned, I'd suggest the Head First Title, the online Django book and 'Core Python Applications Programming' by Wesley Chun.
Check out the following links to learn more:
Full Stack Web Developer Nanodegree
http://www.amazon.in/Head
ii) Ruby
Ruby was built with the intention of making programming fun. Ruby is extremely flexible and easy to use. The Rails framework built on Ruby is arguably the best web framework out there. In fact, a major reason for the growing popularity of the Ruby language is because of Rails.
The best resource for learning Ruby on Rails is the tutorial by Michael Hartl (You actually build a microblogging site like Twitter throughout the book. How cool is that!). You can find it here:
Ruby on Rails Tutorial (3rd Ed.)
iii) PHP
PHP is the world's most popular server side scripting language. More than half the web runs on PHP.
But that doesn't make it a really great language. PHP gets really messy when you use it in big projects. My advice would be to give preference to Python and Ruby over it.
Nevertheless, if you plan on learning PHP, 'Head First PHP and MySQL' would be a decent start (You build a Dating Website in the book. Pretty cool.)
iv) Node.js
Unfortunately, I do not know much about Node.js. It is Javascript on the back-end. It is relatively recent technology (created in 2008) and is still in the budding stage.
5. Build another website
Now that you've mastered server side scripting, go ahead and build the website you always wanted to! Sky is the limit here. There are very few things that you cannot do with your new found Full Stack Developer skills.
I found a social networking site called Retronet once I was done learning PHP. It had features that I always wanted in Facebook.:Anonymous confessions (you'd only know the gender of the confessor), the number of male and female views your profile got and a questionnaire that matched you with the most similar person of the opposite gender on the site.
App Development
Developing Apps for mobile devices is slightly different than coding browser apps.
However, Udacity has a fantastic Android and iOS Development Nanodegree programs that take you step-by-step to becoming a professional developer.
You can find the required resources here:
Android Developer Nanodegree
iOS Developer Nanodegree Program
As far as Android Development is concerned, 'Professional Android Development' by Reto Meier is a pretty comprehensive resource.
However, development in this book is demonstrated on the Eclipse IDE. Android Developers are increasingly migrating towards the Android Studio. So, I'd suggest waiting for the latest version of the book, 'Professional Android' which I believe comes out sometime in November 2015.
Conclusion
Be passionate about programming.And everything else will fall into place. You need to fall in love with code. You need to eat, breathe and sleep code. Only when you develop an obsession with it will you become the awesome developer you always wanted to see yourself as.
Best of luck. :)
No comments:
Post a Comment