197
votes

So my Dad bought me 5 books on programming (C++, Java, PHP, Javascript, Android) about a month ago. He's an architect and he knows NOTHING about programming. He bought me them because I told him programming was fun and I wanted to learn it.

As you might know, being a kid (I'm 14) and being told to learn programming out of dull books isn't the easiest thing. I'm always getting distracted.. I told him before that I didn't need to buy books and I could just watch online tutorials.. but no, he's so old-fashioned. He's only letting me use the books.

Recently, he started asking me what I've done with it, and I showed him a C++ program I made that takes what you type in, then assigns values to each letter (A is the first letter in the alphabet so it gets the value of 1).. and so on. It then adds up all the values and tells you it. So the word "add" would have a value of 9.

^^ That wasn't very impressive to him. He yelled at me and told me all I've been doing is screwing around. That's not true. He is extremely traditional and stubborn and doesn't listen to anything I had to say. What should I tell him?

PS: If you have any tips on zoning in on a book, let me know

EDIT: Thank you so much everyone, you have no idea how much it means to know that there are some people that understand my situation. I've read every one and I'll consider everyone's opinion. ¡Gracias!

14
  • 15
    Commenters: comments are meant for seeking clarification, not for extended discussion. If you have a solution, leave an answer. If your solution is already posted, please upvote it. If you'd like to discuss this question with others, please use chat. See the FAQ for more information.
    – user8
    Aug 2, 2011 at 17:29
  • 7
    By the way, you should show him this thread. It may go farther with him, if he sees professional programmer's opinion of your progress.
    – Collecter
    Aug 3, 2011 at 18:54
  • 15
    @David That's not traditional, that's being an awful parent and a selfish person. At this point he doesn't want you to actually succeed, or he'd be in the pit with you. He really just wants to be the dad of a successful kid. Unfortunately there's little you can do about that, since it's your father and you can't be disrespectful. What I'd say is grimace and bear it, then when it comes time to undergrad, pick a ivy league far far away. Aug 3, 2011 at 21:18
  • 15
    I'm not surprised this was closed (it is off-topic), but it's one of those questions where I wish we had a tag/flag for "off-topic, but keep anyway". :)
    – Cyclops
    Aug 4, 2011 at 15:10
  • 12
    Ask your dad what he was up to when he was 14
    – CodeART
    May 7, 2012 at 22:25

40 Answers 40

197
votes

I showed him a C++ program I made that takes what you type in, then assigns values to each letter (A is the first letter in the alphabet so it gets the value of 1).. and so on. It then adds up all the values and tells you it. So the word "add" would have a value of 9.

I don't know what you should do with your dad. But:

If you did this all by yourself, starting from scratch, learning from books, in a month, it's damn impressive. And you did it in C++, which is one of the scariest programming languages in existence.

There are quite a few people out there taking interviews, seriously trying to get programming jobs, who would struggle with that. See this story.

I can only suggest: keep doing what you enjoy. Ignore your dad in this context; he doesn't know what he's talking about. You have talent in programming and willingness to learn - the main ingredients in becoming a great programmer.

12
  • 8
    Yes, I've been learning ambitiously (that particular program gave me about 60 headaches).
    – David
    Aug 2, 2011 at 7:10
  • 8
    @David: Given that he's an architect, it's understandable that he cares about how things look. But if he knows nothing about programming, then he shouldn't be criticizing it. The graphics, look and feel of software are only the top of the iceberg. Aug 2, 2011 at 7:23
  • 12
    Seriously? "Fatbooth" has some hairy graphics manipulation algorithms that takes years to learn and master. If your father wants you to master facial recognition then he should've bought a book about it. It may look easy (because it is easy to use) but it is more difficult to achieve than you'd think, giving you multiple 60's of headaches combined. Assuming that applications such as "Fatbooth" is easy to do is a serious (but secretive) insult to programmers.
    – Spoike
    Aug 2, 2011 at 7:54
  • 121
    +1 for damn impressive. It is, particularly considering where you are coming from. I guess you could ask your dad how many buildings he had even been involved in, much less worked on on his own, one month after starting from scratch learning his craft. Put things into terms that he can relate to.
    – user
    Aug 2, 2011 at 8:01
  • 13
    @Joonas: Not to mention that graphic design, usability, and interface design are really all disciplines that generally have very little to do with programming.
    – Toby
    Aug 2, 2011 at 12:25
88
votes

Show him this post by Peter Norvig. Norvig is head of R&D at Google and teaches at Stanford, specifically Artificial Intelligence, he wrote the standard introductory book on AI. How long have you been working at it? I'd expect nothing more than that after a month of work by a novice with no additional instruction particularly with something as thorny as C++. Anything worth learning is worth learning well.

