Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

My younger brother is 13 years old, I started programming when I started to develop Android applications when I was 15, last year my brother gained an interest in it and he would always pestering me about letting him make something himself, so I wrote him a few tutorials and he built himself a small application that had a few buttons that did something, I think you put in your dob and it would tell you what day you were born on, he took a couple of days building up to his final application, maybe even a week, learning everything he needed.

Since then he hasn't really done much more because I have been engulfed in work and such where I have my own programming problems to sort out.

I told him that when he was my age (I am 17) that he should be better then me, he was a bit sceptical about this however.

I dont think he has as much logical reasoning as I would think he needs to solve more complex problems, but shouldnt that just develop over time as it did with me?

He has been pestering me for the past week or something to write him more tutorials, but I didn't have time. All I had with me was a playlist I had downloaded from the new boston from youtube for C++, it's about 73 videos.

He is currently about 20-30 videos in, he has come to ask me a few questions about it and thats it.

Should I have really properly started him with C++?

Should I stop him now and start him again on python or ruby?

I know that C++ shouldn't really be a beginners language, especially for someone who is only 13, by the time this question is answered will probably be up to learning about inheritance or something.

Some people may see this as not a real question, but it is, and should be used as a reference for others. I want to know, should I start him on a different language whch is more easy? What language then? And would it be better for me to teach him myself (I would make time) or just continue him with the new boston? There are a few more questions throughout this question but these are the main ones.

Part of the question people seem to be neglecting is me asking whether I should change what language he is learning to another, or since he is already pretty far through the tutorials should I just leave him with C++ and he can learn the other languages freely by himself?

share|improve this question

closed as off topic by gnat, MainMa, GlenH7, Walter, Thomas Owens Oct 19 '12 at 13:06

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

"what language/technology you should learn next" is off-topic per faq –  gnat Oct 19 '12 at 9:24
Should have read the faq first -.-, still got a great set of answers though. –  FabianCook Oct 19 '12 at 13:30

7 Answers 7

up vote 1 down vote accepted

In my opinion what language to teach him is probably the least important problem. It is more important to learn how to think like a programmer. If he knows how to solve a problem in C++ he will have no problem to do the same in python or ruby.

However becoming an experienced programmer is not a matter of a few tutorials but many years. You have to keep him motivated. A productive language can contribute to this but in the end he either needs a specific goal or a natural fascination for programming. I know people that program for the sake of problem solving and their love of math and if your brother belongs to them you need not worry. If to your brother a programming language is a mere tool to build something you have to specify that something. A game might be a good idea. Another great help would be if his peers were interested in programming. As a team they would be much more productive and could inspire each other. They might even participate in a competition of some sort which would help to keep the group together. Moreover pressure helps to learn.

In the end it is a paedagogic issue. You have to be subtle and considerate. Every human is different and you yourself should know best how to influence your brother.

share|improve this answer

Any age is good to start learning, personally I started with Visual Basic at the age of 16.

In my personal opinion, maybe your brother should start with python or ruby, more simple languages.

I found recently a web to learn those languages, and others, http://www.codecademy.com/ it's a good starting point for your brother.

Have a good time! :D

share|improve this answer
Codeacademy is indeed one of the best sites for developing reasoning and concepts step by step –  Vaibhav Agarwal Oct 19 '12 at 6:50
I have tried codecademy, was an alpha tester for ruby, completed all tracks... although I agree with you that they are good, they don't teach you as well as someone speaking and explaining things verbally, although that is mainly to do with the way you learn, different people learn different ways, visually, verbally, or by actually doing it, or a combination. –  FabianCook Oct 19 '12 at 6:53
Actually they added new tracks so I haven't quite completed all tracks yet xD. Ill do that tomorrow ;). –  FabianCook Oct 19 '12 at 6:54
@SmartLemon Well I post it as a good start point, not the bible to learn. I'm most of autolearning, searching examples, but I started in Python almost with it, and it was very useful for me. Then I combined with some katas with TDD and I've learnt more. So you're right, different people learn different ways there is no discussion :) –  Amedio Oct 19 '12 at 7:07
Good reference for others, when we are at our other house which has full internet access, not just mobile, ill get him om codecademy and see what way he likes learning the best. –  FabianCook Oct 19 '12 at 7:09

If he already was capable to create his first C++ program, I would continue also in C++. But it is rather complex language that does not lead you towards a discipline. It can be easily misused and he can learn bad habits.

Python is excelent choice, but it also differs from C++ (the way you have to think about the variables...).

He is 13 and this is the age for games.

To summarize:

  • Add the Python language.
  • Show him pygame.
  • Select some simple game to read/analyze the existing code passively.

  • When continuing with C++, focus on the C++11 standard. The programs are then much easier to write and read.

If he is capable to start with C++, I would continue with that. But Python may help to think in objects. I would not suggest C these days. The C++ can be compiled to as efficient code as the C can be, sometimes C++ allows better optimization because of the higher abstractions and the knowledge can be used by the optimizer.

Python is probably more similar to C++ in the sense it is hybrid (both procedural approach and the OO approach [plus some functional later]). Python has good abstractions that are also in C++, but they are easier to use (faster to learn) in Python. From what I know about Ruby (not too much) it is less strict thus allowing strange things sometimes.

