How to Learn Programming from Scratch...? Mentor Needed

12 replies
I've been scrolling through the Programming Talk section looking for a good thread on how to learn programming as an absolute beginner. Found a few good threads, but none that actually address the steps you should take if you are looking to really put in the time and effort to learn the nuts and bolts.

The major difference between this thread and some of the other (really great) threads I've been reading is; I'm not looking to learn a few pieces of code to write my own project or software... not yet anyway. I believe that programming is the future of technology, and I really want to learn to code for the coding itself. My goal is to thoroughly understand programming and be able to read and write code as well as I would an essay or a book.

I know, I know, a college degree is probably in order... and I am enrolled to begin an IT degree with a concentration in software, but the classes don't start until January. Meanwhile, I am riding that first wave of infatuation and really want to dive in now! 3 months just seems like too long to wait, especially when I have so much free time.

I am home full time, so I have 30+ hours per week to concentrate on studying, although I do have a 1 year old, so it would be in spurts rather than 8 hour blocks.

I was hoping some of the coding superstars here on the forum could weigh in on this thread and explain:

  1. How you would learn programming today in a step by step method if you had to begin knowing nothing at all (or "how you would teach your middle school-er to program).
  2. What are the most important aspects of the programming industry that every coder *must* know.
  3. Perhaps a few excellent resources that won't overwhelm?
  4. Maybe someone could point out a good resource for learning the basic terminology of the field, or start a simple resource here?
  5. Notable and outstanding programmers, both in the history and development of programming and working in the field today.
  6. Notable and outstanding programmers that frequent the WF.
  7. Anything else that I just don't know enough to ask about.

Please keep in mind that I am a complete newbie, I don't even understand some of the (seemingly) basic terms being used in this section of the forum. So I would hugely appreciate it if you could really explain all the details...


I am also looking for a mentor who is as passionate about the field as I am about learning it. In return for great mentorship you'll have a devoted fan for life, that will likely bring up your name in every discussion about coding, and will refer all jobs outside my scope of knowledge up to you. I don't mind offering a nominal fee if it is simply to gauge my actual interest and show some (well deserved) gratitude for your time, but I kind of feel that if you need additional streams of income outside of programming you probably arent who i am looking for.

No disrespect meant I just think i would benefit most from someone who earns their living this way.

Thanks everyone!
#learn #mentor #needed #programming #scratch
  • Profile picture of the author orvn
    Okay, listen up, because a lot of people give unsound advice on this topic and completely obliterate others' potential as a programmer. I've seen it countless times and I try to stop it in its tracks when I see it.

    I can't tell you how many people I've seen who start off with an obvious talent and enthusiasm for machine instruction, but a week later utterly cannot stand the thought of programming. They think they've seen what is has to offer and they are convinced that it's not their cup of tea based on what they've seen. Why does this happen?

    Programming is PRESENTED WRONG most of the time it is taught, especially in textbooks. The trick is to learn to do interesting and cool stuff that first week you learn to code. Forget the generic course of action. Learn to make something pretty and simple with your first program.

    When I was 12 I was introduced to the QBASIC programming language by a friend. He taught me to draw circles and make them move across the screen.

    The following week, together, we learned to loop a series of mathematical curves in a varying cycle and make some really pretty patterns. This was all I needed. For the next ten years of my life, programming would be my hobby (at one point it was even my career).

    I think you ought to start with a simple programming language like C or BASIC. Learn the basics for about a week. That's really all it takes.

    Once you have a rudimentary understanding of these basics, you can begin with Object Oriented Programming (OOP), which is an entirely different facet in itself. OOP is kind of tricky for one to understand right off the bat and the concepts explained discourage a lot of people from learning it.

    Will you be getting into web-programming? Is that your ultimate goal?
    I'd be willing to help you out bit by bit from time to time, if you like.
    Signature
    Orun Bhuiyan[@orvn] [linkedin] See what I've been doing lately by visiting my marketing agency's site. SEOcial specializes in content marketing and integrated optimization. We create conversions for businesses by gracefully connecting the realms of design, development and marketing.

    {{ DiscussionBoard.errors[2737785].message }}
    • Profile picture of the author ducwic2go
      MIT has some really good class that you can watch, you could go get yourself familiar with what it really is first and then start doing some projects on your own.

      Some programmers would recommend doing C, Java and other mainstream language. But what I found out as an undergraduate is that most of the time, when you are just starting out, the syntax structure of those language could be overwhelming.

      That's why I would recommend you to learn scheme, a dialect of lisp. It has very simple syntax and relatively easy to learn for beginners. For example, if you want to add two number like 3 and 7, it's just (+ 7 3). compare to other language which will require to type in way more than just 5 characters to do a simple addition and will probably require at least several paragraphs to explain, this is much more straightforward if you agree.

      Check out ocw.mit.edu and you can find a wealth of knowledge there. If you need more help, feel free to PM me
      {{ DiscussionBoard.errors[2744237].message }}
    • Profile picture of the author darthdeus
      Originally Posted by orvn View Post

      Okay, listen up, because a lot of people give unsound advice on this topic and completely obliterate others' potential as a programmer. I've seen it countless times and I try to stop it in its tracks when I see it.

      I can't tell you how many people I've seen who start off with an obvious talent and enthusiasm for machine instruction, but a week later utterly cannot stand the thought of programming. They think they've seen what is has to offer and they are convinced that it's not their cup of tea based on what they've seen. Why does this happen?

      Programming is PRESENTED WRONG most of the time it is taught, especially in textbooks. The trick is to learn to do interesting and cool stuff that first week you learn to code. Forget the generic course of action. Learn to make something pretty and simple with your first program.
      I absolutely agree with this. From my point of view, programming is a lot about having the right mindset. A lot of people will teach you to obsess with unimportant things, instead of looking at the bigger picture.

      This is actually problem in most areas of life, even communication. We tend to get distracted with content. You might've heard this bilion times but I'll say it again It doesn't matter what you say, what matters is how you say it. The same is for programming. I've seen people obsess about one little thing for days, only to realize that if they change their point of view, it's just matter of 1 minute.

      There are so many things I want to say, but I don't want to overwhelm you so I'll keep it short. If I could advise you one and only one thing, it would be to read Code Complete by Steve McConnellCode Complete by Steve McConnell .

      It's absolutely lifechanging book. When I got my first fulltime job as Java programmer, I just started reading it. My first week at work was really intimidating. I had to learn new framework, I didn't understand anything anyone did and I had to keep asking my assigned mentor about every step I took.

      I was working on a project with 2 other guys who were about 5 years older than me. I was just about to go to university and they were both studying for masters degree in software engineering. I felt like I couldn't compete with those guys.

      However after finishing Code Complete, I could see things that nobody else in the company could see. It opened my eyes in a way you can't imagine. Suddenly they were coming for my advice and I was spending half of my time helping them with their problems.

      You can't really appreciate the value it brings unless you already have some experience, since it mostly teaches how to write code. It teaches you how to find mistakes and how to avoid making mistakes. It's quite heavy to read though.

      The bottom line would be, I find books that are about right mindset a lot more helpful than books about specific language constructs.

      Of course when you're learning you need to learn the basics of the language first. You can't learn how to drive 150mph on snow when you didn't pass basic driver license test

      As for language to choose, I'd recommend Ruby or Python. Starting with C isn't good idea, since it will force you to think about lots of unrelevant things like pointers, which is just a distraction when you're learning.

      Java is probably the easiest language to learn as a whole, but it also has a lot of noise in the code (meaning things that have to be there but semantically don't have any value).

      Ruby is great language, very very easy to begin with, since it's incredibly intuitive. If you get the right mindset, you just write code the way you think it should work, and it's almost always correct.

      It might seem very primitive compared to languages like C, but that's only because it helps you with intelligent default settings.

      However when you get to the bottom of things, metaprogramming in Ruby is probably the most powerful thing I've ever seen in any programming language. It basically lets you to change anything, any time you want. The program can change itself while running. You can create or modify anything you want.

      Python is very similar to Ruby in most aspects, it's like C# vs Java. You won't make mistake with either one.

      Most importantly, they both have awesome communities that are willing to help you. When you decide to do web development in Ruby, there are few basic ways you can take and almost everyone who does Ruby on Rails can help you, because all projects have the same structure. Same thing goes for Python and Django.

      This is biggest difference from Java/C/C++/C# world. When you do something in Java, there are hundreds of libraries that are ment to work with anything. You can choose any combination you want, meaning if you run into trouble, nobody can help you with your specific problem, because there are so many options to choose from.

      For good comparsion I'd recommend reading this article.

      I know I'm oversimplifying things and I probably got very confusing in the end. Truth to be told, there is a lot of conflict in programming world. Some people like me will tell you that it's good to forget about implementation details and focus on the bigger picture, other people (C/C++ guys) will tell you, that doing so is childish play.

      I've been on both sides of the barrier and I made my choices according to the experience I had. I've made some good and bad choices, spending countless hours chasing some dead end ... but that's how I learned what I know.

      If you've read this far, feel free to drop me a PM if you need anything
      Signature
      Visit our website - Internet Marketing Tools on Darthopia

      And join the newsletter to get the Affiliate Sins Report with MRR!
      {{ DiscussionBoard.errors[2745586].message }}
      • Profile picture of the author windfinder
        Isn't Code Complete a bit over the top if you can't progam at all?
        It IS a must have though, so you might just get it anyway.
        {{ DiscussionBoard.errors[2750978].message }}
  • Profile picture of the author caesargus
    I was hoping some of the coding superstars here on the forum could weigh in on this thread and explain:

    I'm not a coding superstar (well I am in my own head, but aren't we all?), but I'll take a stab your questions. First let me tell you about me. I have been a developer for over 10 years and have a 4 year degree in Computer Science. I know how to write anything from simple scripts to complex systems.

    How you would learn programming today in a step by step method if you had to begin knowing nothing at all (or "how you would teach your middle school-er to program). -- Teach the kid basic logic. Once you break everything down, programming is a very logical process. Then to teach the idea of functions or methods I would explain them that it is like a robot with a very specific set of tasks. You tell the robot what you want and the robot should return what you expect. You use robots (functions or methods) to consolidate code, so when you go back to maintain a process, you just fix the robot instead of 50 different processes that use the robot. Then to teach the idea of objects (classes) I would have them think of a butler that would help run the robots. Now to break down the differences even further the robots can have robots that only they (the robots within a butler's "room of service") can call into action. The metaphor can carry on for a bit if you'd like to discuss it further (feel free to send me a PM) ...

    What are the most important aspects of the programming industry that every coder *must* know. -- Important aspects? One of the best rules that I've heard of was: Know your text editor. Find yourself a powerful text editor and learn the ins and outs so you can create your own time saving scripts/templates. I would also recommend reading the pragmatic programmer, I consider it a must read for any programmer.

    Perhaps a few excellent resources that won't overwhelm? -- resources? Well depending on what you're looking to do ... You can start with just your basic text editor and create an html page (and throw in some javascript in the page and you're programming just like that). If you want to learn PHP, MySQL, and PERL - check out "xampp".

    Maybe someone could point out a good resource for learning the basic terminology of the field, or start a simple resource here?
    You can check out devshed.com, sitepoint.com, webmonkey, php.net (very important resource if you're learning php).

    Notable and outstanding programmers, both in the history and development of programming and working in the field today. -- Well you should know some of the names (Bill Gates (Microsoft), Steve Jobs (Apple), Steve Wozniack(Apple)), some of the other names, Larry Wall (PERL), Linus Tivoldis (Linux).

    Notable and outstanding programmers that frequent the WF.
    I'm still reasonably new.

    Anything else that I just don't know enough to ask about.
    I would think about the direction of programming you would like to begin with. There are several avenues that this knowledge can take you. Maybe you'll end up making video games, or building the next Windows platform. My career lead me in the web development field. There is plenty of growth in this field (programming/Development) if you're looking for a career, or you can make your tools more efficient.
    {{ DiscussionBoard.errors[2737894].message }}
    • Profile picture of the author Eddieheli
      I'll give you a few tips.
      As already mentioned, programming is more about logic than anything. The language you program in is less important than the logic of the process the program is designed for.
      Many programs can be and are written in several languages, so don't get hung up on any particular one.
      A good programmer should be able to pick up a new language quite quickly once they understand the fundamentals of program design.
      Obviously some languages are better at certain things than others, i.e html or php for web page design. So it might help to decide what type of programming you are likely to want to do.
      Treat a computer as a dumb child and tell it what to do in simple steps AND IN THE CORRECT ORDER, but remember it is dumb, so for instance you can say to a child "Go to the shops and get a loaf of bread. The money is on the table".
      If you gave that same command to a computer, it would go to the shops for the loaf of bread, but when it got there it would have no money, as you told it about the money in the wrong order.
      It also would never come back as you didn't tell it to, whereas the child would know it had to come back with the bread.
      Enjoy the journey.
      I've been programming since 1980, starting with Basic, C and assembler, then various 3 and 4 gl database languages, Visual Basic, C++, Delphi, C#, ASP, .NET, php, html, jquery, Paradox, Access, SQL Server, MySql, Oracle etc.
      I did a Government Computer Aptitude test when I first wanted to go full time programming in the Army, and it was all logic proplems, not a single actual computer programming question. You know, like if the man with the blue parrot lives in the house with the red door, how many people live in the house with the blue door.
      Signature

      Eddieheli -
      "Forget about all the reasons why something may not work. You only need to find one good reason why it will." ~ Dr. Robert Anthony

      {{ DiscussionBoard.errors[2737993].message }}
  • Profile picture of the author smorhaim
    My recommendation..

    1. Download wamp, or mamp or one of those Apache, MySQL, PHP Combos <-- After you learn how to install this and get around some of the issues, you probably already learned about php.conf files, apache conf and mysql basic admin commands
    2. Do your first hello world
    3. Go over the manual! See examples and do your first cool little app!
    {{ DiscussionBoard.errors[2742096].message }}
  • Profile picture of the author amoneygame
    There is some great advice in here. Essentially what I would say is simply do what you want, and find out what you want to do, and you can't go wrong.
    {{ DiscussionBoard.errors[2745690].message }}
  • Profile picture of the author darthdeus
    Well that's why I said it's not easy to read

    Even the first theoretical chapters can give you huge insight in learning, but you're probably right that it's not best as the first book to read. But definitely second one
    Signature
    Visit our website - Internet Marketing Tools on Darthopia

    And join the newsletter to get the Affiliate Sins Report with MRR!
    {{ DiscussionBoard.errors[2751048].message }}
  • Profile picture of the author Ross Dalangin
    From 1994 to early 2000, I used to teach high school and colleges on programming and calculus. I programmed from DOS, windows and web based programming in almost 20 years already. Enough about me. Don't ask me more because I will charge you..hehe...just kidding. What I want to share with you is just my foundation which is very easy for me to learn new programming based on it. Sounds simple? Yes it is but you have to put enough time to learn what command is needed in a particular task.

    If it is from SCRATCH, I recommend you to learn how to create and understand a flowchart then study what command to use on every figure on the flowchart especially the loop part.

    Start from here ==> Flowchart - Wikipedia, the free encyclopedia

    Every programming language has manual. You should read it first.
    Study where to put the code, how to run, exit and debug. Sounds techie?
    Google it...

    After the foundation above, you will need a book about the programming language you want to learn. Every book has sample program. Code it and run in your computer and soon you will learn more. Every time you see a sample code, you have to test it.

    Search any sample program on the net and evaluate the result. Study the code and write down the good commands that you see. You may need it in the future. When you are done testing and evaluating codes, you have to try creating your own flowchart and check if you can make a program that will give the same result as your flowchart processed.

    When I was starting, I even print the code so that I can read and learn it fast.

    BTW, go to w3schools.com if you want to learn web programming.
    {{ DiscussionBoard.errors[2751250].message }}
  • Profile picture of the author sparckyz
    I would suggest youtube videos, some amazing programming tutorials on there. I basically learned Java using them
    {{ DiscussionBoard.errors[2751266].message }}
  • Profile picture of the author copypilot
    Try and be practical with something that gives you results fast. I started with HTML and javascript. I could see the results of my work so I continued. Also HTML and javascript are relatively easy in the scope of things.

    Try out making simple websites with HTML, PHP, and Javascript first. I would also recommend a simple language after that, something fun and easy like Purebasic, or DarkBasic, which allow you to make games and graphical applications.
    {{ DiscussionBoard.errors[2751946].message }}

Trending Topics