0
83
votes
  1. Remember that your dad probably thinks that you're about the smartest kid in the world, and he's trying to help you learn about something that you've said you enjoy.

  2. Know that even though your dad is unquestionably wrong (five completely different topics is a lot to throw at a kid all at once), he's also kinda right. A lot of people try to pick up programming by mimicking "tutorials" that they find on the web. That's not always a bad thing, but IMO it usually doesn't lead to solid understanding. The right book will teach you the fundamentals first. That might not be as much fun as following tutorials that get something flashy done, but your chance at long-term success will go way up, and the number of questions you have to ask on stackoverflow.com will go way down.

  3. Forget about all but one of the books, at least for now. It sounds like you've already started in with C++, so go with that if you like it.

  4. You're going to feel discouraged from time to time. Sometimes it feels like half of programming is getting stuck, and the other half is getting unstuck. Getting unstuck is a valuable skill, and the more you practice it the better off you'll be. (Avoiding getting stuck in the first place is also a valuable skill, so practice that too.)

  5. Learning your first computer language is to software development what learning to draw is to designing a building. It might not be the most interesting part, but it's a required skill.

  6. If you can get him to listen, try to break down all the things that you had to learn to write your little program. It takes some time just to learn to use the tools, and he surely doesn't understand how it all works.

  7. Now that you've gotten to the point of having a simple running program, and you've apparently learned a little bit of C++, what interesting little programs can you write? How about a loan calculator that accepts an interest rate, loan amount, and loan term and prints out a payment schedule? Or a calculator that reads a molecular formula like "H2SO4" or "C6H12O6" and prints out the weight of the molecule? That's not too much more complicated than the program that you've already written.

6
  • 47
    +1 "Forget about all but one of the books"
    – PA.
    Aug 2, 2011 at 9:03
  • 9
    +1 for great, practical ideas. When learning, the hardest part is often coming up with an idea for a project at the same time you are being smothered in new information. Aug 2, 2011 at 13:40
  • 5
    +1 "Remember that your dad ..." Nice to have his father's point of view in there, even if he is smothering David's enthusiasm with his own excitement to help. Aug 2, 2011 at 22:17
  • 7
    Make a small architecture problem solving/calc tool by getting your dad involved! Aug 3, 2011 at 2:53
  • 3
    +1 for the first point. I think it's very important for parents to think about their kids as the smartest in the world. In the end, if not such attitude, OP wouldn't have done that much in a month, I'm sure. However, it might be overhead if it's giving OP so much headache. Aug 3, 2011 at 7:35
52
votes

He bought me them because I told him programming was fun and I wanted to learn it. ... What should I tell him?

"Dad, your approach to this is making learning to program absolutely no fun. Knock it off."

3
  • 4
    not the best of advice. Dad dont like to be answered back in that way
    – CyprUS
    Aug 3, 2011 at 8:45
  • 1
    yes but if OP just sits there and takes it then dad feels like he's right; his kid wasn't working very hard after all. The kid's gotta speak up at some point so his dad will realize how hard he's working.
    – Kevin
    Aug 3, 2011 at 18:10
  • 1
    @CyprUS True, but I cringe at the word robotics now. It was the love of my life a year ago. I had the Lego Mindstorms Kit had RobotC installed and all that. Loved it, until my dad got some "real" gears and motors and told me to make something "real" like a robotic arm. Hate robotics with a passion now.
    – chandsie
    Aug 3, 2011 at 20:01
48
votes

As an architect he must be surely pulling your leg or being plain rude.

Probe him about when he started out: Ask him if he drew skyscrapers with detailed plumbing plans, calculated the forces and stress on materials, and did disaster risk assessments (such as being hit by a plane with snakes in it) after a month spending with books when he was as young as you. Maybe that'll calm him down.

Okay, maybe it's not the best advice I can give you, to talk back on your parent. I can understand that having a dad, that penalizes on progress instead of encourages, is a bit taxing as a kid but take it instead as an encouragement to do better. He may have an attitude problem, but that doesn't mean ill intent.

1
  • 44
    Also an advise to your dad (though outside the scope of the question): Drop the Gordon Ramsay attitude. It only works on Hell's Kitchen because the contenders are experienced adults who are expected to know how to cook and do perfection in his restaurant and Gordon does give credit when due. If you do this to a novice beginner or kids, it'll only scare them away from learning the practice. Worth noting that Ramsay is nicer in his other tv-series since it isn't his own business at stake.
    – Spoike
    Aug 2, 2011 at 8:36
30
votes

I'd be curious which books you're using. Not all of them are actually good. Also, not every book is appropriate for everyone.

You didn't specify your age, so I'll assume you're well under 18. I started learning when I was about 8.

When I was a kid, I took advantage of lots of resources when learning to program. I had the manuals that came with my TI 99/4A, which contained lots of fun programs to draw images and animate figures. The internet wasn't available to me, but there were even computer magazines that targeted kids, with programs that I could type in and get immediate feedback on, and articles about how to solve other kinds of challenges. I was very fond of a spy novel series that let me type in and debug programs that were included as part of the story. Unfortunately, I don't think that this kind of resource is still around, but there are a few programming books that target younger people, like the Hello World book on Python, and Land of Lisp (though that's fun for adults too).

I don't know about you, but there was a time when I got quite a kick out of writing programs that do things very similar to what you just described. Eventually I moved on to more advanced things. I wrote a few mediocre games, some demos that played various sounds and animations in reaction to keystrokes, and some study aids. When I was around 10 or 11 I wrote a program that helped me memorize the periodic table of the elements by repeatedly quizzing me. (At the time, my memorization skills were better than they are now, so I got almost as much out of typing in the data the first time as I did playing the quiz, but the point was to make progress).

Your father may not realize it, but books are only part of the process when you're learning to program. Finding a little problem and trying to figure out how to solve it is the other half of the equation. Finding a book that teaches you a little bit at a time and lets you get something fun to happen on the machine is the other half. In my case, books that emphasized graphics and animation were the ones that won me over.

As a kid, my eyes glazed over when I read books about sorting algorithms and complex data structures, until I had learned enough to see how they applied to problems I actually cared about. Not every word in the books you'll read will be riveting. That's ok. You'll get to that stuff when you need it; some problem you'll want to solve will remind you of that technique you didn't think was interesting three weeks, three months or three years ago and you'll go back and review it and figure it out.

A month is not a very long time to learn programming. I've been writing code in one form or another for about 30 years, including during childhood, and I still learn something new every day. I'm pretty sure in the first month that I had my first computer, I spent a lot of time playing Munch Man and a much smaller number of hours trying to make sense of the sample programs in my reference book. Learn at the pace that works for you. There's no pressure right now, and that's great.

"Screwing around" is what you're supposed to do when you're first learning to program. Hackers (the Paul Graham kind) poke around, trying to understand how their system works, how their programming language works, how their tools work. You try something, you fail, you reason through the problem you're facing, and you try something else, until you get something working. Don't worry about it so much.

Unless your father's working through the same books, he probably doesn't understand how much you've learned so far. I wouldn't expect to be able to design a house or a skyscraper after reading a book on architecture for a month, especially as a teenager.

To put things into perspective, over the last four weeks or so I've been working in some esoteric corners of the Ruby on Rails framework's Engines feature. As of today, I finally have something to show for it from the user's point of view. I learned a ton in that time and developed a lot of critical foundational code that works pretty well, but is my professional equivalent of allowing users to type in some stuff and get something else back out: not that impressive at first glance to a casual user, but a whole lot of work went into it. If someone told me I'd been screwing around for four weeks, I'd be pretty disappointed, but I'd also know they have only the slightest understanding of what went into making things so "simple."

6
  • 2
    +1 for cutting your teeth on the TI 99/4A. Pretty much same story for me programming was fun and getting started doing it was much more accessible (or maybe it just seemed that way). My daughter (10) is showing an interest in learning to program and I am having the hardest time thinking of a fun yet iterative way to get her started. To the OP from zero knowledge to 1 month and doing what you said sounds right on PAR.
    – Ominus
    Aug 2, 2011 at 17:39
  • Ominus (and David), take a look at Processing, and this book from Manning: manning.com/pearson
    – JasonTrue
    Aug 2, 2011 at 22:09
  • 4
    +1 for not all of the books are good. In my experience most of the books out there are targeted at people who already understand programming. There aren't many directed at newcomers, but I would recommend this one and/or this one.
    – David
    Aug 3, 2011 at 11:53
  • @David thanks for the link. Ordered the book for daughter this morning.
    – Ominus
    Aug 3, 2011 at 19:17
  • @Jason: He mentioned that he was a kid of age 14.
    – CyprUS
    Aug 4, 2011 at 5:27
19
votes

Sounds like in this situation your dad is not a someone who gives you positive reinforcement and support in what you are doing. Simple solution: don't use him for that.

Do your own projects and do them because they are fun, not because he (or anyone else) wants you to do them. Pick something that's fun for you. You do not need to learn entire language/technology from a book. Instead just start tinkering with things. Eventually as things become easy, you'll look for new concepts/challenges. And you'll find youself wanting to read the books that today you find boring (or at least certain sections).

If you ever get stuck and need help with coding anything, stackexchange is great resource as you've already found out.

16
votes

It sounds to me that your dad has a penchant for unrealistic expectations, or perhaps you have a history of starting things and not following through, or both. The important thing to realize is none of that really matters here, all that matters is that you enjoy what you're doing and get better at doing it.

I have a very difficult time with books that don't entertain me, I always have. I learn best by watching other people do things, asking questions when I don't understand the purpose of something and then struggling until I figure it out. Struggling makes us stronger and gives us ownership of our eventual accomplishments, perhaps that's why it's so darn difficult to climb out of a uterus.

That being said, one of the sharpest tools in your toolbox is going to be the ability to remain open, work productively amidst criticism and not rule out advice based on the source. Good programming books tend to grab you, inspire you and expect you to return to them when you hit a wall. Without them, you'll be doing lots of amazing things without initially understanding precisely what you're doing. Programming is a very deliberate art, so I do encourage you to seek out books that are written in a manner that is easy to digest.

I've been programming professionally for quite a while now and I can tell you that my satisfaction is truly my own. My boss doesn't quite understand why things I have written are so awesome, my wife falls asleep when I tell her about my day and my friends go out of their way to avoid asking me about my job. I relish my victories and the occasional opportunity to share them with my peers. Your dad, in this case, isn't one of your peers.

Keep going and keep improving. Get used to the fact that non-programmers need to see something visually impressive before being impressed. Why not try your luck at writing something like a Mandelbrot / Julia set generator? That might show him the kind of progress he's looking for, getting him off your case for a while. In ten years, you'll do something very similar to get a non-technical manager off your back so you can get real work done.

Just remember, you're doing it because you enjoy it.

3
  • 1
    Listen to this man, he knows what he;s talking about ;)
    – drxzcl
    Aug 2, 2011 at 8:28
  • 2
    hehe, I like'the fact that non-programmers need to see something visually impressive before being impressed'. Writing a fractal generator was one of my first project in computer science school. And I was impressed myself :)
    – Guillaume
    Aug 2, 2011 at 13:43
  • Probably the best answer in all this thread...
    – Venki
    May 11, 2012 at 14:29
