What is the best way to learn programming?

I've been learning to program for the past ~1 year and have made significant progress. I think I've learned a lot of important things about the ways to learn programming and thought of sharing my learnings with you. I think these learnings will help those who want to learn programming but have failed at it for various reasons.

1. Do NOT learn programming from books!

Buying or renting a programming book is one of the first steps many newbie programmers take. Not that I'm against it; in fact, I recommend that you should indeed buy a good book. But do not start learning from the book chapter by chapter. I'll tell you what will happen: you will start reading with chapter 1 and even do exercises. But by the time you reach chapter 4-5; or let's say when the 'hard stuff' begins, you will start getting bored!

You will not only lose your enthusiasm, but also be lazy. You will want to jump to other advance chapters to see what they have for you - and things will look even more frightening. End result? You will give it up.

I've done that so many times!

2. Use Books Only For Reference!

I think books must be used ONLY for reference, while you are learning a new programming language. Books are divided into chapters and instead of reading from page number 1, you can simply head over to the chapter that you wish to refer to. A good book will offer end-to-end help to most of the the concepts and save you a lot of precious time!

3. Start with a small, fun software project

I'd strongly recommend that you should begin learning any programming language by starting with a small and fun software project. For example, if you are learning C, C++, Java or .Net; think of a project that is small; yet fun to do. It's important that the project should be interesting - because that will keep you motivated. It should be small as well; because you do need success to stay motivated, right?

So what's a small project? Well, think about developing a simple 'time-keeper' that helps you maintain a record of your daily activities. Or how about an app that lets you split the expenses among your friends for restaurant bills. If that's hard, what about a simple software application that keeps track of your smartphone recharges and generates graphs?

4. Learn the basics from videos on the Internet

Name any programming language and you will find free video tutorials on YouTube. Make some good use of YouTube. The basic of programming language is 'logic' and the simplest of the language reserved keywords. As soon as you get a 'feel' of how to write in programming language; you are good to take up your first small project.

5. Keep staring at the code and try to make sense

Head over to GITHUB and find out the examples coded in the programming language that you are planning to learn. Keep staring at the code even if it does not make sense. Keep doing this until you start finding the links; and the code start making 'some sense'. That's a good start. It will help you when you advance a bit! This may seem weird; but that's exactly what helped me make some really good progress in programming!

Trust me, the ONLY way that works in learning a programming language OR anything else is that you should actually get your hands dirty. That is, you will NEVER learn any programming language just by reading a book and never coding anything using your own brain and hands.

Do you agree with above points? Do you have points to share or thoughts to discuss? Post them. Let's see if we can find out the top ways to learn programming language.

Replies

  • kapsn
    kapsn
    I do want to know what small projects are you talking about or from where do i get these small projects to rebuild my own.
  • Shweta Chauhan
    Shweta Chauhan
    Kaustubh Katdare
    But by the time you reach chapter 4-5; or let's say when the 'hard stuff' begins, you will start getting bored!
    Happens to me all the time,I search for the best books, read 1-2 chapters,book then goes to my collection,then I switch to videos,then again sometime later, bring books back and start from beginning, the cycle goes on!πŸ˜•
  • Shweta Chauhan
    Shweta Chauhan
    kapsn
    I do want to know what small projects are you talking about or from where do i get these small projects to rebuild my own.
    As for what I suggest, you can just pick any of the real-time topics(you can invent one of your own or google them!), divide functionalities and requirements, pick one functionality each day or accordingly, work on it,for the time being, focus on achieving it only.the feeling you get after completing it is awesome,this will just make you want more of learning each day!
  • kapsn
    kapsn
    this will surely goes on until you start with any of new project.
    but how to start with it i'm also too lacking with this pointπŸ˜”πŸ˜”
  • kapsn
    kapsn
    Crazy Pixel
    As for what I suggest, you can just pick any of the real-time topics(you can invent one of your own or google them!), divide functionalities and requirements, pick one functionality each day or accordingly, work on it,for the time being, focus on achieving it only.the feeling you get after completing it is awesome,this will just make you want more of learning each day!
    can you name few of them.??
  • Subathra Prem kumar
    Subathra Prem kumar
    Thanks a lot for Sharing your thoughts sir .hope you post several information regarding programming skills in future .
  • Bala Krishna Ceeparseti
    Bala Krishna Ceeparseti
    WOWIE......Firstly happy and excited to find few fellow coders here!!! coding is just awsum and one way to achieve perfection in it.. is by simply practising em .......Dont just directly Run em on development kits ...try practising em on a paper then ull get to know the real essence of it .Start with few logical programs like fibiinocci ,armstrong..n pattern problems....u'll definitely understand the joy of programming once u run it successfully..AS a mini project u can start with a simple bank application followed by complex projects...U can even check out few projects which some of our CE'ns have posted!!!Happy CODING!!.Adios!!😎😎
  • kapsn
    kapsn
    ceeparseti
    WOWIE......Firstly happy and excited to find few fellow coders here!!! coding is just awsum and one way to achieve perfection in it.. is by simply practising em .......Dont just directly Run em on development kits ...try practising em on a paper then ull get to know the real essence of it .Start with few logical programs like fibiinocci ,armstrong..n pattern problems....u'll definitely understand the joy of programming once u run it successfully..AS a mini project u can start with a simple bank application followed by complex projects...U can even check out few projects which some of our CE'ns have posted!!!Happy CODING!!.Adios!!😎😎
    can you send me the link of these projects
  • Kaustubh Katdare
    Kaustubh Katdare
    kapsn
    I do want to know what small projects are you talking about or from where do i get these small projects to rebuild my own.
    Well, for me it was always what would be useful to me. For example - it could be a simple expense tracker. Don't start with anything that's complicated. You can always make your project complex by adding more features.
  • Vishal Sharma
    Vishal Sharma
    kapsn
    I do want to know what small projects are you talking about or from where do i get these small projects to rebuild my own.
    If you take my advice, go to github, look for some small projects (which have less commits) study their code, see the changes they make over time and understand why they were made. Once you are done understanding it, start extending that project.

    Let me give you a simple example:
    GitHub - muffinista/really-simple-history-api: A Really Simple History API that pulls data from wikipedia to do a 'this day in history' type thing

    Consider this repository, it has only 7 commits and by the description, its an API that retrieves what happened in history on a particular day of month.
    You can extend this to get the information about an year as well! That's a good small project that you can consider.

    And once you are done extending this API, layer it with more of your thoughts. πŸ˜€
    I already, extended this API to take year (the code is not public yet) and built an android application over it. Here it is,

    #-Link-Snipped-#

    Take a look, try extending that code add more features like searching for text etc.
  • Bhavna k
    Bhavna k
    But sir if there is lack of internet can u suggest the other best alternative for it that is indispensable?
  • Kaustubh Katdare
    Kaustubh Katdare
    Bhavna k
    But sir if there is lack of internet can u suggest the other best alternative for it that is indispensable?
    Well, if you have a computer and a mobile phone with data connection; you have all the Internet requirements fulfilled. I think Internet's become way more important for engineers than ever before. You should try and get access to the Internet.

    You might try and build offline applications. You may then upload your work to these skill showcase websites. Have you joined HackerRank yet?
  • Deadman
    Deadman
    For someone who has never programmed before reading a book is essential i think because it covers basics although practice is essential. And i prefer reading from book as in videos we may miss some important point.
    I would like to add codingbat.com. It has lots of basic problems which will make you quite an expert in loops, recursion. Then switch to hackerrank.
  • Kaustubh Katdare
    Kaustubh Katdare
    Right. If someone is absolutely new to programming; you will have to refer to the books or Internet resources for the basics. However, once you know what keywords the language uses and general format; the actual 'learning' will come from getting your hands dirty. πŸ˜€
  • Anoop Kumar
    Anoop Kumar
    πŸ‘ for
    Deadman
    codingbat.com
  • Deadman
    Deadman
    And codecademy.com.
    I don't seem to understand how practicing loops, arrays, etc will get you a job or help make you develop an app.
    There is nothing related to oops, exception handing, multi threading, enums, api in hacckerank. Its just difficulty level. I am done with codingbat. But here i feel its just a waste of time. I want to make my oops concepts stronger and develop a project. How should i do it?
  • simplycoder
    simplycoder
    Deadman
    And codecademy.com.
    I don't seem to understand how practicing loops, arrays, etc will get you a job or help make you develop an app.
    There is nothing related to oops, exception handing, multi threading, enums, api in hacckerank. Its just difficulty level. I am done with codingbat. But here i feel its just a waste of time. I want to make my oops concepts stronger and develop a project. How should i do it?
    Read a lot of existing code, try to figure out how and why of some functionality.
    Should pay a lot of attention to exception handling and logging.
    How to use caching.. and I can just go on...
    Develop a sample project and try to incorporate these principles (Do not force them, but they should just gel with the code for the functionality), and then submit it on online forums for code review.
  • Deadman
    Deadman
    Can you post me the exact links of some simple java projects. I have been through github but all i found is some projects whose name itself scared me.
  • MANU BHARADWAJ
    MANU BHARADWAJ
    I want to learn java but I don't know anything about it please help me
  • simplycoder
    simplycoder
    manu bharadwaj
    I want to learn java but I don't know anything about it please help me
    I am not sure which java you are referring to.
    So I assume that you are a newbie to programing and hence I suggest you to search for tutorials on CE, and if you have unlimited bandwidth then I say, search Derek banas, thenewboston on YouTube.

    If you want to learn the old school way, I suggest complete reference java by Herbert S.

    Post your doubts here and community members would surely help you out.
  • Deadman
    Deadman
    Derek banas is good but it is too fast for newbie to grasp concepts. Go for durgasoft particularly this guy
    Its slow but one of the best I have seen in core java. I am not much into videos but this one uses white board technique rather than explaining ready made code.
  • Ashraf HZ
    Ashraf HZ
    Hm, Durgasoft. I wonder if #-Link-Snipped-# would have picked that name if she was to start a business too 😁
  • durga ch
    durga ch
    @ ash: see that is why people confuse me to be a 'Mr' -_-'
    nope. Never that name.
  • VeeraVenkat Vittanala
    VeeraVenkat Vittanala

    It Just 15 days i have started learning python programming as many of the internet world recommended to learn first but still i have some confusion is it right to learn that or should i shift on something else...

  • Kaustubh Katdare
    Kaustubh Katdare
    Language doesn't matter. Python is a great programming language and if you are new to it - it's definitely a good start.Β 

    Make yourself familiar with the concepts, object oriented programming and keep writing as many programs as you can, on your own - that's the fastest way to learn programming. In your lifetime, you'll end up learning multiple languages and tools.Β 

You are reading an archived discussion.

Related Posts

Hey!! This is KAPIL BISHT(KAPSN).An ece graduate seeking for a job in Software development. I have key skills of core java, basics of C ,C++. I am a friendly boy...
Quote: Tiny components, premium materials, special tools and special talents. This is the formula for making a distinctive, and expensive, Rolex Submariner wristwatch. Watch this video to see what it...
Quote: Scientists from the Universities of Bristol and Sussex worked in conjunction with Ultrahaptics to develop a new tractor beam that can lift and move small objects using acoustic holograms....
stolen mobile tracking system
Guys new to CE.. Need some help to get ideas for my project in IT fld..!! i m in 2 yr.. πŸ˜€