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 brother is just starting out college. He's studying the same thing I am here in Bolivia; Systems Engineer which is the equivalent of what a CS degree is in the US.

Being his big brother and a programmer myself I really want to guide him and give him the right material to learn and become good at programming. My motives are selfish I admit, I want him to become really good so he can teach me things in the future. :)

After poking around the web, I found Head First Programming. This book seems to teach the fundamentals of programming, using Python as the language.

  1. Would you recommend this book as his first book ever?
  2. Would learning Python as his first language stunt him somehow?

What are your thoughts and suggestions?

share|improve this question

closed as not constructive by gnat, MichaelT, Martijn Pieters, GlenH7, Dynamic May 26 '13 at 19:00

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

6  
I've never used Head First Programming, but I did read Head First Design Patterns (uses Java, not Python) and it was well-written and easy to follow. If Head First Programming is anything like Head First Design Patterns, then it's probably worth it. –  FrustratedWithFormsDesigner Mar 2 '11 at 18:45
    
@Frustrated: +1 Yeah, I've also read that book and also Head First C# when starting out. Generally the Head First books were good to read, but I was reading them as a someone who had prior experience. Hopefully someone can shed some light on this one! :) –  Sergio Mar 2 '11 at 18:46
2  
I've always been more of a face first programmer. –  Joel Etherton Mar 2 '11 at 18:46
1  
@Joel: LOL. :D Nothing teaches more than bruises. –  Sergio Mar 2 '11 at 18:51
4  
@Steven Jeuris: I still remember that damn tiger from the book. I mean, if that isn't evidence enough that the methodology works... –  Sergio Mar 2 '11 at 18:57
show 3 more comments

11 Answers 11

up vote 4 down vote accepted

Full disclosure: I have never read one of those books or learnt Python.

That said, I've heard good things about the Head First series here on Programmers. I wouldn't hesitate to point him at it. However, it's always good to additionally check out other books and resources. Even the best books are biased slightly, and seeing other perspectives and ways of doing things will make you a better programmer.

As for Python, I understand it's a very good language for beginners because it allows you to focus on semantics instead of syntax. C++ is a bad language to start with because the syntax can be so obtuse, and pointers freak everyone out. I would count Java and C# out as well because they have the same C-esque syntax. I'd also avoid less common languages like Haskell, Lisp, Ruby, etc. to start, because the resources aren't there (especially human resources). Not to mention other issues with them. And of course, no ancient languages like FORTRAN or COBOL; better replacements have been developed.

So I think your choices more or less boil down to Python or Visual Basic. I would recommend Python over VB because it's far too easy to develop bad habits with VB. GUI stuff can also easily distract from mastering the logic skills and programming mindset, and you can't really avoid the GUI with VB.

share|improve this answer
13  
I will slap my brother the moment he asks me teach him VB. Thanks for your answer. :) –  Sergio Mar 2 '11 at 18:59
3  
Nice answer, BUT .. I would leave VB out of the equation as well. Also consider at least learning a language which you want to use when you become a more experienced programmer. –  Steven Jeuris Mar 2 '11 at 19:06
1  
@Steven Good point. I wasn't really intending to say VB is a good choice like Python, just to compare them as "beginner" languages. Python is not only a beginner language, of course ;) –  Matthew Read Mar 2 '11 at 19:26
2  
No downvote, but I find it strange this answer has the most votes. The author fully discloses that he: 1. hasn't read the Head First books. 2. doesn't know Python. Stranger still is that we somehow end with the conclusion that the only practical choices are Python and VB and you'd be crazy to choose VB so Python (the language he doesn't know) is the clear winner. Huh? –  Corbin March Mar 2 '11 at 22:02
1  
@Sergio - I favorited this question just for your comment! –  Melanie May 4 '11 at 2:33
show 2 more comments

Not only would I recommend it, I have done so. I gave a copy as a gift to a friend who wanted to learn about programming. He came back to me a few days later saying how much he liked it. This was a guy who barley knew how to turn the computer on a month before. I don't know how far into it he got but what he did do he was able to understand.

share|improve this answer
add comment

I really don't like the Head First series. They are over didactic and they tend to over simplify and cause confusion. That said, I really recommend Learning Python from Wrox. It covers the whole language, from basic concepts to the more advanced ones, and you get to learn how feature x of the language works and why it was made this way.

share|improve this answer
    
I really like the Head First series but several people tell me that graphics and other didactic stuff is too much distracting. –  Ither May 3 '11 at 20:02
add comment

I tend to disagree with others who think it's necessary to start out learning more difficult programming concepts (pointers, etc).

The goal of the Head First series of books seems to be to inspire passion about programming topics, and they tend to be a very easy read for beginners (more advanced programmers tend to be more worried about the meat and potatoes of a book and don't care for them as much).

Python, as a companion language for that book, and a language to get someone interested in programming is perfect because it cuts out a lot of the unnecessary fluff some languages have and lets beginners craft useful code without worrying about what all that is.

I would definitely recommend this book/language to someone who isn't completely sure whether they are interested in programming or not, as it will help demonstrate the power and excitement of creating programs.

For someone interested in how computers actually work, rather than just what computers can do for them learning C/C++ would be more interesting.

share|improve this answer
add comment

I've seen a couple people mention the wrox books for beginning programming, and I can't seem to justify them. They tend to be about as dry, vapid, and tasteless as things my friend's cat leaves on the floor, especially for the beginner books.

The Head First series is good for a glossing over of how to program and paradigms (read both programming and design patterns), and I would recommend them especially if one is to start out in Python, since that's what they use as examples, and mentally it will be the easiest to understand.

As for the language itself, Python's great for beginners, especially if you don't want to scar(e) them with pointers or garbage collection and the like. But, if a C family language is more directed during your college years, get him started good and early on it, so he can get lots of heavy questions out of the way before it gets really chewy with his schooling.

share|improve this answer
add comment

This is tough one, but I just have to ask, isn't his school providing him with textbooks? If the degree is in fact similar to a CS degree here in the states then I'm sure they will assign him a textbook to use for his class. I wouldn't introduce extra material for getting someone started. I remember CS 130 or whatever it was called, being extremely difficult. We used C and then C++ as our languages which in and of themselves are pretty challenging. Certainly, having him do Python in tandem with whatever they choose might be a little daunting. I would let the university decide what book to use for his education. In my case, there was actually no textbook required, we were given weekly handouts and were forced to go to lecture, otherwise you had no shot.

That said, I never read the Head First books but I do hear they are excellent. I have read the following which was pretty good: Practical Programming by the PragProg guys.

share|improve this answer
1  
Bolivia unfortunately doesn't have that type of culture. No lecture, handouts, etc. It feels very much like highschool only you don't have the horsing around. Since he's going to the same school I went, he'll be taught C# throughout his career with sprinkles of PHP and Java towards the end. He is given some books, but they are authored by the teachers themselves, and let's just say they are a bit lacking in most areas. –  Sergio Mar 2 '11 at 19:23
add comment

I wouldn't recommend starting out with python. I would start in C or C++. I say this because dynamic languages and managed languages hide a lot of the import things you need to understand when you start programming. things like pointers, memory management and getting that for loop correct are core to being a good programmer and will make any other language they learn latter easier to understand.

I will also suggest a book to start out on. How-Program

share|improve this answer
    
I disagree with you. It all 100% depends. I'm a programmer but don't have to worry about pointers or memory management because professionally I always use either C#, Java or Python. Depends on what you are aiming to work with. I'm saying it's not a negative if you don't know it, but it's also a positive if you do know it. –  Sergio Mar 2 '11 at 19:01
    
Au contraire, you don't need to understand that when starting out programming. What was the first language you learned? –  Steven Jeuris Mar 2 '11 at 19:03
    
I have to disagree as well. Those things are important and should be learnt, but they are far too confusing to start out with. Most of the C++ programmers I know still don't really understand pointers, and I believe that's because they are wrestling with the broken understanding they gained before they were really ready to learn pointers. –  Matthew Read Mar 2 '11 at 19:03
    
Java was my first. I will also say that it set me back in a lot of ways in my mind. –  Erin Mar 2 '11 at 20:20
add comment

It depends on what kind of learner he is. Personally, I can't stand the head first series. They try sooo hard to be CUTE and FUN and LA-DEE-DAH that it detracts from the concepts and information they are attempting to convey. It's aggravating. But that's me. Other people find those things engaging. I really enjoyed Excel Power Programming with VBA when I was starting out, but that was a pretty unusual place to start and I'm not sure I'd recommend it. I'll leave that bit of advice to other posters.

share|improve this answer
add comment

I got my wife Head First PHP and it was garbage. Long winded and overly simplified, but still failed to communicate useful beginner information. For example, it gives examples of SQL without semi-colons and no discussion of the fact that they are necessary in the console. I won't be wasting my time with another one from that series.

share|improve this answer
add comment

While I haven't read Head First Programming, I have read the CSS + HTML book, and the PHP + MySQL book. I found them very well paced and presented for beginners, and very easy to read. They introduce concepts slowly and clearly, exactly when you need them. It doesn't introduce concepts before they are needed by the example projects that the books build up. I'd recommend them to anyone as their very first programming book.

Also, to counter Kevin Peterson's point, the PHP + MySQL book clearly states TWICE on page 64 with large arrows pointing to 3 different semi-colons, that when using the terminal, semi-colons are necessary.

share|improve this answer
add comment

I guess it depends on his learning style. I personally don't care for the Head First books because it feels like I'm in one big conversation. I find them long-winded and remind me a lot of those assembly instructions you get from IKEA with the pictures and numbers and very short sentences.

That said, for those who haven't yet programmed and aren't quire super interested in programming. They would probably be a great fit because these books ARE very friendly and I can see how they could pull you in. Head First books get rave reviews, so it obvious there are several people who just love them.

So +1 if you're looking for a way for him to gain interest in programming. However, these books feel to me like I'm reading a graphic novel.

Personally, I found Learn to Program (2nd edition) by Chris Pine to be very helpful in teaching me to program. It is slightly conversational, but not so much that you feel like it's a comic book. The material was presenting in a friendly manner, but not so much that you feel the author is condescending. I also was required to read Programming Logic and Design by Joyce Farrell which is language agnostic. The information provided in this book wasn't the best, but the exercises at the back of each chapter were really great for helping me learn Ruby, actually making the book worthwhile (just take the remainder of the content with a grain of salt.) They required the reader to write in pseudo-code, but I just completed the projects in Ruby instead.

share|improve this answer
    
I should also add that you can read "Learn to Program" on Pine's website for free: pine.fm/LearnToProgram –  Melanie May 4 '11 at 2:50
add comment