15
votes

It is hard to tell whether this question is best for the Parenting forum, or the Programming forum. I fear that my advice my not be on target, because I sense that tangled up in this question is potentially a lot of father-son relationship "issues."

That being said, what I would focus on is the great opportunity that exists for you and your father to connect on a subject the two of you may share a passion for in some way. Being a father myself, and knowing my own father, I know how desperately we want our children to listen to us, follow our instruction, and learn from us. Our children are often driven to do the opposite. So the fact that the two of you share this common interest, is wonderful.

Fathers can be stubborn for sure, but I still think there is an opportunity for you to flex your own individuality and choice through this exercise. Not out of a sense of defiance, but stemming from your own drive and ambition to know the subject of programming well. Personally, it sounds like your father threw you into the deep end when it comes to programming. Granted it may not be MIPS Assembly Language or LISP, but still, C++? Java? Yikes. I love programming, but reading those early on might have turned me off all together. Kidding. :)

So what I would ask is this: what inspires you? What kind of things do you want to build? Answer that, and then seek out your own books and tutorials on that subject. Come here and ask questions. Build something. Then show your dad what you built. Tell him what you learned. Thank him for being so engaged with you and tell him you appreciate him. I say that because in the end, that is what this is all about. He wants to share something with you because he loves you. Sometimes fathers have a hard time expressing that in traditional ways, so we seek these indirect ways to say the same thing. Sometimes we suck at doing even that. But don't forget that in all of this is a desire to be closer to you.

0
15
votes

It doesn't seem like anybody has suggested this yet:

Recently, he started asking me what I've done with it, and I showed him a C++ program I made that takes what you type in, then assigns values to each letter (A is the first letter in the alphabet so it gets the value of 1).. and so on. It then adds up all the values and tells you it. So the word "add" would have a value of 9.

^^ That wasn't very impressive to him. He yelled at me and told me all I've been doing is screwing around. That's not true. He is extremely traditional and stubborn and doesn't listen to anything I had to say. What should I tell him?

If you think about it, that program is not very impressive to somebody who uses computers and doesn't know anything about programming.

Show your dad how you made it. Walk him through the source code. He probably (definitely) won't understand it, but it will convey how much work you have put into it, and how much you understand, and maybe he will come away with a more positive impression of how much you have actually accomplished.

2
  • 3
    This deserved way more recognition than it got. A good non-confrontational solution that could get his dad to understand his sons hobby a bit more. Nov 20, 2012 at 23:38
  • @FergusMorrow Agree. This answer got way too little upvotes.
    – jobukkit
    Jun 3, 2013 at 15:28
12
votes

Do whatever you want

It's your life. You can do whatever you want. Don't let anybody (even your dad) to control your life.

I assume that you enjoy programming more or less and want to become a successful specialist (and your dad wants, everybody wants). But the thing is, you will never become successful unless you know what you're doing and unless you like it.

Mastering any field is hard. You can't do this only under someone's influence. And nobody knows what you should do better than you. You want to rest today and feel like playing games all day? That's your decision and you are responsible for it. You should learn to be responsible for your decisions and your life. Being responsible for your decisions is mandatory for every successful specialist.

So what do you do in that situation? Stand your ground, don't listen to anybody and do whatever feels worthwhile to you.

2
  • 3
    The OP is a legal minor (14, apparently). His parents are expected to control his life, and blindly fighting back for the next four years will most likely just make everyone miserable.
    – jwodder
    Aug 2, 2011 at 22:46
  • 1
    @jwodder: If those parents feel like they need to control what their boy learns in his free time, then it might be the best he starts to fight back ASAP. I, too, have kids, one just as old as David. If my kid couldn't tell me I was wrong when she thought I am, I'd fear for her future. A 14 year old is not a 7yo, he knows a thing or two about the world, and knows a few things his parents don't. And if he turned out to not to be what they wanted, they've failed all the years before, and have no chance to catch up anymore, least of all by continuing to do what they did for 14 years.
    – sbi
    Aug 3, 2011 at 18:58
