How do you learn programming?

Discussion in 'Programming & Software Development' started by lawrencep93, Apr 28, 2013.

  1. Khanage

    Khanage Member

    Joined:
    Jan 30, 2002
    Messages:
    81
    Location:
    Buderim, QLD
    I think you might have this arse about. Learning to program is learning these basic building blocks, which brings me to:

    Yes, an no. Once you have the 'logical processes' down moving from language to language isn't usually a big deal. But when you're first learning, selecting a more 'verbose'/readable language can go a long way (Like Visual Basic or Pascal... which was primarily intended as a teaching language and is quite readable when comparing it C++) Getting a first time programmer to 'read' C++ is like asking them to read hieroglyphics in some cases.

    Been teaching my 9yo some basics using Scratch (http://scratch.mit.edu/) and he's been having a ball with it. Not recommending you use it, but it gives you an idea on how far the "commonly used logical processes" can be broken down. Good luck, and have fun ;)
     
  2. OP
    OP
    lawrencep93

    lawrencep93 Member

    Joined:
    Apr 12, 2009
    Messages:
    1,975
    Location:
    Melborne, VIC
    I remember making a car racing game using scratch when I was in like yr 9, which was about 7 years ago now...

    Engineering at RMIT seems to think we can learn it all from C++ so I think I will stick to it as that is all we will be using.
     
  3. Khanage

    Khanage Member

    Joined:
    Jan 30, 2002
    Messages:
    81
    Location:
    Buderim, QLD
    No worries, and nothing wrong with learning C++ straight up... it's just a steeper learning curve than more traditional learning languages.
     
  4. zach

    zach (Banned or Deleted)

    Joined:
    May 1, 2009
    Messages:
    3,614
    Location:
    chermside.bris.qld.au:80
    Make stuff, don't worry about languages.

    See purpose, make, make, make.

    Read some books.

    Write a blog.

    Read some more books.
     
  5. sam_allen

    sam_allen Member

    Joined:
    Sep 7, 2003
    Messages:
    359
    Location:
    BorĂ¥s, Sweden
    Naturally, though I just like being honest about it.

    In the beginning it's really only stealing, cause you're not contributing back ;)

    Sure, but I get the feeling you're referring to more basic concepts than I am.

    Your standard blocks (like if-then-else) are things you obviously need to understand, however I was more referring to common ways of implementing them, the things you do repeatedly, like for instance getting rows from a db table and looping through them. So I meant more, don't bust your ass trying to learn exactly how to type out that loop, because you'll do it so many times it'll come naturally later.

    Understanding the logic of the loop (or any other standard code block for that matter) is obviously the first natural step, but in general anyone even considering programming has a logical brain in the first place and most likely already understands the block, just needs to learn the syntax.
     
  6. Orphan

    Orphan Member

    Joined:
    Jul 3, 2004
    Messages:
    2,835
    Location:
    Brisbane
    I am still a newbie (php) but once I covered the basics I found it very helpful to find video tutorials covering small projects actually applying what I have learned. Further more once you get going the host of some tutorials will actually say "You have the tools and now know what we are trying to achieve, try it yourself and see what you come up with" before showing you how they did it. Even if they don't I think it is very important to stop the video and attempt it yourself then compare it to what they have done. Often they will explain why they have done it a certain way, present you with multiple ways of achieving the same thing or point out pitfalls to look out for. The overwhelming theme from most posters here is that to learn you need to do and this has certainly been the case for me. You can read all you want but at least for me I found many things didn't totally click until I did it myself and found my own way to apply it. I am still a novice but having actually written the code and applied it I find myself randomly coming up with basic applications or functions during the day and trying them out later when I am able.

    The turning point for me was a basic CMS project I completed via tutorials. It tackled one item at a time slowly adding up all the required code, the more I built the more it made sense. When the host stated what the next goal was I was often coming up with similar solutions before seeing what they had done. By the time I finished I was coming up with my own additions and looking at it from different perspectives ie if it was *insert subject/goal here* type of application or website what would make it more useful or more intuitive. I found it quite different to many things we learn which are generally taught by repetition. I found with programing I learn more by doing more, it's not about doing the same thing over it is about doing new things and applying old things in new/different ways. There is repetition in that it requires you continue to do it but I am yet to do the same thing over and over. Even trying to achieve the same/similar thing at a later time often I will find ways to simplify the code or a better way to do it resulting in it not being the same thing over and over. Perhaps this is different if you are programing professionally within a specific area or simply past the basic learning phase, I hope not. I find it quite exciting, there is a level of creativity I didn't expect.
     
    Last edited: Apr 29, 2013
  7. FearTec

    FearTec Member

    Joined:
    Jul 22, 2003
    Messages:
    2,401
    Location:
    NSW
    1. Save every bit of code that you do (great reference for later). Keep it organised e.g c:/source/vb.net/2012/source/database/parameter based queries.

    2. Think of some self interest projects to play around with (e. G cloning outlook would then allow you to s over and generate heaps of useful code)

    3. Google is your friend.

    4. Consider using a SVN repository for major stuff you are working on (hourly check in changes).

    5. Don't stop until you fix bugs.

    6. Don't sleep, reward comes only via hard work.
     
  8. elvis

    elvis Old school old fool

    Joined:
    Jun 27, 2001
    Messages:
    43,112
    Location:
    Brisbane
    I agree, however what I also see is new programmers getting bogged down in arguments over which programming language is "better". This demonstrates not only a lack of understanding of the concept of "horses for courses", but also the fact that someone with 2 years of dev work under their belt is not going to fully appreciate the low level benefits of half a dozen different languages and their particular strengths and weaknesses in difference scenarios.

    If I'm asked, I typically tell people to try Python as a starting point. It's quick to pick up, there are millions of existing projects you can look up, it runs fairly lightly on anything, and the practical applications span a wide variety of uses cases. That doesn't mean Python is better than anything else - far from it. Only that it's a fairly easy language to get to grips with early on, and can be put to work in fairly serious use cases too if you want to keep going with it. But it also serves as a nice foundation for moving on to the likes of C++/C#/Java should you wish.
     
  9. OP
    OP
    lawrencep93

    lawrencep93 Member

    Joined:
    Apr 12, 2009
    Messages:
    1,975
    Location:
    Melborne, VIC
    I am not looking at trying to work out what language to learn. I am learning C++ because that's what is required from me for my degree, just wondering the best way to learn to program from that, if I see code I can get a basic understanding but I find it hard to write some code from scratch, I have a basic understanding of if statements and a few other small things.
     
  10. PabloEscobar

    PabloEscobar Member

    Joined:
    Jan 28, 2008
    Messages:
    14,366
    Agreed :), also, number of lines of a high level language is a terrible metric to measure efficiency in.

    I disagree with this. With many things, it helps to have a good theoretical understanding of what you are trying to do, before you try and do it.

    Theres often many 'right' ways to do something, but these don't really differ in outcome from the 'wrong' way to so something.

    Tscallop
    hot plate
    chameleon
    remote control
    holly
    applause
    swimming
    misnomer

    I could sort this list by randomizing it each time, and then checking if its sorted. It's a terrible method, but it WILL get me the result I wanted :).

    So, Just like learning to drive would be a bad idea by trial and error, learning to program without learning the basic computer theory would also result in a bad outcome.
     
  11. jumbo135

    jumbo135 Member

    Joined:
    May 13, 2005
    Messages:
    5
    I currently work in software and went through software engineering at usyd. I self taught myself much of the programming fundamentals during high school. I mainly used video tutorials such as Lynda and YouTube videos. There is a lot of really good content on YouTube now with short 5-15minute videos covering basic topics.

    Once I had a basic understanding of programming I went about finding small pieces of software that were well written for me to read and absorb some techniques into my knowledge. I remember I even paid a highly regarded freelancer once to write a piece of software for me and take me through the code for purely educational reasons.

    There are three main categories of knowledge when it comes to becoming a good developer.

    1. Having a strong understanding of the fundamentals of programming.
    These fundamentals are your tools and building blocks for everything that you do.
    - Variables
    - Functions
    - Looping methods
    - Classes
    - How to read code line by line the way the computer does. A lot of beginners struggle to understand how some basic loops are computed so this helped him a lot.
    - Debugging methods

    2. Understanding and using standard programming design patterns.
    There are quite a few different design patterns. Most languages tend to favour a small set of patterns that all developers in the community stick to.
    - Choose the language of your interest and understand the design patterns used. For example: MVC, CRUD, delegation, factories etc.

    3. Understanding the SDK
    This is basically knowing your platform. For example if you are an iOS developer. Part 1 is about understanding objective-c fundamentals. Part 2 is about understanding MVC, delegation, observer etc. Part 3 is about knowing what is available to you in the SDK, knowing what classes are available to you out-of-the-box to help you solve commonly faced problems.
     
  12. shortielah

    shortielah Member

    Joined:
    Oct 13, 2010
    Messages:
    405
    Location:
    Brisbane
    I don't know why people haven't mentioned this before:
    http://www.codecademy.com/

    Starts off with the most basic of basic, and explains how/why it works (or doesn't work).

    Very simple tasks, choose a language and won't take long to go through their tutorials. :)
     
  13. OP
    OP
    lawrencep93

    lawrencep93 Member

    Joined:
    Apr 12, 2009
    Messages:
    1,975
    Location:
    Melborne, VIC
    Doing some HTML tutorials now, this website is awesome. Wish it did C++ though, but hopefully I can use the concepts learnt to help me with C++
     
  14. echo foo

    echo foo Member

    Joined:
    Jun 26, 2012
    Messages:
    14
    Location:
    Armadale
    I think you meant, "re-appropriated for a better use".
     
  15. Foliage

    Foliage Member

    Joined:
    Jan 22, 2002
    Messages:
    32,088
    Location:
    Sleepwithyourdadelaide


    You just need to do it, a lot, all the time, for a long time.

    The same way you learn anything else, expose yourself to every part of it, and use it daily for years.
     
    Last edited: May 4, 2013

Share This Page

Advertisement: