Help with learning computer programming!

Ankit Dayal

Regular
Messages
154
Location
NA
ISP
MTNL Freedom 995
Hello everyone,
I want to learn computer programming with the objective of designing apps and computer/mobile games when I become proficient at it. Just to give you folks a brief background on myself, I am not an engineer and have no background in programming (although I have studied C++ in my +2, but I don't remember anything about it now since I last had any practice with that language in 2005).
Due to some quirk of fate, I could not realize my dream of becoming a software engineer, but I have always remained a computer enthusiast. Now I have decided that I too want to learn computer programming and am willing to put in the required effort. I just don't know how and where to start.
Could any of you good folks advise me as to where I should start my journey? I am particularly interested in learning C++, Java and Python. Are there any good books for beginners on these topics? Or should I rather join some coaching class?
I am completely clueless about this and could really use your suggestions.
Thanks in advance!
 
So how comfortable were you with programming. If you feel you can jump right in based on your confidence level, I would say you can probably choose the platform you want to develop for & start with that directly.
If not, maybe read some online reference materials for any language you mentioned above (or anything) and learn the basic concepts first. By basic concepts, I mean, like what are variables, constants, looping, what are functions/procedures etc..
 
I am posting on this forum after a long time. I'm back because right now OP is where I was 10-15 years ago and I believe that I'm qualified to answer this question.

I did Diploma in Production Engineering after 12th grade because that is all I could afford at that time. I too had a dream of becoming a software engineer but couldn't because I was raised in a very humble family. I guess a a lot of choices are already made for you if you are born in a poor family.

So, 15 years ago I left my job and started my small web developement company and I used to develop websites for US based customers. That was mostly PHP/MySQL/Photoshop kind of work. I have some experience on Ruby on Rails also. Later on I moved to iOS (iPhone and iPad) applications as well as Android application development because that was more profitable business.

So where a total newbie (who is motivated) should start?

Following are the steps:

Start with learning about basics of programming as well as C++ by reading the following book:

http://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ref=sr_1_2?s=books&ie=UTF8&qid=1401568327&sr=1-2&keywords=stroustrup

This is the latest edition and it is expensive on Amazon.in but it is the best book that will help you kill 2 birds with 1 stone. You will learn basics of programming as well as C++ at the same time. This will lay a solid foundation of your programming career.

Android development is basically Java. So a book to learn Java will help to start:

http://www.amazon.com/Java-Complete-Reference-Herbert-Schildt/dp/0071808558/ref=sr_1_1?s=books&ie=UTF8&qid=1401568531&sr=1-1&keywords=java+the+complete+reference

After that you may look at the Android SDK on the android developer site and start doing some very basic Android development.

or even better idea will be to buy a book on Android:

http://www.amazon.com/Android-Programming-Ranch-Guide-Guides/dp/0321804333/ref=sr_1_1?s=books&ie=UTF8&qid=1401575629&sr=1-1&keywords=android+big+nerd+ranch

Following is the book that will teach you about real-life design patterns used for Android development:

http://www.amazon.com/Android-Design-Patterns-Interaction-Developers/dp/1118394151/ref=sr_1_1?s=books&ie=UTF8&qid=1401568745&sr=1-1&keywords=android+design+patterns

With this book you will learn about the design of apps that are successful in marketplace

I suggest taking a subscription at Lynda.com also and some of the video tutorials related to Android development there are also very good. One can take 1 week free trial there and to see if they find it useful. One should also do the tutorials on Javascript, Jquery, HTML, CSS, HTML5, XML, Git (for source code control) and MySQL on Lynda.com. Obviously some knowledge about Photoshop is also required and Photoshop tutorials on Lynda.com are also very good.

Take a good look at what Amazon AWS cloud services ( http://aws.amazon.com ) are and see the tutorials related to that on Lynda.com. Your C++ (i.e. Object Oriented Programming) and java knowhow will help here.

Now comes iOS development. For this you will need a Mac desktop or Macbook Pro Retina (preferred) and that is costly.

For someone having proficiancy in C++, Java as well as Android development, iOS development is not very difficult. Following book is one of the best books on Objective C programming language:

http://www.amazon.com/Objective-C-Programming-Ranch-Guide-Guides/dp/032194206X/ref=sr_1_1?s=books&ie=UTF8&qid=1401569112&sr=1-1&keywords=objective+c+big+nerd+ranch

and following will teach iOS development:

http://www.amazon.com/iOS-Programming-Ranch-Guide-Guides/dp/0321942051/ref=sr_1_2?s=books&ie=UTF8&qid=1401569112&sr=1-2&keywords=objective+c+big+nerd+ranch

I suggest buying only the latest versions/editions of all books and checking the reviews of the books on Amazon.com (not amazon.in) before buying. Some books may be available on torrents also but I'll not suggest going for piracy.

One also has to buy memberships of iOS store from Apple or Google Android store during the learning process.

All this is time consuming and as a non-programmer who is now deep into programming business, I know that learning curve is very steep but the payoff in the end is also good. It looks overwhelming in the beginning but things start to fall in place once you have learned C++ and Java.

I believe that a motivated person who has good IQ and english comprehension can become a good mobile developer with 400-600 hours of effort in learning. Also, it is worth mentioning here that most mobile developers are experts on one platform only, i.e. Android or iOS and they have some knowledge about the other platform. So in the beginning a newbie should concentrate on Android development only because that can be done without buying an expensive Mac. Any current Windows PC is good enough for learning Android development.

All of what I have mentioned above will help the OP or anyone in becoming decent mobile game developer or an app developer in general. In last few years most of the game development industry has moved to mobile platforms only and this trend is likely to continue in future also. Everything that I have suggested above will help anyone in becoming a complete developer for a platform. Only stand alone knowledge of C++ or Java will not take anyone very far. That is just a starting point in the long journey. You have to have a range of skills to do something worthwhile.

I believe that coaching classes in most institutes in India are just wastage of money because they are taught by under-qualified and not so experienced instructors. Quality of tutorials on Lynda.com is way better than what is found in institutes in India.

My other suggestion to OP will be to start MCA degree in correspondence. It is never too late for education. In Delhi NCR one can easily join Kurukshetra University MCA in distance mode or Amity university in distance mode. That will help in getting formal degree in Software programming that is as good as a B.Tech in Computer Science for most employers. There is MCA in IGNOU also. To join MCA, you need to be a graduate in any stream. Even a BA (Pass) will do. You must have done Maths in your 12th grade or you have to appear in a special Maths exam while doing MCA.

I hope this helps. Please post here if you have more questions.

PS: If you want to do web development for desktop PCs only instead of mobile apps then there is a different path to follow. Let us and know and I'll write about that too.
 
Wow! I couldn't have expected a more detailed solution to my query. This is just what I was looking for. Topweb, you really seem to have mastered it all and your story is really very inspiring.


From what I gather from your post, the first step is to get acquainted with C++ and Java, and then subsequently move on to learn more advanced stuff. So, I'll start my journey by reading each and every book that you have mentioned in your post and will also get a subscription at Lynda.com. At this point in time, I am not really enthusiastic about iOS, so I am going to keep my focus on Android alone.

Since I plan on learning multiple languages like Java, C++ and Python, is there a particular order in which I should go about learning these languages (like C++ first and then Java)? Is it necessary to have knowledge of C before diving into C++?


I am already a post graduate and have been preparing for the GMAT with the intention of getting an MBA degree, so an MCA degree is not really on my radar, but now that you have mentioned it, it does seem like an option worth exploring.

Lastly, it would be great if you could shed some light on web development for desktop PCs as well.


PS: A big thank you to all the people who replied to my query!
 
Contrary to popular belief, you don't have to learn C before learning C++ because C is a subset of C++ and the C++ book that I mentioned above will teach you enough of C. A lot of non-programmers make the mistake of starting with learning C, when they should be starting with C++ instead.

If your goal is not to make a career in programming and you are looking to do Android applications only, then I suggest that you start with 'Java,The Complete reference' book that I mentioned in my last post and completely skip the C++ and Python for now.

There are tutorials on Java on Lynda.com also but book along with tutorials is a better option. For example the book I mentioned will teach you to program using Notepad and without any IDE but all android development will be done using Eclipse IDE and Java tutorials on Lynda.com will make you comfortable with Eclipse IDE. You can then move on to Android development using the resources I mentioned above.

As far as web development with focus on desktop PC browsers and smartphone browsers instead of native Android or iOS apps is concerned, learning curve here is slightly shorter. You can start without C++ and Java. Ruby on Rails is the in-thing for web development now a days. The best book for Ruby on Rails is available free to read online

http://www.railstutorial.org/
http://www.railstutorial.org/book

Take a quick look at this book and you will know what kind of effort you need to put in to start.

You will still need to know Photoshop, Git, HTML, CSS, HTML5, Javascript, MySQL and maybe some XML etc. to become a good enough web developer and designer. All these topics are well covered on Lynda.com.

I suggest that you read othe book or watch the tutorials on Lynda.com and along with that type the code on your PC with your own hand. Barely watching the tutorials or reading the book will be a wrong idea.
 
Topweb, I am truly grateful to you for all the information you have provided here. I should be done with my GMAT by the end of this month and then I shall have enough time on hand to start with learning Java. Thanks, once again!
 
Back