10
votes

You requested books. Honestly, you will do better solving problems than reading books. Find a puzzle or a problem you are passionate about. Project Euler is a great source, and CodeGolf can offer interesting questions on occasion. My first programming project was a C++ app which found prime numbers. The textbook I was using at the time offered a simple implementation like this:

bool isPrime(int x){
    int c = 1;
    while(c < x){
        if(x%c == 0){
            return False;
        }
        c=c+1
        /*c+=1 if compiler is set to '98 or more recent*/
    }
    return True;
}

which is massively inefficient. I found about the first 500 primes with that function before giving up in disgust at its slowness. Dad and I had a great time trying to optimize above, and even though it was a simple app that didn't even write its output to a file I had fun and the resulting product was cool.

Will you learn by reading books? yeah, but I cannot emphasize the value of just mucking around with a programming language and learning by trial and error.

If you are learning programming for your dad, stop and find your own reason do do it. Mine still hounds me to build him a high-volume automated trading system. I'm deadly serious when I say that you need to find something you want to work on because otherwise you'll probably abandon programming altogether because you will come to see it as a chore not a hobby or a sport.

Try reading Linus Torvalds's book "Just For Fun" in which he recounts the origins of the Linux operating system. The title says it all.

Seriously. Just go hack on some problem. When stuck, get the old man involved.

If your dad doesn't appreciate your work, its not because he's disappointed. He's an architect, he doesn't know how complex some things are. Try to walk him through your code, if only the logic and make him appreciate what it is about that logic that you learned by writing it.


TL;DR


  1. Just mess with something. Solve a problem. If you can't solve it, find someone else's solution and try to understand it.
  2. Have fun with #1
  3. Whenever you learn something or make headway, remember to tell your old man.
  4. Pace yourself. Everyone learns in their own way and at their own rate. Just keep at it and eventually you'll have the skills to do whatever it is you want.
1
  • 1
    Actually, he specifically states that he didn't request books.... The rest of this I agree with
    – Paul
    Aug 2, 2011 at 13:39
6
votes

Try finding a book that's specifically an introduction to programming for novices. Maybe something like Hello World! Computer Programming for Kids and Other Beginners by Warren Sande.

You should also see what your library has. Most libraries should have a few beginner books.

5
votes

In my mind you have two problems :

  1. You want to learn programming and keep it fun (the fun is essential, it makes everything easier)
  2. You have a customer that really doesn't understand a thing about programming but has an idea what he wants. (Your dad in your case)