share|improve this answer
I just went to check up on him before and he has written quite a bit of code so far, I'm going to quiz him soon on it. He is up to conditionals and loops. I think going by what I just saw I'll keep him on c++ and then introduce him to python soon in the future. –  FabianCook Oct 19 '12 at 8:00
Also, what do you specifically mean by He is 13 and this is the age for games? –  FabianCook Oct 19 '12 at 8:28
@SmartLemon 's last comment: oh, come on, puppies and kittens play around all the time, the old cats and dogs do not. Homo sapiens (sapiens again, apparently) starts off as homo ludens before he even gets to the first sapiens. –  Shivan Dragon Oct 19 '12 at 13:36
@SmartLemon: Well, the programming may be more interesting when you write your own game. –  pepr Oct 19 '12 at 21:43

I know this might sound strange but you may give Unity 3D a thought. Yep, it's a game engine. But I think that for a newbie it's a great way to leverage the ability to quickly create something with it's limited skills at writing complex code.

On the one hand you create the basis of your project visually (as you add in 3d geometric shapes and lights and stuff) but on the other, if you want to do something more than "hey, checkout the fancy way in which my physics enabled cube falls on my collision enabled cube" you will have to get down and write actual code.

Said code can be written in either of the two c# or JavaScript which immediately exposes him to static and dynamic typed languages, leaving him the option to try the same thing in both and see what perks each kind of language brings, and what he'd prefer.

Also, it alleviates pretty much all the necessary setup you'd have to do for a "regular" coding project (adding libraries, utilities, choosing an IDE, configuring your system etc), while still giving him most of the advantages of doing this (he still has an environment to configure inside Unity, but you can do it visually and it's simplified, also Unity comes with both JS and c# libraries that you can add to a given project, but this too is simplified as it's just a click away) This aspect might not be necessarily a good thing on the long run (as he needs to familiarize himself with this as well), but at the beginning in can be discouraging for someone who's just trying to learn the basis of a language.

Finally, since the thing is free to try (indefinitely) and you can install it on any of the major OSs it gives you quite some freedom in regard to this.

share|improve this answer
ive used unity, too and i agree with you that it would be a great choice to fascinate someone for programming. But since it is a 3d engine the user needs to understand vectors matrices and quaternions. This is probably too difficult for a 13 year old. 3d game programming in general has a steep learning curve with concepts such as a camera, global and local coordinate systems, a render pipeline with pitfalls (clipping), ... –  lhk Oct 19 '12 at 13:02
@lhk, yes, that's true, still you're only forced to deal with the 3d math in a simple fashion if you only want to make simple things graphics-wise, i.e. you can go nuts coding some complex game rules and AI algorithms (like chess or backgammon) and only make some simple colored squares that jump from place to place in one plane as graphics. Or you can implements A* in c# and only make Unity display the resulted path as colored points in space and color them differently, etc. –  Shivan Dragon Oct 19 '12 at 13:12

I would say:

  • Python if you want to go high level and productive, it's the most widely used language for non-programmer but professionals and researchers.

  • AWK if you want to start from basic, neglecting memory and process modules and ready for C, it's the only C flavour scripting Swiss army knife out there.

share|improve this answer

In my opinion the problem is not "which language should he learn" but rather "what should he build". Tell him to build something. Whatever it is, in whichever language it is, it's way better to learn while you build than just learning a language itself.

Give him a project. Point him to some open source project and let him fly. Whatever it is, he has to build something.

Giving him simple tasks of the projects you're working on is actually a great idea. You can give him feedback on architectural questions, simple questions or "what's this doing" quite easily if it's your projects. (Contrarily to projects you don't know.)

The point is that you're way more motivated when building something meaningful.

share|improve this answer
As in should I involve him with my work on home automation or should I give him some simple tasks to do? Like from project euler? –  FabianCook Oct 19 '12 at 7:28
@SmartLemon The simple tasks on your project is actually a great idea. You may add some process to review his code before comitting it, setting up one shouldn't be complicated (you live in the same home!). –  Florian Margaine Oct 19 '12 at 7:29
There are two problems with that, the simple problems are already solved, and im moving to my own home soon. Any suggestions for sites that have simple problems that he could work through, more like the challenges on codecademy tracks but something more relating to the real world. Project euler is more for older more mathematically minded people. I've only done the first 20 challenges over the last week :O –  FabianCook Oct 19 '12 at 7:42
The point is that you're way more motivated when there is something meaningful you have to build. –  Florian Margaine Oct 19 '12 at 8:04
Agreed. I shall get onto it for him. Im such a nice big brother xD. –  FabianCook Oct 19 '12 at 8:21

I started with C++. It's better to raise the bar high at first and then drop it down a bit when you start to earn money from development. Someone who's efficient at writing apps in C++ will easily switch to Java or PHP. Someone who started with PHP may learn some bad techniques and end up as poor programmer (I'm not trying to generalize, but my colleagues who started early as web developers never left that area, although some of them tried).

share|improve this answer

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