IMHO:

  1. For your first problem, you just go to sites like this and ask questions like you did. Find resources like these https://softwareengineering.stackexchange.com/questions/62224/how-to-become-a-professional-programmer/62263#62263 . Think of something you want to create (a game, to-do list, movie collection management system, the next best social platform) and just start coding. Or start with solving puzzles Where can I find programming puzzles and challenges?

  2. Your second problem is harder, you need to educate your dad (while he doesn't seem very willing) While you learn you will get better in explaining him what is hard about programming. You could try to use metaphors like explained her What's a good Programming Metaphor? . Another tip is that non-programmers in general don't get the complexitys of a great algorithm but are easily imprest by nice looking interfaces. Depending o nthe platform you choose you can generate pretty looking interfaces pretty easily to impress your dad. Use for example:

Hope this helps.

1
  • +1 I like your post, but I don't think anyone here has even suggested that this kid find out what his father's expectations are. It seems a bit premature to rule out the father's expectations without knowing what they are.
    – user179700
    Aug 3, 2011 at 1:16
5
votes

I'd just like to add that I was in a very similar position at one time in my life, my dad didn't really understand what positive reinforcement meant. But seeing as I was persistent and resilient towards his sometimes harsh disapproval I managed to keep at it. Some twenty years later the relationship with my dad had changed a lot, it improved but the subtle nuances of back then, are still there.

This is just a difficult time in your life and the important thing here is that you have fun doing this more than anything else.

4
votes

About C++, Java, PHP, JavaScript and Android (so that you might be able to choose between them, because trying to master all at once is likely to fail):

  • C++: It is an extremely powerful language. But too powerful, too unforgiving, too cryptic to start with. You have to understand far to many things to get going. I think, this in a poor choice of language for starting too program.
  • Java: A popular choice for beginners. In a sense, it is the opposite of C++: C++ offers you about any imaginable way to shoot yourself in the foot, while Java attempts to not allow anything that could be beyond your control, which is in fact quite paralyzing. It is a little too simplistic, too trivial, too restrictive to show you much of programming. And you can't get very much done in Java without knowing a lot of the standard API and several frameworks. Java as a technology has a lot to offer, but has its shortcomings as a language.
  • PHP: A very popular language, mostly because of its low entrance barrier. PHP as a language has matured and is now rich with the features one expects from a modern language. However PHP carries around a lot of baggage for historic reasons. So while it actually allows writing good programs, few people do and you will not find so much information about how to do it. And the standard library is a mess. Should you decide to write PHP, my advise is to start working with a framework right from the start, as they usually promote robust solutions to common problems. Personally, I recommend symfony, flow3 and CakePHP. However, my advice is: don't start with it.
  • JavaScript: A surprisingly powerful language, once you get to know it. It has a "few" quirks, but in fact you should be able to live with that. Although initially used to add interactivity to HTML pages, JavaScript can now be used in a number of fields. Apart from classic use, it can be used for Desktop and Mobile app development with platforms as Appcelerator, PhoneGap and AIR and to create servers using node.js.
    There are many JavaScript libraries and frameworks out there. I suggest you check out knockout and jQuery as well as qooxdoo and ext.js if you're looking for something full-blown. Also, for serverside development, you should check out express.js.
    Also, I'd like to point out CoffeeScript, a language that compiles to JavaScript, but has quite a few extras, that come in handy.
  • Android: Unlike the other four, this is a platform. Platforms should be chosen depending on what you want to do. If it is mobile app development for Android devices, then go for it. Not sure it's the best thing to start with, but ultimately you need to create things you think are cool.

In any case, what's really important is, that you find this enjoyable. That you create things, you think are cool. That solve some of your needs, or that are fun to play with. Programming is for those who enjoy it. You need a toolset, that allows you to build apps with few lines of code. JavaScript/CoffeeScript might be a good starting point.
Personally, I would like to point you to Ruby. It has taught me a lot about programming and I feel unfortunate for not having known of it when I started programming. Basically, there are two formidable books (both available for free):

  • Why's Poignant Guide - Personally, it was a little too much distraction (jokes, cartoons, etc.) in that book for me, but you might enjoy just that.
  • Pragmatic Ruby - Worked perfectly for me. It is a little dry, but it simply deals with the essentials.

Along with that I suggest you check out shoes. It is a great tool with an awesome integrated help, including reference, tutorials and demos. You'll have your first things up and running within days.

And, probably for later, I would like to point you to haXe. I think it is a great language (my language of choice), and there's a brand new beginner's guide, that has been issued just recently. However haXe does not have tools available, that make it equally simple to create applications as with JavaScript and Ruby. Therefore you might find it tedious or even frustrating to start with, which defeats the whole purpose.

4
  • I would definitely suggest him to cut his teeth on C/C++ . I did the same and found learning any language surprisingly easy because almost all modern lang derive something from C/C++ .
    – CyprUS
    Aug 4, 2011 at 5:34
  • @CyprUS: While I agree, both are worth learning, I don't think either is a good choice to start learning to program. Also, I don't see how the LISP or the Smalltalk family would derive anything essential from either of both.
    – back2dos
    Aug 4, 2011 at 8:19
  • I think we must let the boy decide what he wants to do. That said, LISP / SmallTalk are too esoteric to be of general usefulness ( my opinion)
    – CyprUS
    Aug 5, 2011 at 12:57
  • @CyprUS: I only offered advice. In the end he must choose. I didn't mean LISP or SmallTalk, but the (partially) overlapping class of modern languages they created, most notably Ruby, Squeak, Objective-C, Lua, Scala, Erlang, Clojure, JavaScript, F#, Nemerle, Scheme. All of which are in fact used, some being even among the most popular languages out there.
    – back2dos
    Aug 5, 2011 at 13:26
4
votes

Regarding the programming language, I agree that you should focus on just one.

Actually, I recommend one that you don't have yet: Python. Python is a language that is quite easy to learn, but also quite powerful. C++, Java, PHP, and Javascript are all much more complex.

There's several books from Manning that teach programming using Python. I'd strongly consider "Hello, World!", even if it is aimed at a slightly younger demographic.

If you do want to continue with C++, then I recommend this book:

Though it's more of a "reference" and less of a "tutorial". I'm not aware of a good C++ tutorial - there's a ton of "teach yourself C++ fast" kind of books out there, but I don't think they're very useful. (C++ is a pretty difficult language to learn first; most C++ programmers started out on an easier language).

3
  • Agree, python's a better choice as a first language. C++ is great but its very powerful and difficult to use--its like learning to fly a plane before learning to walk. With python you can use libraries right off the bat and do fun things. Your string_add function is 5 lines of readable code. E.g., def string_add(a_string): \n\t sum = 0 \n\t for letter in a_string:\n\t\t sum += ord(letter) - ord('a')+1 \n\t return sum (the \n - new line \t -tab) or using more advanced functional programming its a one liner. string_add = lambda a_string: sum(map(lambda ch: ord(ch)-ord('a')+1, a_string))
    – dr jimbob
    Aug 2, 2011 at 15:06
  • +1 It took me about a year to learn C++, while it took me only ten minutes to learn Python.
    – user4595
    Aug 2, 2011 at 19:06
  • +1 I'd also recommend Head First Programming which uses Python.
    – David
    Aug 3, 2011 at 11:58
3
votes

That's quite a bit to try to expect in one month. Rather you should try to concentrate on learning one language or paradigm at a time or it could get overwhelming. Getting too much shoved at once is also a good way to get turned off on it. You may learn better by working on a specific program that you're interested. If Android phones is where your interest lies you're probably better off going with Java rather than C++. He may have been expecting some whiz-bang UI thing as a typical customer would so don't be discouraged by his disappointment :)

Some of the Head First books can help make the learning a little less dry if you're constrained to stick with books.

3
votes

I think you should put the more formal stuff away for now, and have a look at Scratch - http://scratch.mit.edu/ - it allows you to deal with most programming constructs in an easier way while still learning you the stuff you need like loops etc.

It also allows for flawless multithreading which is perhaps the hardest part to do by hand, and which is needed to give interesting results in todays world.

Do not underestimate it because it uses colours and a lego brick like approach to programming. You can do a lot with it, without getting lost in technical details.

1
  • +1 - Scratch is a terrific and fun way to learn. It is actually designed with age bracket in mind, but is still Turing Complete. Also, check out BYOB (Build Your Own Blocks) for an object-oriented extension to Scratch. Aug 2, 2011 at 13:54
3
votes

Ask your dad if he could design a high rise building at your age. That is what programming is. It takes time to learn, because there are so much to learn. It's like riding a bike, only you have a thousand pedals, gears, handles, knobs, and you can't pick and chose which of them to use at any given time. It takes practice.

I don't doubt you. You have dabbled with C++ early on in your goal to become a programmer. That is impressive to me.

Hang in there, and good luck with your career as a programmer!

3
votes

I know there is a lot of answers already. But I haven't see this advice: try to get your father to help you. Try to pick something hairy in the C++ book, that you can understand and ask him to help.
Give him the book and let him crawl in C++. I'm pretty sure this will make him realize how tough it is to code.

3
votes

Try to turn this situation for your own good. Just accept that what you accomplished until now is not enough and try to do better... You'll have enough hard times like these when you will be working for a boss if you don't start getting over it and improving from now on.

If only I worked twice as hard when I was your age...

0
3
votes

Your father's input isn't conducive to your learning process. Yes, there are a number of ways to go through learning programming as others have mentioned. However, you have shown phenomenal progress in C++ in my opinion. Your adding program would've been something I could barely handle after my first semester in java programming.

There are two things you have to tackle if you want to continue:

1) Handle your father.

Look, every dad has extravagant dreams for their children. However, their expectations can be very high and will eventually lead to something not even possible in some fairy tales. I'd recommend bringing in someone external in the situation to better evaluate your progress and bring your father down to earth. You can try talking to family/friends you know with programming experience or even people in this community can email him on behalf of our own experiences and knowledge. This is the most important step of all, because if your dad doesn't cool out, you will lose interest all together.

2) Find a focus.

It is not conducive to learn everything at once. Pick a language and stick with it. As you read a book on a specific language. Following the book's examples verbatim isn't the way to go exactly. Regurgitation is a learning process for some, but not all (especially myself). It is important to attack it from as many angles that you can and are angles that you are interested in. Programming books by different authors on the same language but different uses can grow your curiosity on how you would like to use the language and insight to your own desire from programming (make games? design applications? testing? ect, ect). You can also go on a personal adventure into creating a program. Figure out what you want to do regardless of what you know at the moment, then research it as you program. As time goes on, you'll eventually want to try out other programming languages that are related or not. You may also realize that you don't want to do programming all together.

Above all else, remember that it isn't the end result that matters, it is the journey. Don't forget to have fun!

3
votes

You have been given some good feedback and advice about the programming aspects of your situation. But I want to add something from a different perspective...

I have the impression that you experiencing some negative thoughts about your Dad - he has put pressure on you and has made some comments that have caused you some grief and worry - and that have taken the fun out of programming. That is a shame and I think most people here would agree that programming is fun - I've been programming for over thirty years and I still find it fun.

But, I think your Dad is on your side really. He did what he thought was right, he was trying to help, he bought you the books to give you a good start. But he got it wrong (and I speak as a Dad, we do get things wrong sometimes!). To him, books are probably where he started in his architectural career (I assume this started before the internet and the www were commonly available, if at all). So to his mindset, books are where you start.

So, assuming that your Dad is on your side (and I am certain that he is) then the problem is that he just doesn't understand how difficult it can be when you first start programming - so show him all the answers that he been posted here - I'm sure your Dad is a good guy and he'll understand and he will support you.

And good luck with your programming - looks like you are making a great start.

2
  • maybe adding 'prodigy' wont be too much eh? Making a program like that will be tough for many of my friends , I can assure you
    – CyprUS
    Aug 3, 2011 at 9:03
  • @CyprUS - I wasn't making any comment about his specific abilities (although I am sure they are fine). It was to do with his Dad really. Aug 3, 2011 at 10:02
3
votes

One thing not mentioned in the other answers:

As you might know, being a kid (I'm 14) and being told to learn programming out of dull books isn't the easiest thing. I'm always getting distracted.. I told him before that I didn't need to buy books and I could just watch online tutorials.. but no, he's so old-fashioned. He's only letting me use the books.

You certainly need to work on that part. The Internet is every programmer's crucial tool and you have to work with it.

Firstly, programming is about problem solving. When you don't know how to do X in language XYZ, you google it and look for solutions. *Finding solutions quickly i*s as important to a programmer as using a keyboard.

Secondly, another crucial skill is using documentation. Books are usually like tutorials- they offer guidance, but they don't offer you complete knowledge - and this is where documentation comes in handy. For example: you're programming in C++, you have a month of experience. Sooner or later (I'd say quite soon) you're going to need to use the standard library... or maybe you have already used it? If so, that's a good sign, your book is probably not a bad one in that case. Anyway- it will be useful to know what is already present in C++ standard libraries, and what is not. For that, it's useful to keep a reference like http://cplusplus.com/ open all the time during programming.


The internet is crucial for coding, and even more crucial for learning to code. If your Dad doesn't understand it and expects you to learn programming using the books only, then his approach is counter-productive and makes you progress slower (and possibly get bad habits).

2
votes

He has no idea about the process of leaning to program. You can read all of those books and still not be able to write anything decent, because what takes the longest is the genuine understanding of what you can do, and how to approach it.

You've told your dad that you enjoy programming - don't let him ruin it for you. And certainly don't try and learn 5 programming languages, at least not now. Stick with a relatively simple on like Java, that can be transferred to the others once you've mastered it.

With regards to the books, by the way, it's the right way to do it, because you learn about the language the right way. Following tutorials often leads to picking up bad habits etc.

Best of luck; and let him know that you're doing it properly, progress is slow but you're learning so so much while you're doing it.

2
votes

I think alot of programmers aged 25-35 and up grew up playing Nintendo and Sega. A good part of them/us made the mental transition of why play a game when you can make your own. It's a very self-serving motivation that can drive you to be a better programmer. It's a start. Later in life you might transition from writing video games (virtual problems) to games with higher stakes (real world problems). Like is this prescription for this patient not going to adversely interact with another prescribed drug, can these trucks make the most amount of deliveries with the least amount of gas in order to reduce pollution, or how can I ensure the purchase of this stock will buy at the price I want when there 1000's of other buying it at the same time. I think your dad would be impressed by you solving these real world problems but he needs to understand that you gotta take baby steps to get there.

1
vote

Architecture is rooted in the physical world, which you have been learning about since you were born. To an architecture university student, playing with legos would be a waste of time. Your dad assumes that since you know math, you are familiar with the fundamentals, and you should be able to start producing things. Well that's not true. He doesn't know the first thing about programming, because he doesn't even realize that it's not a branch of mathematics.

Programming is a new world. The best way to become adept at it is to learn it just like you learned the physical world: Immerse yourself and experiment. In a word, play. It's lego time.

For comparison, consider astronauts. They too have a new world for which they are totally unprepared. They have to start with the basics like how to move across the room.

As a next step, I'd suggest making a game where the computer picks a random number, and you try to guess it, and it tells you if you're guessing too high or too low.

Try lots of different languages, too! Not all at once, but maybe for a week at a time.

When you've gained some experience, making a full-fledged video game is one of the biggest challenges you can take on as a journeyman programmer. Video games touch almost every corner of our discipline, and building one is a great way to build your skills. It's also a perfect place to experiment and learn at higher and higher levels of skill.

0
votes

Take your own time in learning programming languages the more you practice the more you will get into programming, this time you have created a very simple program which is quite cute for a beginner but as you progress make sure that you make sure that you create a good program which could be actually used by your dad, well if you ask me this is how i helped my dad in his work.

Just have a word with your dad and explain him the things and i am sure that he will truly understand and i am sure that one day you will be an excellent developer.

0
votes

I study as a software engineer and the progress of learning programming at my education has been more than just reading book.

First of all I would recommend you to learn C, because it is an ease language and many other languages (such as C++, objective-c) are built upon C. The way we did it was that we had to buy a micro chip (in our case an Atmel Mega16 with an STK 500 kit, which is just a board with LEDs and buttons on it), and then we just played around with it, programmed programs to make it bip and bop. That's more fun than just reading and writing hello world programs IMO.

When C becomes a walk in the park for you, move on to C++ and object oriented programming (OOP). OOP is the key concept in many languages and ways to think of programming and is therefore a must if you are serious with your programming. Make sure to understand the theory behind OOP before diving into it - otherwise it might be a hard proces :-)

Last but not least, I will recommend you to study different data types, such as stacks, queues, heaps etc., which are very great to understand when you are programming and reading about new languages.

Good luck my friend!

1
  • I would recommend something other than C++ for learning OOP. Python is a good one. C++ is such a complex language that trying to learn OO concepts with it is very painful; once you've actually learned them though, you'll know what to do with many of its otherwise opaque looking features.
    – nmichaels
    Aug 2, 2011 at 13:21

Not the answer you're looking for? Browse other questions tagged or ask your own question.