Slashdot Mirror


Learning To Code: Are We Having Fun Yet?

theodp writes "Nate West has a nice essay on the importance of whimsy in learning to program. "It wasn't until I was writing Ruby that I found learning to program to be fun," recalls West. "What's funny is it really doesn't take much effort to be more enjoyable than the C++ examples from earlier...just getting to write gets.chomp and puts over cout > made all the difference. Ruby examples kept me engaged just long enough that I could find Why's Poignant Guide to Ruby." So, does the future of introductory computer programming books and MOOCs lie in professional, business-like presentations, or does a less-polished production with some genuine goofy enthusiasm help the programming medicine go down?"

226 comments

  1. It's all about keeping interest by YttriumOxide · · Score: 5, Insightful

    The important thing about learning to code is keeping interest/motivation to do so.

    I agree with the general approach that the essay espouses - whimsy is a great way to keep interest; but it's certainly not the only way. Different things work for different people. My daughter is two and a half years old, and so far has totally rejected learning that involves traditional 'reward' such as the way gCompris shows 'happy' images on completing tasks vs 'sad' images when failing. However, what seems to do it for her is being able to 'show off'. When she can make her grandmother surprised by being able to point out letters of the alphabet on things, she is much more motivated to learn and get it right.

    I'm sure my daughter's learning style will develop and change as she grows; I just wanted to use an example that demonstrates not everyone is motivated to learn in the same way. I don't think coding is any different.

    --
    My book about LSD and Self-Discovery
    Also on facebook as: DroppingAcidDaleBewan
    1. Re:It's all about keeping interest by YttriumOxide · · Score: 5, Insightful

      You had better get involved and start steering her in the right direction, pronto.

      People who grow up depending on recognition end up miserable. She's going to give it up when she's 13 to get approval from some boy she likes if you don't nip this in the bud.

      To an extent, it's perfectly natural to depend on recognition. If she totally relies on it for value of herself, then yeh, that's bad. I'm not going to start worrying just yet though.

      Regardless, I don't want her to be like me - socially retarded and awkward right until my early to mid twenties. A lot of 'geeks' like me think it's a prerequisite to be socially awkward if you're smart. It's not. You can be smart, geeky AND popular.

      Sure, if she does end up being that way, I'll support her (I'll support her no matter how she ends up) but I'll do my best to steer her in the way that I feel is going to help her achieve the greatest amount of happiness in her life.

      --
      My book about LSD and Self-Discovery
      Also on facebook as: DroppingAcidDaleBewan
    2. Re:It's all about keeping interest by Anonymous Coward · · Score: 1

      I like how you judge yourself capable of determining the correct pedagogical path for a complete stranger's offspring based on 3 paragraphs of text.

      Are you aware of the female vs. male pre-pubescent tendency of having a so-called "external locus of self-image" vs. the male "internal locus" at all? What YttriumOxide describes is perfectly natural and even if his daughter had some pathology developing, his short description is not even remotely enough for you or I to make a judgement as to what he should or should not do.

      Check yourself.

    3. Re:It's all about keeping interest by Brit_in_the_USA · · Score: 2

      Agreed. I started programming with BBC Basic on an 8bit home computer (UK). The initial motivation was to copy the "free" game listing out of a magazine to get my own game, then start poking around the program to make the game more interesting or do something "cool"/personalized.
      Then the progression was moving to Basic on The Archimedes range of ARM workstations (UK) and writing desktop programs, defiantly fun to make your own desktop program back in the day with lots of "wow" factor.
      Progressing to PC's and using early visual basic was the same.
      Then came Labview which was a big switch from traditional line based code programming but gave it's own rewards when you started interfacing (easily) to machines and instruments, e.g. I/O to oscilloscopes, lasers, power supplies etc. to quickly construct a fully automated experiment was then the wow factor. I had resisted programming in C and similar languages because the strict syntax and structuring requirements were a big road block to (initial) quick and functional programs. However that changed in recent years when cheap micro processors eval boards such as the TI launch pad came with C++ environments. The pay off for learning C++ was to have my own custom microprocessor firmware and electronics working as I wanted. This is where audrino has the big attraction due to the simple programming environment.
      I would suggest that these days controlling a microprocessors board with I/O to physical devices and writing "apps" for cell phones is the big pay off in wow/interest for new programmers.

    4. Re:It's all about keeping interest by Xest · · Score: 2, Interesting

      I agree that everyone learns in different ways, I've certainly never been great under the classic schooling system but have always been way above the average when it comes to self directed learning in my own time but I'm not convinced this making learning fun thing works.

      If we're talking about producing high calibre software developers then you don't need to do anything, the passion for the topic alone will keep them going and they wont find any of it boring enough to put them off and wont need special gimmicks to keep them interested. You can't force people into a profession they're not interested in and expect good results.

      If however we're talking about programming just because we feel it's a skill people should know then I'm still not convinced it's right to force it on them even if we can try and make it interesting. I had to do English Literature at school and despite doing well I really could not give a flying fuck about it, it was the single most dull and pointless subject I've ever had to do and I miss not a single thing from largely forgetting everything about it after my exams. Spending a couple of weeks "evaluating" a poem about fucking daffodils or whatever and determining "what he really meant" was an utterly senseless amount of idiocy. He meant what he fucking wrote and any other interpretation you put on it or hidden meanings you decide to "find" in it given the fact he's dead is merely arbitrary and pointless and an exercise in making shit up, and if you didn't happen to make the same shit up that the teacher made up then you were "wrong". Really, it was a waste of my time making me do that subject when I could instead have done something else that was actually productive for my future and learnt something that mattered to me with all those hours of lessons instead.

      I never ever found maths fun, I always found it difficult at school, but despite it not being "fun" and despite me struggling with it and having teachers tell me I wasn't cut out for it I still persevered and eventually got a 1st class honours degree in the subject simply for the fact that even though I never found it fun because I found it difficult originally, and even though I found it hard, I did find it genuinely interesting.

      So sure the guy in the summary may have found Ruby a bit more fun, but honestly if he's not got the interest to learn the parts of development that made C++ boring for him his programming abilities are never going to get past the point of any relevance. Either you like the subject enough to push through the hard sometimes even boring bits or you don't. Some things can be taught to some people in a way they view as slightly less boring but everyone's different so everyone's going to encounter bits they deem boring but that's just the way it is. Chances are if you manage to make teaching of a subject fun for everyone who takes it then all you've done is eliminate the difficult, but essential bits to become competent in the subject in question.

      Learning isn't easy, MOOCs make it more available but they can't necessarily make a topic more accessible beyond a minimum amount of intelligence, will and effort required to work through and understand the materials. There's always going to have to be some base level of interest and willpower required to get through the course successfully, that is, until we get to the point where we can write knowledge directly into people's brains, Matrix style.

    5. Re:It's all about keeping interest by Anonymous Coward · · Score: 0

      I find C++ much more fun, because it does exactly what I tell it to. Python, PHP, Ruby, etc. all frequently do something totally unexpected, usually because they are not strongly typed, sometimes just because they're buggy as a maggot-infested pile of shit.

    6. Re:It's all about keeping interest by TapeCutter · · Score: 2

      I'm not convinced this making learning fun thing works.

      People can learn life's lessons the fun way or the hard way. Problem is, the lesson just happens, it's rarely, if ever, the students choice how it's delivered.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    7. Re:It's all about keeping interest by Anonymous Coward · · Score: 0

      Andrei Alexandrescu - is that you?

    8. Re:It's all about keeping interest by mi · · Score: 1

      The important thing about learning to code is keeping interest/motivation to do so.

      You spoiled-rotten 21st century golden billion... Having to learn a trade has nothing to do with it, has it?

      It must all be fun and games, or else you aren't going to bother getting up in the morning, are you?

      Oh, well, for toddlers it is Ok, I suppose...

      --
      In Soviet Washington the swamp drains you.
    9. Re:It's all about keeping interest by CountJoe · · Score: 5, Interesting

      What I've learned from having two young children is that kids have a strong desire for attention. It's amazing when they can satisfy that desire by impressing someone with their intelligence or achievement. This is the exact behavior I try to reinforce. There are a lot of bad ways for children to seek attention as you can imagine, like doing something that gets them in trouble.

      I think as kids grow up they may find other ways to gain attention and have other desires besides attention. But what I hope to instill in them at a young age is that people will like you if you can show them you are smart as opposed to showing them you can, I don't know, do something that gets you sent to the principals office.

    10. Re:It's all about keeping interest by YttriumOxide · · Score: 4, Insightful

      The important thing about learning to code is keeping interest/motivation to do so.

      You spoiled-rotten 21st century golden billion... Having to learn a trade has nothing to do with it, has it?

      Honestly, no. The vast majority of things that someone learns in this modern day and age have nothing to do with their 'job'.

      I'm a software developer (and will be trying to transition to full-time author once I get a few more books out (especially with more mainstream subjects than my current one)). Nevertheless, most of my daily 'learning' is focused on chemistry, physics, linguistics, pharmacology, medicine, and writing. Sure, I still learn a lot for my day job - if you're a software developer and you don't, you won't last long - but it doesn't make up even 20% of what I learn each day.

      I know a lot of coders. Most of them do it as a day job as well, but not all. Even amongst those who do, it's the passion for it that keeps them doing it rather than just putting food on the table. Sure, that's extremely important and a definite bonus, but they'd probably still code at home if they had jobs as accountants, lawyers, doctors, or McDonalds counter staff.

      --
      My book about LSD and Self-Discovery
      Also on facebook as: DroppingAcidDaleBewan
    11. Re:It's all about keeping interest by cascadingstylesheet · · Score: 2

      To an extent, it's perfectly natural to depend on recognition.

      Yep. Everybody wants attention, so long as it is sought in healthy ways that's not a problem, it's just normal humanity.

    12. Re:It's all about keeping interest by Anonymous Coward · · Score: 0

      >You can be smart, geeky AND popular.
      Heretic!

    13. Re:It's all about keeping interest by PRMan · · Score: 3, Interesting

      It's funny what you say about literature. I had a professor in college talking about what B F Skinner meant in a class and a student said, "You're wrong!" He said, "What makes you think I'm wrong?" And the student said, "Because I called B F Skinner and asked him the answers to all these questions."

      To his credit the professor (who was actually a really cool guy) said, "Can I have a copy of your paper so I can teach the rest of the class?"

      --
      Peter predicted that you would "deliberately forget" creation 2000 years ago...
    14. Re:It's all about keeping interest by nabsltd · · Score: 2

      A lot of 'geeks' like me think it's a prerequisite to be socially awkward if you're smart. It's not. You can be smart, geeky AND popular.

      If you are really "smart and geeky", it's highly unlikely you are spending time doing what "popular" people do, and that greatly controls what kind of social interactions you have with people.

      When the "popular" people are doing whatever they do today (OK, I admit I'm old and don't know what the current version of "going to parties and hanging out at the mall" is), the geeks will be doing geeky things. World of Warcraft has more of a non-geek presence than D&D, but "playing video games" is still not something that the "popular" kids do in the same amount as "geeky" kids.

      Also, if someone does manage to cross the gap (e.g., a sports star who is also a geek), I suspect that their personality will quickly gravitate to the "non-geek" things that get them laid. In other words, being/not being a geek tends to be a self-fulfilling prophecy.

      Now, I am using "popular" in the Breakfast Club sense, so I'm not saying that a geek can't have a full and busy social life with a wide range of friends. But, being a "geek" and being "popular" will almost always be opposite ends of the spectrum, at least until the geek goes IPO and has lots of popularity.

    15. Re:It's all about keeping interest by ae1294 · · Score: 1

      She's 2 1/2 it's fine... after 6 then worry...

    16. Re:It's all about keeping interest by ae1294 · · Score: 1

      I played basket ball from the age of 7 to 18 for fun. And I ran a BBS using Netware 3.11 when I was 14.... I think that proves you are mistaken. Everyone knew who I was in High school and would walk up and talk to me but I didn't goto many drinking parties but LAN parties and BBS get-togethers sure.

      I will say I HATED school. It was the same fucking classes over and over again. Drove me mad.... still am insane, can't stand schools or colleges....

    17. Re:It's all about keeping interest by MareLooke · · Score: 2

      Reading Paul Graham's "Why nerds are unpopular" seems relevant if one wishes to dig deeper into this topic.

      Geeks by their very definition have have interests that set them apart from the popular kids. "Geek" and "popular" just don't mix, though one could be popular among fellow geeks, but I'm pretty sure that wasn't what the OP had is mind.

    18. Re:It's all about keeping interest by YttriumOxide · · Score: 2

      "Geek" and "popular" just don't mix, though one could be popular among fellow geeks, but I'm pretty sure that wasn't what the OP had is mind.

      Actually, when I wrote that, I really just meant, "has an average or above-average sized circle of friends"; "is not considered 'someone to be abused' by a significant number of people"; and "is able to form new social connections with relative ease, given the normal factors of common interest and so on".

      So, maybe 'popular' was the wrong choice of wording, but I was basically meaning it's possible to be a 'geek' and not be like I was...

      --
      My book about LSD and Self-Discovery
      Also on facebook as: DroppingAcidDaleBewan
    19. Re:It's all about keeping interest by Jeremi · · Score: 1

      So sure the guy in the summary may have found Ruby a bit more fun, but honestly if he's not got the interest to learn the parts of development that made C++ boring for him his programming abilities are never going to get past the point of any relevance. Either you like the subject enough to push through the hard sometimes even boring bits or you don't.

      The above is a huge oversimplification. If it was just a matter of "you're either interested enough to try or you're not", we could start teaching Calculus to first-graders and find out right away which ones were "interested enough" in math to succeed and which ones weren't.

      The reality is that people learn at different rates, and presenting people with material that is too far beyond their current skill set will only frustrate them. If the author wasn't able to grok C++ at one stage in his learning development, then C++ was clearly not the appropriate language for him to be learning at that time. As we see, after learning some easier languages (Ruby et al) for a while, the author then had sufficient experience to dive into C/C++. Not everyone is a programming prodigy, but that doesn't mean they can't learn. You have to learn to walk before you can run.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    20. Re:It's all about keeping interest by real+gumby · · Score: 3, Informative

      Yttrium, you say in your sig that you wrote a book, but not what that book is about. Worse, your URLs are opaque (and aren't links). So there's no incentive for anyone to find out about your book.

      Just an FYI, not meaning to harsh on you about this.

    21. Re:It's all about keeping interest by Anonymous Coward · · Score: 0

      I like how you judge yourself capable of determining the correct pedagogical path for a complete stranger's offspring based on 3 paragraphs of text.

      Are you aware of the female vs. male pre-pubescent tendency of having a so-called "external locus of self-image" vs. the male "internal locus" at all? What YttriumOxide describes is perfectly natural and even if his daughter had some pathology developing, his short description is not even remotely enough for you or I to make a judgement as to what he should or should not do.

      Check yourself.

      Following the logic from this, everyone should stop making all decisions, seeing as no one ever has all the information necessary to make the absolutely correct decision, ever...

    22. Re: It's all about keeping interest by Anonymous Coward · · Score: 0

      Agreed, I was a house painter and coded in the evening after work, after washing the paint out of my hair. I loved it. Then I graduated, got a real job as a se, and loved it. Then after a decade didn't love it so much, I was trying to get into the business side. Then finally realized I love programming best and that's what I need! to do to be happy. My passion came back and I won't be a CIO, but I'd rather be happy and make slightly less. If you are lucky enough to find out what profession makes you happy, do it no matter what it pays. Quaility of life is not solely dependent on income. But of course you have to make enough to life well. Note: a profession requires training.

    23. Re:It's all about keeping interest by tibman · · Score: 1

      Dynamic languages aren't going away. You can try a TDD approach if you want something more strict.

      --
      http://soylentnews.org/~tibman
    24. Re:It's all about keeping interest by tibman · · Score: 1

      I develop at work for money and at home for fun. If programming projects at home sucked i'd probably find a different hobby : /

      --
      http://soylentnews.org/~tibman
    25. Re:It's all about keeping interest by seebs · · Score: 1

      I think you are using the word "fun" too narrowly, perhaps. Interesting might be considered a kind of fun.

      "Play" is the word we usually use to refer to the things that small humans, and members of every other species that learns, do to learn how to do things. The discovery that play is an effective way to learn should be totally unsurprising.

      And willpower can make up for that, some, but it's a limited resource, and when you use it up making yourself pay attention, you have less cognitive capacity available for the actual learning.

      So... learn to play, noob.

      --
      My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
    26. Re:It's all about keeping interest by YttriumOxide · · Score: 1

      Yttrium, you say in your sig that you wrote a book, but not what that book is about. Worse, your URLs are opaque (and aren't links). So there's no incentive for anyone to find out about your book.

      Just an FYI, not meaning to harsh on you about this.

      I know... the problem is that Slashdot allows no more than 120 characters (which includes HTML code for links apparently) and ALSO has a bug whereby more than one link in the sig causes it to mess up the HTML in strange ways.

      But, you're right - it makes much more sense to have one link with a description than three shortened URLs that aren't links.

      How's this new one? I had to keep the shortened link to make it fit though...

      --
      My book about LSD and Self-Discovery
      Also on facebook as: DroppingAcidDaleBewan
    27. Re:It's all about keeping interest by mi · · Score: 1

      The vast majority of things that someone learns in this modern day and age have nothing to do with their 'job'.

      And my point was, this awesome state of affairs is a luxury — an un- (or, at best, under-) appreciated one.

      --
      In Soviet Washington the swamp drains you.
    28. Re:It's all about keeping interest by turgid · · Score: 1

      I find C++ much more fun, because it does exactly what I tell it to.

      I have a deterministic computer too, but I prefer to program it in something I can understand what I thought I told it to do, like C.

    29. Re:It's all about keeping interest by The+Grim+Reefer · · Score: 1

      I'm not convinced this making learning fun thing works.

      People can learn life's lessons the fun way or the hard way. Problem is, the lesson just happens, it's rarely, if ever, the students choice how it's delivered.

      Speaking for myself, I prefer the fun way. But the hard way tends to leave a much more lasting impression.

    30. Re:It's all about keeping interest by real+gumby · · Score: 1

      Yes, that makes more sense.

    31. Re:It's all about keeping interest by kermidge · · Score: 1

      The sig must have changed between the time you posted and now, because when I saw "My book about LSD and Self-Discovery" and "DroppingAcid" I twigged to the idea that the book likely had something to do with dropping acid. The link led to the book's page on Amazon.

      Btw, I read some sample pages on Amazon; dude was there. His advice and descriptions pair nicely enough with what I found when I first tripped in '67. Well, I think it was '67. Sure seemed like it, all the way through '77, when I stopped doing any of that stuff, even weed. Now, rather miss it after all this time, both the experience and the people. Between work, school, war, and all the rest, there was for a while a time of magic.

    32. Re:It's all about keeping interest by Xest · · Score: 1

      Well for me I find learning some things not fun at all, but the reason I say interesting is because I view them as a requirement to get to the next step that I will find fun.

      For example, I did a whole course on statistics that used medical statistics as it's examples and I found it utterly piss boring, but it was a means to an end to get to the interesting parts that are relevant to things like machine learning. I'm sure in contrast though some students loved the medical statistics examples and if they'd used something more interesting to me the other students would've found those examples boring and uninteresting, but at the end of the day the materials have to be learnt if you want to get anywhere but it's not always going to be "play" even.

    33. Re:It's all about keeping interest by sjames · · Score: 1

      ...Why, back in my day we KNEW that learnin' wasn't hard enough so we'd rub salt in our eyes between classes, and if anyone teared up, we'd kick him squarely in the balls to toughen him up and he'd APPRECIATE it!.

      Now get off my lawn you damned kids!

      Yes, sometimes worthwhile things are difficult and you just have to slog through, but why do it unnecessarily?

    34. Re:It's all about keeping interest by mi · · Score: 1

      Yes, sometimes worthwhile things are difficult and you just have to slog through, but why do it unnecessarily?

      No need to do it unnecessarily. And yet, the modern emphasis on making things fun disturbs me — because when "fun" comes into conflict with results, "fun" tends to win nowadays... Witness the prevalence of Asian children, whose "dragon mothers" are not (yet?) quite as enamored with the "fun", being so successful entering the best colleges, for example, that the admission boards adjusted the rules to favor Whites over Asians (although Blacks are still the most favored) to comply with the racist "affirmative action" laws and personal beliefs...

      What's next? Slashdot reviews of "Metallurgy for Dummies" or "Making Radiology Fun"?.. Oh, wait...

      --
      In Soviet Washington the swamp drains you.
    35. Re:It's all about keeping interest by sjames · · Score: 1

      Even in Japan, some of that is coming into question because of the depression and suicide rate in children.

      There is a balance to be had. The fun over results crowd AND the dragon mothers are two extremes.

    36. Re:It's all about keeping interest by uninformedLuddite · · Score: 1

      Have you been told lately?

      --
      The new right fascists are bilingual. They speak English and Bullshit.
    37. Re:It's all about keeping interest by uninformedLuddite · · Score: 1

      I've been doing finger exercises for years and I still can't get my ruby unbugged

      --
      The new right fascists are bilingual. They speak English and Bullshit.
    38. Re:It's all about keeping interest by uninformedLuddite · · Score: 1

      The most common thing I tell my computer to do is to GAGF and it has never ever done it

      --
      The new right fascists are bilingual. They speak English and Bullshit.
    39. Re:It's all about keeping interest by vilanye · · Score: 1

      Python and Ruby are strongly typed.

      At some point you might want to learn typing systems.

  2. The classic by Anonymous Coward · · Score: 3, Insightful

    I like to learn this way better than that way therefore this way is better.
    Yes, for you. That way may better for others perhaps even most.

    1. Re:The classic by Anonymous Coward · · Score: 0

      Thanks for saying it.

      Stupid article is stupid. If we're considering random jack-offs on the 'net's opinions, here's mine. Ruby is an absolute shit-ass mess. While it has some nifty design stuff, overall it's a toy that should never be used anywhere near real systems. It's shit for performance and it's shit for learning to code. C++ was far more entertaining to learn. Python far easier and useful.

      Yes, I know Ruby on Rails exists. I also know that anytime something gets big using rails, they have to switch to a real language at some point, again, because ruby is a broken little toy.

  3. You're doing it wrong by benjfowler · · Score: 1, Troll

    If you have to make learning to code 'fun', you're probably doing it wrong.

    It shouldn't need to be made 'fun', as it's the intrinsic motivation of getting the computer to do something is its own reward.

    Anyway, you don't go out of your way to make it _un-fun_, by forcing loads of sophisticated concepts and useless syntactic sugar on people right from the get-go, you start by, keeping things simple, doing the simplest thing that could possibly work, only introducing abstractions and concepts when they're absolutely needed, and by being powerful enough to let people 'scratch their own itch' to solve interesting and useful problems.

    C++, C#, Java, Ada are terrible choices for a beginners language (yet the fucking idiots at my university changed to Java, because it was "practical", although it completely blew their pass rate.)
    Python, Ruby, Scheme are far better choices.

    1. Re:You're doing it wrong by ArcadeMan · · Score: 5, Funny

      PHP is a much, much better choice! Everything just fucking works, even when some parameters are wrong and you're mixing variable types all over the place. /duck

    2. Re:You're doing it wrong by Anonymous Coward · · Score: 1

      If you have to make learning to code 'fun', you're probably doing it wrong.

      And your setting yourself up for major disappointment for 99% of the programming jobs out there.

    3. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      PHP is a much, much better choice! Everything just fucking works, even when some parameters are wrong and you're mixing variable types all over the place. /duck

      node.js all the way!

    4. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      That was a genius troll, I almost fell for it. I doff my cap to you sir.

    5. Re:You're doing it wrong by K.+S.+Kyosuke · · Score: 3, Insightful

      Everything just fucking works, even when some parameters are wrong and you're mixing variable types all over the place. /duck

      That's probably because you're a "duck"-typing programmer.

      --
      Ezekiel 23:20
    6. Re:You're doing it wrong by SJHillman · · Score: 1

      My uni used VB.NET for the beginner classes and Java for people in a programming major. It was ok for simple programs, but anything complex became an exercise in frustration. I only really got back into programming when I needed some PHP for a family reunion website I was working on. Even then, I don't think I would have stuck with it if I didn't find it 'fun'. I think 'fun' is essential for starting it because your early programs aren't going to be very rewarding when you look around at all of the complex programs we use on a daily basis.

      TL;DR: 'Fun' is good for starting, getting the computer to do what you want as a motivation/reward is good for continuing.

    7. Re:You're doing it wrong by pmontra · · Score: 1

      I don't have mod points today but I'd mod you up if I could.

      I agree that fun can't be the motivation, however not-fun is detrimental and it's a totally subjective matter. I give two examples.

      One. I started programming with C and Perl and used them for years and I was totally happy with them (especially with Perl's text processing capabilities). Then moved on to Java which looked as a big improvement: no malloc, no free, one wonders why we had to deal with them for so long (but C was quite a regression to the CPU compared to previous high level languages). Then I looked at Ruby, which was a total marvel. About one year ago I looked at Python, used it to do some work, and I wasn't impressed. Python is quite logical in its foundation but that foundation feels somewhat wrong when one comes from Ruby. The functions vs. methods things makes everything more difficult, the : at the end of the lines feels unnatural (Python trades Ruby's "end" and Java's {} with those colons), the __name__ method names are a relic of assembly languages and I won't enter into the religious issue of syntactic spaces (you can't discuss about faith). Long story short, paradoxically Python smells of C to me and it's not fun.

      Two. I'm taking a MOOC on Coursera about recommendation systems. They use a Java library called LensKit. Another MOOC on Coursera used a Python library called Orange which targets a somewhat similar application field. Even if I don't like Python, it beats Java hands down by as much as Java beats C, or more. Orange comes with great tutorials and examples. LensKit is probably much younger and is (still?) not so well known and documented. If I have to work with that I'll learn it as I did for many other Java libraries but thinking about the ease of use of Orange+Python if feel a little discouraged to do the programming assignments in LensKit+Java.

      If I can chose the tools of my work, all being equal, I'll chose the easiest - more fun - one. We have so many choices today that tools that are not fun risk not being used.

    8. Re:You're doing it wrong by ArcadeMan · · Score: 1

      Are you calling me a quack?

    9. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      Learning is FUN-damental. Is Ruby really programming? Hell is C# and .NET really programming?

    10. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      It's not supposed to be "fun". Work is supposed to be a miserable and arduous task that sucks just enough life out of you to nudge you toward a bar by the end of your shift. Unless, of course, you program in PHP (which causes you to drink before your shift ends).

    11. Re:You're doing it wrong by MightyYar · · Score: 1

      The "fun" part isn't just getting entertaining teachers - that might certainly help slog through the coursework, but it won't make you stick with it. The "fun" part is when you learn to solve problems in an easier way. For example, maybe someone loves to play Sudoku? Teach them how to program a computer to solve (or even better, create) a Sudoku puzzle. Someone who is an avid golfer might like to create his own handicapping program. A sailor might have fun trying to solve for the best route around some buoys given a wind speed and direction. Most people work - maybe their job has a task that can be automated. For me, the Python Challenge was a hoot. I think that most people probably have some kind of a "fun" (to them) problem to solve. The key to sticking with programming is keeping it relevant - you simply will abandon it if it doesn't pertain to your life. It's kind of like taking Latin in high school - most of us didn't retain much of it, even if we thought that maybe it helped us on our SATs.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    12. Re:You're doing it wrong by Megane · · Score: 1

      I like how it tells you which function to use by telling you it's the "real" one, like mysql_real_escape_string.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    13. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      C++, C#, Java, Ada are terrible choices for a beginners languag

      Why? Be specific, those languages have enough differences that a single answer doesn't apply to all.

      Python, Ruby, Scheme are far better choices.

      Why? Be specific, I'd like to know your logic for why each of these three is better than any of the first four.

    14. Re:You're doing it wrong by Anonymous Coward · · Score: 1

      The only thing that kept me going while learning PHP was being able to type $string.explode(...) all the time. explode(), chomp()..., programming can be satisfyingly violent sometimes...

    15. Re:You're doing it wrong by CastrTroy · · Score: 1

      I also think that HTML and Javascript are great for the same reason. With HTML, it doesn't matter if your syntax doesn't make any sense, and you put a div inside a span, Or starting putting content between the </tr of one row, and the <tr of the next row. The browser doesn't refuse to render because you messed up the syntax. Same goes for Javascript. Put in semicolons, leave them out, it doesn't matter. You don't have to use "var" to define your variables, but the default scope is global, it will come back to get you later. It's not that PHP, JS, And HTML are terrible languages, but I don't think they are suited to the beginner very well, as they don't enforce very much structure or adherence to the rules, and they do a terrible job at catching errors common to new programmers.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    16. Re:You're doing it wrong by mwvdlee · · Score: 1

      It shouldn't need to be made 'fun', as it's the intrinsic motivation of getting the computer to do something is its own reward.

      There is a large gap between not being able to program and being able to get the computer to do something you want it to do.
      Before kids can create the games (or toys/tools/etc) they want to make, they have to go through a lot of intermediate steps.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    17. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      My Uni did C++ as intro, but eventually changed over to VB. I'm glad I got to take C++ because I am horrible at VB.

      C++: Data structures and Algorithms - got an A
      VB: Print stuff to a console - Got a C

      I always had problems with non-C type languages, except SQL. C, easy, C++ easy, ASM, easy, Basic, hard.

    18. Re:You're doing it wrong by Arker · · Score: 1

      You talk about not introducing unnecessary abstractions and then you propose python, ruby, and scheme?!?! Just what are you smoking?

      My first computer had a built-in basic interpreter, which was cool in that you were expected to 'program' to some degree to use it, but basic was way too abstract to be fun for me. What made it fun was figuring out how to bypass it and use machine code. And what made programming so not-fun in Uni was all the high level gunk, C and Pascal were the rage at the time, boring mickey-mouse nonsense. Python, Ruby, and Scheme from what I know are the same thing only 10 times worse.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    19. Re:You're doing it wrong by larry+bagina · · Score: 1
      When I use VB or Pascal, I feel like the language is actively preventing me from doing stuff. Not the case with C or C++.

      Some people like them because they're "safer". Those people still wear diapers.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    20. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      Then moved on to Java which looked as a big improvement: no malloc, no free, one wonders why we had to deal with them for so long

      For many, managed memory is a bad thing. malloc is awesome and allows fine-grained control, which is something many programs need. I'm not saying Java is bad because of managed memory, but you're painting a picture that all non-managed memory languages are flawed, which gives the sense that these ideas are too complicated for you.

      Understanding of memory allocation is a good thing. So many programmers who use Java or .Net tend to not reuse objects because they just see "new" as a single operation. I've seen several times how bad things can get when programmers don't appreciate memory allocations, even with how cheap they are in a memory-managed language. These problems tend to not show themselves until the system is under heavy load, then it all comes crashing down.

      I use .Net, but I think like a C programmer. I may not be in control of memory allocations directly, but a lot of reading on how GC(Garbage Collector) theory and implementations work, can make huge differences in loaded system performance.

      Mind you, object reuse is an optimization and should be treated as such. But even thought it's an optimization, it may require an over-haul of some parts of your system's design if it's not planned for from the get-go, so one should be aware. One cannot properly designs a system until they are aware of the theory and implementation.

    21. Re:You're doing it wrong by benjfowler · · Score: 2

      To answer that question, compare 'Hello world' in Java, versus Python or Ruby.

      The barrier to entry is lower for the scripting languages, and furthermore, they are more concise and powerful later. Java is only now just getting lambdas.

      I know which one I'd rather show my kid cousin...

    22. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      Uhggg, programmers who don't understand C or ASM. Programming is like Art, you just know it's something you want to do, it's something you yearn to do even before you know about it. If someone needs to use some scripting language to get "introduced" to programming, they shouldn't be programming.

      The above is targeted at University professional career programming. I do think that child-friendly languages should be used to expose non-career programmers to "problem solving" just because it makes them more well-rounded.

      I have heard the argument about allowing non-programmers to make their own code to help themselves, but I have seen too many times of people who don't fully grasp programming, and incorrectly solve a problem to get wrong data, which is much much much worse than no data.

    23. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      I am, yes, it just works though variables are wrong and it is spaghetti code. If you have been using php for over 2 weeks and never programmed before, good for you. Else, stop programming and go do something else. I spend my days looking at some guys php code he used for everything, except web pages. A quack, yes. Maybe this is one of the differences from a software engineer, a programmer/developer/untrained quack, a hobbyist (which are usually pretty good because they care to do it the right way), and others. If you work at a company, sooner or later someone will have to maintain your code so please have some professional pride and stop throwing shit together without any plan or forethought. Programs don't start with typing code, not even a 30 line text converter - they start with some sort of pseudo code or diagram on a whiteboard or notepad or napkin. Unless you are a hack. I'm venting so this for everyone : )

    24. Re: You're doing it wrong by Anonymous Coward · · Score: 0

      Php sessions usually end with smearing feces on the whiteboard and drinking ones own urine.

    25. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      Are you calling me a quack?

      He means you use Duct tape to hold your code together.

    26. Re:You're doing it wrong by Anonymous Coward · · Score: 0

      The web would be a better place if browsers refused to load invalid pages.

      It is the web pages compiler, and should shit on you if there is a syntax error.

    27. Re:You're doing it wrong by vilanye · · Score: 1

      Because the former has a ton of boilerplate that gets in the way of learning concepts.

      The latter get out of your way and let you learn concepts without needing 100 lines of boilerplate polluting the learning experience.

  4. Steady state by mikemarotta · · Score: 1

    My first class was in 1976 and our text was _Business Programming in Fortran IV_. Fun was not an option. However, the next year, I took a class in Basic on some of the first desktops, an IBM 5100 (Basic and APL in ROM) and an HP 9830 (full ASCII keyboard and 32-character LED display). Writing games was encouraged. Tic-Tac-Toe and Oware were serious challenges. Physics students wrote projectile motion target practice but without the benefit of Birds. Six months later, my new wife and I played Adventure on an IBM 370. She just earned her CISSP. A little whimsy goes a long way.

    1. Re:Steady state by OakDragon · · Score: 1

      Six months later, my new wife and I played Adventure on an IBM 370. She just earned her CISSP. A little whimsy goes a long way.

      All the way to the altar! What a swell story.

  5. Coding on Windows by ArcadeMan · · Score: 3, Funny

    Hello! I see you are trying to create an array which is bigger than the RAM on your computer. Would you like me to order additional RAM on amazon.com for you at the cost of USD$5,452,981,583 or would you rather create a 1 petabyte swap file on your 3 terabyte hard drive? - Clippy

    1. Re:Coding on Windows by serviscope_minor · · Score: 3, Funny

      Hello! I see you are trying to create an array which is bigger than the RAM on your computer.

      Is the array called make_prog_look_big?

      --
      SJW n. One who posts facts.
    2. Re:Coding on Windows by ArcadeMan · · Score: 1

      Dead, but not forgotten.

    3. Re:Coding on Windows by Anonymous Coward · · Score: 0

      The 00s called, they want their joke back. You know that Clippy's been dead for almost a decade right?

      Don't you mean deprecated?

    4. Re:Coding on Windows by Megane · · Score: 2

      Ha ha, I'm not falling for that, I know nobody needs more than 640K of RAM, because Bill Gates said so.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    5. Re:Coding on Windows by zwarte+piet · · Score: 1

      Oof! That one's got a beard.

  6. Head First by Terry95 · · Score: 1

    This reminds me of those Head First books that were all the rage a while back. It is an interesting approach. And learning doesn't have to be painful. But there is a thick gray line between stoic and ADD. I think the trick is staying in that area. Also we have to consider that for a lot of programming -- the part that thinks it is more like engineering and less like painting - a certain degree of maturity is a prerequisite. So we shouldn't make programming childish thereby completely alienating the people who will design the important stuff like controlling the electric grid or Martian probes. It would suck to have a 20 hour blackout or lose a 5 billion dollar probe just because someone didn't feel like checking a return code. Still it takes all kinds. I suspect the guys who wrote the SCADA software would never have come up with Angry Birds. But I don't necessarily want the ROVIO guys controlling the nuclear power plant up the road. So once again, all things in moderation.

    1. Re:Head First by bickerdyke · · Score: 1

      Do you want the SCADA guys come up with an internet connected software that controls the nuclear reactor up the road...?

      --
      bickerdyke
    2. Re:Head First by LoRdTAW · · Score: 2

      So we shouldn't make programming childish thereby completely alienating the people who will design the important stuff like controlling the electric grid or Martian probes.

      Everyone has to start somewhere. Just because you dive into something head first and sidestep academia does not mean you can't pick up better practices as you progress. A strong foundation which mainly includes jargon and basic structural programming practices. From there you will begin to pick up on things like good commenting, clean design and error checking and handling. After that it goes into more technical aspects such as strengths and weaknesses of languages. There are great programmers who never studied at a university and are self taught. There are great programmers from some of the best universities in the world. I know one person who holds a masters degree in computer science and is a terrible programmer. I know one person who holds a four year degree in CS and music study who is an amazing programmer and composer. Its not the education that makes a great programmers but the person. People who mock the head first and self taught routes are often grad students with a chip on their shoulder.

      Basically a good programmer is best described by the first reply to this post. The first line really nails it: "A good programmer understands that that they have to continue to learn and grow. They strive to do their best at every effort, admit to failures and learn from them." That also applies to many other fields but it hold true. Some people don't give a crap and produce just that, crap. Some people take pride in their work and feel a great deal of satisfaction from producing quality code that works, is reliable and efficient.

    3. Re: Head First by Anonymous Coward · · Score: 0

      True but real training, and studying theory is nessecary for growth. Most grads understand this and it is one of those 'you don't know what you don't know'. You can get so far without training. It's like working with a half empty toolbox. I know, I was self taught and then got my se degree after a decade of working as a programmer. Training, which is what a real abet certified school gives you, helps, a lot. Most people don't bother responding to people that say you don't need a degree because they will not get it.

    4. Re:Head First by Anonymous Coward · · Score: 0

      Learning Examples = Thinking inside the box
      Learning Theory = Learning why the box works and the best way to create new boxes
      Real world Experience = Mix of thinking outside the box and re-creating the wheel, probably poorly


      Your best programmers will have a mix of all.

  7. Ugh, I hated Why's Guide... by Anonymous Coward · · Score: 4, Interesting

    Seriously? I hated Why's Guide... it was stupid. I'm sorry. Just get to the point. I'd rather have a BNF with some sample code, without the fluff. Lua's documentation was the best I've seen (for introduction to a programming language). Go's is pretty good too.

    1. Re:Ugh, I hated Why's Guide... by Anonymous Coward · · Score: 0

      Oblig: You must be fun at parties.

    2. Re:Ugh, I hated Why's Guide... by nmb3000 · · Score: 1

      Seriously? I hated Why's Guide... it was stupid. I'm sorry. Just get to the point.

      As someone not interested in learning Ruby I actually enjoyed reading Why's Guide. It's very creative and clever and fun. Why clearly has a talent for creative writing (and for drawing cute little foxes).

      That said, would I use it as a way to really learn how to program in Ruby? Absolutely not. I'd much rather have something closer to an O'Reilly animal book, or Learn Python the Hard Way.

      Lua's reference guide is great, but I prefer a bit more than just a language's grammar since part of learning a new language is understanding its "why" and "how" as well as the "what" (for me, at least).

      --
      "What do you despise? By this are you truly known." --Princess Irulan, Manual of Muad'Dib
      /)
    3. Re:Ugh, I hated Why's Guide... by seebs · · Score: 1

      Interesting data point: I hated it, and it was actually the reason I didn't try Ruby the first couple of times I heard about it, because everyone was SO enthusiastic about this, and I couldn't extract information from it.

      But I actually love Ruby. It's probably my favorite language to work in.

      So this is more subtle than just a do/don't like Ruby thing. And I don't know what the deal is. I do note, I'm autistic and sometimes get bogged down on poetry, and I think a lot of that writing is functionally poetry. I am not in general humorless or anything, and I certainly can use metaphorical language, but I need a certain amount of bare literal information to start with.

      I'd guess that if someone had said "Ruby is a scripting language in which objects have types, but variables are usually just references to objects and do not have declared types, with an emphasis on flexible syntax", and then I'd read why's guide, I might have liked it better.

      --
      My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
    4. Re:Ugh, I hated Why's Guide... by vilanye · · Score: 1

      Learning Ruby by learning Python, is definitely the hard way.

      A few online guides, Eloquent Ruby and the reference book written by Matz and Flanagan is all you need to master the language.

  8. interesting that a newbie is telling the world how by raymorris · · Score: 5, Interesting

    The author has a point, maybe. I did notice that he was ten years old in the nineties and learned to program after college, meaning he has maybe five years of experience. He may be missing the REASON you name it "XMLReader", not "SusieQ" or whatever he said. If he ever has to grok a medium sized project full of classes with "whimsical" names he may wish for clear, intuitive names.

    My predecessor at work was whimsical - every script or class has a variable named "bob", which sometimes is important, sometimes does nothing. Occasionally, he forgot what he was using bob for in a particular function and tried to have it represent two different things. One of our tasks is to slowly replace all of his whimsical code with proper code that is reliable and self documenting

  9. a different perspective by buddyglass · · Score: 2

    I found learning and using Ruby to be decidedly "not fun". This stemmed more from the language itself than from the available materials. Why's guide was an irritating manifesto.

    1. Re:a different perspective by Anonymous Coward · · Score: 0

      I hated learning ruby. It was not worth the effort. Nothing of note is done with that language that isn't better done in python or scala.

    2. Re:a different perspective by toby · · Score: 1
      Well, Scala, anyway.

      Ruby is only a liability.

      --
      you had me at #!
  10. It's all about fun by X10 · · Score: 2, Interesting

    When I hire a programmer, my first goal is to find out how much fun they have coding. Without that, I don't hire them.

    --
    no, I don't have a sig
    1. Re:It's all about fun by Anonymous Coward · · Score: 1

      I have fun coding, but never when it's work.

    2. Re:It's all about fun by SJHillman · · Score: 5, Funny

      My understanding is that management only hires people who have fun doing their job because management is largely made up of Funpires who need to slowly leech the fun out of their victims, leaving them soulless corpses.

      Seriously, why else would they veto Pants-Free Fridays?

    3. Re:It's all about fun by jhol13 · · Score: 1

      Then who does all the un-fun stuff like testing and documenting. Exactly.

    4. Re:It's all about fun by Anonymous Coward · · Score: 0

      you?

    5. Re:It's all about fun by Anonymous Coward · · Score: 0

      Then who does all the un-fun stuff like testing and documenting. Exactly.

      Indian outsourcing companies

    6. Re:It's all about fun by Anonymous Coward · · Score: 0

      This is actually a brilliant idea.

      Develop in-house and outsource the testing/documentation

    7. Re:It's all about fun by T.E.D. · · Score: 1

      Seriously, why else would they veto Pants-Free Fridays?

      Perhaps because they saw you in shorts once outside of work, and are still trying to pay off the therapy bills?

    8. Re:It's all about fun by Anonymous Coward · · Score: 0

      I think robustness/correctness testing and documenting is fun...

      If people were willing to actually pay for good testing and documentation (why is a programmer that can't explain his own code worth 80k? might as well be a 'trust me' style stock broker) or at least allow other people to write documentation on their code without going nuclear over it, then we would not have to put up with so much garbage. Anyone that has spent time in man or info pages knows how terrible, incomplete, cryptic, and sometimes wrong most of them are. What is the point of RTFM when nobody fluent in human language and conversational logic has written it?

    9. Re:It's all about fun by Anonymous Coward · · Score: 0

      Perhaps they dread seeing the entire IT department in skirts?

    10. Re:It's all about fun by Anonymous Coward · · Score: 0

      ..because we already have Pants-less Thursday.

  11. "Programming medicine" by oldhack · · Score: 1

    First of all, it should be like a dope that gets you hooked, not a bitter medicine to be swallowed.

    Second, people aren't stupid. Don't try to be cute and make people throw up.

    --
    Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
  12. No silver bullet by Anonymous Coward · · Score: 1

    A lecturer's enthousiasm is one of the things I keep see mentioned as plusses in any course. Merely stating the facts isn't enough. Enthousiasm does help. But that isn't enough either. I've skipped MOOCs because the lecturer tried too hard and became shouty and loud.

    Some subjects are boring and dry and in fact go better when they're not too much "nicened up". In fact, there was a study where children couldn't do normal math because they'd been spoon-fed so much "story math" they weren't able to deal with stuff that wasn't "storified". Another case of trying too hard.

    At the end of the day, it's about acquiring the skills, and learning where and when to apply them. But motivation certainly helps--though I for me need to be somewhat interested already, or be shown why the thing is worthwhile to put effort in. What also helps is a lecturer who knows how to pick apart your jumbled thoughts and show you what you've been missing, so you can assemble the final puzzle yourself. Because, you know, all the trappings are really just that, trappings. If you think they're the main thing, then you're losing track of what really matters: Acquiring the skills.

  13. I've had some fun reading by Anonymous Coward · · Score: 1
  14. LPMUD! by Mirar · · Score: 4, Interesting

    The most fun I've seen people have while learning to program was back in the 90s, when people
    learned to program for LPMUDs.

    It takes about half a second for someone to understand object oriented programming with inheritance
    if they create a key, or a door, or a special sword, or...

    And they had so much fun programming. They never wanted to stop.

    I wish someone could create a similar 3d MMORPG (with physics) to keep up with the times...

    1. Re:LPMUD! by beowulfcluster · · Score: 1

      That's how I learnt. I was also lucky enough to have an admin on the mud that made sure the wizards she was in charge of understood the importance of writing good code and not just nice descriptions for players. It made me interested enough to switch major and when it was time to do the OO stuff in school I'd already groked it. Basically I have Lars Pensjà to thank for my career.

    2. Re:LPMUD! by Anonymous Coward · · Score: 0

      Pike, bitches!!!11
      More serious: Does still something happen in that domain?

    3. Re:LPMUD! by Anonymous Coward · · Score: 0

      according to http://mudstats.com/, it's still in use

    4. Re:LPMUD! by Anonymous Coward · · Score: 0

      google "powder toy"

    5. Re:LPMUD! by Anonymous Coward · · Score: 1

      Not exactly the same, but Project Spark is looking like a really neat way of engaging people who are interested in game creation, even if they aren't already programmers.

      Visual, tile based programming language to simplify learning, but still looks like it provides a lot of flexibility to customize your experience.

    6. Re:LPMUD! by GNious · · Score: 1

      Actually a good idea - am thinking I'll try to use it some day.

    7. Re:LPMUD! by Mirar · · Score: 1

      Very slowly going towards 7.9, I think. I still use it almost on a daily basis for various scripts and hacks.

  15. Human-readable code by Anonymous Coward · · Score: 0

    Source code should not read like this:

    if fucked(bob, saly) {
              generate_legal_filing(divorce);
    } else {
              give_blowjob(bob);
    }

    Code should read like:

    If Bob fucked Saly, sue for divorce. Otherwise, give him a blowjob.

    It's easily-readable and self-documenting.

    1. Re:Human-readable code by TangoMargarine · · Score: 1

      As long as you don't want more than a trivial-length program, sure.

      --
      Unity? Screw that: XFCE. Slashdot Beta? Screw that: SoylentNews. Australis? Screw that: Pale Moon. UX developers DIAF
    2. Re:Human-readable code by Anonymous Coward · · Score: 0

      Ruby:

      bob.fucked? saly ? generate_legal_filing(:divorce) : wife.blowjob

      blowjob shouldn't take any arguments because she should only be blowing husband, but should take an optional block in case bob talks her into bringing in another woman.

  16. The right tools, language, and project by rcs1000 · · Score: 4, Insightful
    If you want people to enjoy learning to code, you need to give them a combination of:

    1. A toolset they can use to build useful projects
    2. A language they can grasp easily
    3. And a genuinely useful project they can achieve

    Everyone's best coding experiences have come from a desire to do something, combined with the right tools to achieve it. In the early days of 8-bit computing and BASIC, this was about making a game where the computer said "I've thought of a number between 1 and 1,000", and then you guessed and it told you you were too high or too low.

    When you got that going, that was an extraordinary sense of achievement. "Look ma! I've made a simple game, you can enjoy!"

    And then came Windows and complex APIs, and languages like Visual Basic that abstracted too much from the users, such that much that happened was 'magic'. Who - given a computer these days - begins to think "how do I *make* something amazing?"

    Fortunately, things are getting better. The right languages are now available - most notably Python, Lua and Ruby - all of which are proper programming languages, but which are also easy to learn.

    And the Raspberry Pi project comes from the right place. The issue it has, perhaps, is that people don't want to produce Raspberry Pi apps - and that desktop apps for Linux, whether written in Ruby, Python or anything else, are hardly childs play.

    A better option for deploying a *real* app, people want to use, a modern equivalent of the guess the numbers game, must be either an app for a smart phone, or it must be a web app which can be deployed (for free) in the cloud. In which case, I think there are two or three options. (There used to be more, but Heroku Garden is no more). For smartphone development, Corona SDK is fairly mature and works with both Android and iOS. For a web app, there are a few more options, of which PythonAnywhere is probably the best of the bunch.

    I suspect a decade from now, the self-taught developers will have mostly learned their craft in one of these languages, building useful apps for smartphones or the web.

    --
    --- My dad's political betting
    1. Re:The right tools, language, and project by Anonymous Coward · · Score: 0

      Fortunately, things are getting better. The right languages are now available - most notably Python, Lua and Ruby - all of which are proper programming languages, but which are also easy to learn.

      You misspelled "lisp".

    2. Re:The right tools, language, and project by Anonymous Coward · · Score: 0

      If we're going to see more and more people starting off by making web apps then I'd expect to see a lot more people start on Javascript. While converting from one language to JS isn't hard, it's not straightforward enough for an absolute beginner.

  17. It's why I love Perl by happy_place · · Score: 2

    I agree that some languages make Programming a very heartless and painful experience, but then others are just fun to get working. It's how I fell about Perl. I love that I can get to a solution via an assortment of different ways and that there's not just one way to do everything. It allows me to express my individuality and creativity and helps me maintain a sense of ownership. Sure, that's not always a top priority to your boss, but as a programmer, it makes you feel more than you're just another project resource... probably vanity or hubris, but sometimes you need something to have a little pride in doing--code that isn't just generated by next-year's code generator.

    --
    http://www.beanleafpress.com
    1. Re:It's why I love Perl by Anonymous Coward · · Score: 0

      While I think perl has some nice features, I really don't like that I have to keep looking up what everything does in which situation.
      Do I need \%bla or %bla here? Why doesn't this function work if I pass it a %bla, but it does when I make it a \%bla?
      And worst of all, why do I have to run it on an old version of perl?
      The latest is so much easier to use.

    2. Re:It's why I love Perl by stormpunk · · Score: 1

      Perl attracts several of my personalities and my deep-rooted love of chaos. Since my code appears to be line noise I don't have to worry about others adding their personal touches or changing anything.

    3. Re:It's why I love Perl by Andover+Chick · · Score: 2

      History will one day see Perl as a masterpiece on the level of Bach's Brandenberg Concertos or Mozart's piano concertos.

    4. Re:It's why I love Perl by Anonymous Coward · · Score: 0

      "Why doesn't this function work if I pass it a float but it does when I make it a float * ?"

    5. Re:It's why I love Perl by Anonymous Coward · · Score: 0

      ^^THIS. Perl's bad press is undeserved/misplaced.

    6. Re:It's why I love Perl by Anonymous Coward · · Score: 0

      History will one day see Perl as a masterpiece on the level of Bach's Brandenberg Concertos or Mozart's piano concertos.

      Yes, and people will spell it "Purl".

  18. Programming in a Nutshell by TechNeilogy · · Score: 1

    One small quote from SICP sums up all one needs to know about programming and the history of computers: "When it started out, it was an awful lot of fun." --Alan J. Perlis

    --
    "The wisdom of the Patriarchs was that they *knew* they were fools." --Master Foo
  19. I teach my kids Perl by Andover+Chick · · Score: 1

    I teach my nieces and nephews Perl. I love Perl. So many languages have fallen by the wayside but Perl is a masterpiece. I'm also a fan Python and Ruby which are also fun. Lite languages are generally fun. I detest Java since it is such a heavy language and heavy languages are NOT fun.

    1. Re:I teach my kids Perl by Anonymous Coward · · Score: 0

      At least you didn't call Perl "elegant".

    2. Re:I teach my kids Perl by Andover+Chick · · Score: 1

      Yes. I'm not into using the words "elegant" or "robust" or "powerful: or "passionate" in general since they're way overused with software. I'd usually like more obscure Zeitgeist terms.

    3. Re:I teach my kids Perl by motorhead · · Score: 0

      I like CPAN. You can get an object for almost anything.

      --
      Employee Of the Month - Cyberdyne Systems Corporation - September 1997
    4. Re:I teach my kids Perl by intermodal · · Score: 1

      I'm admittedly biased in favour of my favorite, Python, but I have had projects where the CPAN just offered better options and I used Perl instead. It's a well-developed community, even if I still prefer Python itself.

      --
      In SOVIET RUSSIA... erm...NSA AMERICA, the Internet logs onto YOU!
  20. To much College mindset. Need more trade school by Joe_Dragon · · Score: 1

    To much College mindset. Need more trade school / apprenticeship setting.

    To have an AP that is Java based is good and bad (based on how much theory there is) It can be good for people doing Java work but may not so good for people doing other coding work. Also it may be a poor fit for people doing IT / network work.

    But it can also be very Theory based that does not even tech you how to trun out workable java code.

    IT / tech work needs to be less College and shorter class times / more skill based learning with some kind of badges systems or even certs that add up to some thing bigger.

    2-4 years pure classroom is to long for tech work, leads to skill gaps and even being in class to learn a skill just to have be replaced by some other one when you get out.

    1. Re:To much College mindset. Need more trade school by Zero__Kelvin · · Score: 1

      "To much College mindset."

      Evidently, to much is still not enough!

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  21. Make stuff happen by Murdoch5 · · Score: 3, Interesting

    If you want to get into programming then I suggest grabbing an embedded board and by using C and ASM make LED's blink, Make motors spin and make stuff just happen. Nothing will get you hooked faster then seeing your code do useful work. I think that is what is missing from most programming classes.

    1. Re:Make stuff happen by TangoMargarine · · Score: 1

      You're recommending a total newb to programming start with C or assembly and a circuit board? For most of us without infinite patience, that sounds like a sure recipe for the circuit board to get thrown against the wall after 5 hours of being horribly confused and getting nowhere...

      --
      Unity? Screw that: XFCE. Slashdot Beta? Screw that: SoylentNews. Australis? Screw that: Pale Moon. UX developers DIAF
    2. Re:Make stuff happen by Murdoch5 · · Score: 3, Insightful

      Well just buying something simple and well supported like the Arduino, then you can literally learn by examples and trial and error. I would recommend not touching OO languages until you're well versed in C because OO languages don't offer a good interface with memory and architecture, which I personally feel are essential for good programming. When I learned to program I started at the machine level with ASM and then moved up to C. I've done a ton of C++, PHP, C#, Java and etc.. but they just don't compare to C for both understanding and ease of use.

    3. Re:Make stuff happen by Megane · · Score: 1

      More specifically, either Arduino or mbed. Arduino is the 800-pound gorilla of the hobbyist embedded world, and mbed makes good use of C++ classes as APIs. Embedded systems programming is my job, and mbed taught me a few things about using C++ in that context. (Note: no templates, no cin/cout, no RTTI, just C-with-classes like Bjarne originally intended.)

      There's dozens of Arduino compatible boards, though only a few mbed boards.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    4. Re:Make stuff happen by gatzke · · Score: 1

      I just started playing around with scratch, which lets you get stuff running easily without hardware headaches.

      Simple stuff like making a sprite move or make noise in response to keypresses is pretty cool for little kids. And me.

      The other think I like about it is the format. "Code" still looks like code, with nested for/if statements.

      It can be slow ans it breaks down for medium to complex stuff, but making crappy flash games is easy. And they apparently have a decent version for dealing with NXT robots...

    5. Re:Make stuff happen by Anonymous Coward · · Score: 0

      Setting aside the idea of arriving at the same knowledge via a different path, we can simply say that not all problems require you to care about what is happening in memory. I would actually say that for most problems you can ignore it, or throw money at it if necessary, or have your C weenie rewrite one of the inner loops. If you like C that's fine, but don't go telling people that it's the end-all be-all of programming. Obviously that's supposed to be Scheme.

    6. Re:Make stuff happen by Anonymous Coward · · Score: 0

      I would recommend not touching OO languages until you're well versed in C because OO languages don't offer a good interface with memory and architecture

      Except C++, of course.

      C++ is (almost) a superset of C. So you can start out writing C code to do the low-level code, but then also have the OO power of C++ to organize the higher-level code in the application.

      And C++ can provide great additional value even for non-OO code, with zero run-time cost. Not all C++ features are cost-free, but some of the best ones are.

      For example, the ability to use constructors to guarantee that variables are properly initialized takes absolutely nothing away from the flexibility and good low-level access that's inherited from C. Or using RAII to manage your mallocs and frees to help prevent memory leaks. Or using private: to ensure against unintended access to code. Or maybe just making your code more concise by having the compiler automatically pass "this" to each function so that you don't have to pass it explicitly on every call.

      The only time I would recommend C over C++ is if you have a need for guaranteed ultra-high portability -- for example if you think that you may need to port the code to a legacy platform that never got updated with a C++ compiler.

    7. Re:Make stuff happen by Anonymous Coward · · Score: 0

      My first semester in the CS program had me writing C, NASM, and programing FPGA's using SPIM. It was pretty cool getting a circular buffer for a keyboard working.

  22. Great Another Crappy Coder Is Born by Anonymous Coward · · Score: 1

    If you think C++ is bad, and Ruby is "enjoyable" you shouldn't be writing software.

    1. Re:Great Another Crappy Coder Is Born by Anonymous Coward · · Score: 0

      If you think C++ is bad, and Ruby is "enjoyable" you shouldn't be writing software.

      My beard isn't veteran-length yet, but I agree with this sentiment. Ruby's grammar and syntax irritate me to no end. I go to the official language homepage, and what is at the top?

      # Output "I *love* Ruby" five times
      say = "I love Ruby"
      5.times { puts say }

      Where do I begin to describe the horror this fills me with? The sheer number of misconceptions and mistakes that anybody learning this as their first language will drag to other languages?

    2. Re:Great Another Crappy Coder Is Born by vilanye · · Score: 1

      What misconceptions and mistakes are those?

      5.times { puts 'I love Ruby' } You are sending a message to an object and passing it a block(anonymous function-if Ruby had functions). What could be clearer or simpler?

      Welcome to the real world of object-oriented programming.

      I bet you prefer public void messagePrinter(int times, String message) {
      for(int i=0;i<times;i++)
      {
      System.out.println(message);
      }
      }
      messagePrinter(5,"Java really sucks");

  23. Anyone can write code... by pietromenna · · Score: 1

    But not anyone can write *Readable* code... which *others* can read. Coding is fun? No. Solving a problem, like solving a puzzle can be fun. Finding the best solution is fun, but just the typing for the computer to do something is actually boring, I don't know if this is because I wrote already a bunch of code myself that the nice part is actually the design of the solution. If the fun is to find more people to come to our field, just pay better and you get more people who find interesting to code.

  24. BASIC by Anonymous Coward · · Score: 1

    Huh, I knew there was a reason all those old computers came with BASIC.

    Guess it's because it's understandable and it's capable (and probably quite cheap). Vive la BASIC

  25. Re:interesting that a newbie is telling the world by SJHillman · · Score: 2

    "The author has a point, maybe. I did notice that he was ten years old in the nineties and learned to program after college, meaning he has maybe five years of experience. He may be missing the REASON you name it "XMLReader", not "SusieQ" or whatever he said. If he ever has to grok a medium sized project full of classes with "whimsical" names he may wish for clear, intuitive names."

    This holds true in the sysadmin world too. If you have just a couple servers, it's fun to give them whimsical names but once you start getting into the dozens of servers, it becomes a huge pain in the ass to keep the names straight.

  26. Translation by Anonymous Coward · · Score: 4, Insightful

    When I hire a programmer, my first goal is to find out how much fun they have coding. Without that, I don't hire them.

    Translation: I want someone to work his ass of to the bone for shitty pay because he loves it.

    I USED to love to code. Then after about 4 -5 years of the 55 -60 hour work weeks to meet the deadlines set by sales and having to keep up with technology at home (more coding), I just got to the point of disliking it. Burnt out.

    BUT - I get the specs: I get the job done - on time. And then go home to the family and my tennis game. I work to live: NOT live to work. I have balance in my life and I'm MUCH happier.

    Having someone "Love" it is like dating in high school - they're out of love at the end of the Summer.

    I talked to career councilors, they told me to stay in development/computers; so it's not me, it's the screwed up industry and its idiotic notions of what makes a "good" programmer and employee.

    Perhaps if folks promoted folks who actually have grown up and gotten beyond the adolescent idea of "you are what you do" and "you must have passion" that maybe there would be changes in the working conditions.

    1. Re:Translation by Greyfox · · Score: 3, Insightful
      That's funny. 25 years later, I still have a blast coding. I've never taken a job I though would be boring, though I have run across some companies that one should avoid like the plague. Oddly, I've found IBM to be among the most fun companies to work for. Also oddly, when I was contracting there, Sun was not a very fun company to work for -- I'm pretty sure the job of the guy one cube over from me was to talk on the cell phone all day about how he was a process blackbelt. They had a 12 page form you had to fill in to get them to unlock version control for changes. Despite this and code reviews for each change, code quality was some of the lowest I've ever seen. The programmers there told me that a few years earlier the place was much more fun to work for, but it seems to me the additional perks the company brought in at the height of the boom were not oriented to making the programming more fun. Then when the bottom line started to slip, they not only got rid of those but also added ISO to the mix, sucking all the fun out of the actual job. I was there for a few months just before Oracle took them over.

      Echostar was the least-fun place I've ever worked. Despite the fact that they had fairly interesting problems to solve and interesting hardware to work on, their corporate culture leads me to believe that they despise having to have employees, and the quality of their work reflects that. So it is actually possible to make fun problems to solve not-fun. Next job after that was back at IBM working with an AWESOME team with room to improve code quality as time went on. We generally only put 40 hours a week in there, got all our stuff out on time and could have kept our pace up indefinitely. Amazing how much of a difference corporate culture makes.

      If you're not having fun programming on your job, maybe you're working for the wrong company. If you're the kind of programmer who actually enjoys programming, it's not that hard to find a position with a company that's more fun to work for. All you really have to do is look.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    2. Re:Translation by Anonymous Coward · · Score: 0

      It works better when you have 40 hour work weeks and your manager tells sales "Nope". I thought it was funny when the engineering group was busy all year to the point where they could not use their vacation time because the mangers kept rejecting them. When the product finally went out the door, HR stepped in and said that the engineers had a deadline to use their vacation time and told the engineering managers that they had no say in the matter.

      It was a wild ride for 4 weeks after the new product went live and the key programmers were on vacation and there were some problems. Around here, HR will back-hand managers if they over-work the employees. The people above the managers were not happy, but no problems with HR, just with employees getting over-worked.

      Happy workers makes for happy customers and we have extremely high customer satisfaction and retention and very low employee turn-over. Shortly after, they were hiring for more engineers so they wouldn't get stuck in the same situation.

    3. Re:Translation by Anonymous Coward · · Score: 0

      If you need your job to be fun in order to work there, you will inevitably be disappointed. The most engaging, creative, bureaucracy-free job in the world will still have dull times. I'm not saying anyone should take a job of which they will hate every moment. But there are really only two outcomes. Either you learn to deal with the dull/boring/monotonous times or the never-ending stress will consume your sanity.

      Speaking directly to the original comment:

      When I hire a programmer, my first goal is to find out how much fun they have coding. Without that, I don't hire them.

      This is the kind of hiring criteria that one should avoid at all cost. Except you can't because it never gets put in the public information surrounding job positions. Most programmers (or any profession) would have infinitely more fun programming outside of a job (where they can control all the parameters) than they will at the job (where they are told to do something by multiple people who have no idea what they're asking for). Passion isn't enough to see anything through to the end.

    4. Re:Translation by Greyfox · · Score: 1

      Hm. Maybe you're just doing it wrong.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  27. Stupid premise, stupid code by shellster_dude · · Score: 4, Insightful

    A good programming language is not one that is full of fucking "whimsy". A good programming language has a clear, concise set of commands which are self documenting. It should be difficult to write the same, simple function in multiple ways. Ruby fails on all accounts. The wording is inconsistent, there are about 45million different ways to write any given function which also means it is hardly self documenting.

    I've rarely met a Ruby developer who was employable in another field because they simply don't know what constitutes good, clean, concise code.

    I've got karma to burn...

    1. Re:Stupid premise, stupid code by Anonymous Coward · · Score: 0

      Hurray!!! Somebody finally gets it. Ruby, like Perl and Python are just a mess.

    2. Re:Stupid premise, stupid code by Anonymous Coward · · Score: 2, Insightful

      Amazing how many experienced coders are venting here about their favourite toys, my favourite colour is blue, I'd never use anything but an estwing hammer, snap on tools rock! Who gives a toss what language you love and which one you hate, the story was focussed on people learning to code, not the jaded ramblings of people who blame the technical implementations of others.
      The best thing you can do is not learn to code at all if you end up sounding like a dick.

    3. Re:Stupid premise, stupid code by Anonymous Coward · · Score: 0

      Agreed. Ruby is an awful language that is incredibly poorly designed and conceived. I have never seen a project in ruby that was worth anything and wasn't worth doing in a real language.

    4. Re:Stupid premise, stupid code by Necronomicode · · Score: 1

      " It should be difficult to write the same, simple function in multiple ways".

      I'm interested in why you think this part is important. I would assume that any programming language that is restrictive enough to have only one way of writing a simple function would also be less versatile. The question would then become "Does the versatility outweigh the predictability." I would also expect it to be a continuum rather than a binary chose, with various programming languages littered across the spectrum. But maybe there's a sweet spot.

      I welcome any insights into how people value predictability and versatility and the corresponding secondary effects e.g. code review, bug finding, performance etc.

    5. Re:Stupid premise, stupid code by Andover+Chick · · Score: 2

      Perl is a mess if one doesn't "use strict" or "warning" or doesn't format code properly. It is a coding supervisors job to insure the code is readable via code reviews (in utopia). One can make a mess out of C/C++/Java too if they obfuscate code to protect their job security (it's the person who's code no one understands who gets laid off last). The biggest mistake of all in teaching coding using one letter variable names code examples (such as iterators i and j). Variable names should have meaning. For example, we have a psychopath where I work who always uses the a global Perl hash variable "%e". For one, the letter "e" is one of the most common letters in English so grepping code is a nightmare. For two, it has no meaning. And third, the probability of name collision is huge. The guy is a classic Russian paranoid who thinks nothing about f*ing a code base to insure his own interests. Anyway, apologies for venting...

    6. Re:Stupid premise, stupid code by Greyfox · · Score: 1
      I liked Ruby early on, until I actually had to support production code written in it. I'm currently in the process of stamping out out from the code base I have to support. I don't think you actually realize how bad it can be until you actually have to support it.

      It's not that the language is inherently bad. No language is inherently bad. It's just that you need to use some very strict discipline when using it. If you write unit tests for everything and actually design your objects, it would be pretty good. The problem is nobody actually does that. In my situation, if I could even deploy the code a test environment and test it prior to deploy, it would be better. But the original guy coupled it so tightly to the database and all the objects so tightly to each other that there's really no way to do that. So I'm in the situation where I could try to fix this broke-ass design, I could rewrite it all in Ruby or I could rewrite it all in another language. I decided to go with C++ and wrote a bunch of libraries and a bunch of unit tests with cppunit for those libraries. So now when I deploy my code, I actually have a high degree of confidence that it's going to work when it gets to the systems it lives on.

      I have about equally as much fun writing code in C++ as I do in Ruby. It's just easier to understand how the objects work in Ruby. I would argue that whimsy is not necessary to have fun in a programming language, but understanding how that language works is. Ruby seems sensible a lot faster than C++ does, and is easier to pick up and have fun in a lot faster. If you want to have fun in any language, experiment with it to see how it works. If I run across something where I'm not sure about how it works in C++, I'll stop and Google on it rather than avoiding something out of superstition.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    7. Re:Stupid premise, stupid code by BlackPignouf · · Score: 1

      Maybe you could give an example of a "good programming language"?

      Because "concise set of commands" and "concise code" seem to be contradictory.
      To each his own, but I really like Ruby programs because they're usually much shorter and to the point, than say, Java, C or PHP equivalent.

      I know I'm biased because I work with Ruby on a daily basis, but I think :

      1.upto(10).each{|i| print i}

      is self documenting.
      Who cares if you could write an equivalent with

      Range.new(1,10).each{|i| print i}

      or

      for i in [1,2,3,4,5,6,7,8,9,10] do
          print i
      end

      ?

      Given the properties you're looking for, I suppose you prefer Python over Ruby.
      The equivalent Python code is :

      for i in range(1,11):
          print i

      Is it really self-documenting?

      Coming from other programming languages, it is liberating to discover Blocks, method_missing and stuff like that.

      Anyway, it's clear that Ruby isn't the solution to every problem, but it definitely is a great tool for many different purposes. For other jobs, Python, C, Prolog or Caml might be better suited.

    8. Re:Stupid premise, stupid code by shellster_dude · · Score: 1

      See BlackPignouf's response for an example of why I think Ruby sucks. I never said it should be restrictive. There should simply be one right way to do something, not a hundred ways. Python, which is not perfect by any means, is pretty good about this. It is a very flexible language with lots of libraries, but there is a very limited way of doing any one thing. There is also plenty of guidance on the "Pythonic" way of doing any particular task.

    9. Re:Stupid premise, stupid code by Anonymous Coward · · Score: 0

      Your ruby code is exactly unreadable. Why? As soon as you do many things on one line, it becomes unreadable. Ruby seems to encourage that behaviour.

      1.upto(10).each{ |i|
              print i
      }

      That is readable. Not someone writing

      foo.pre.boo.foofoo{ |i| yield i }

    10. Re:Stupid premise, stupid code by quietwalker · · Score: 1

      I see no reason that the 'same, simple function' needs to be restricted to a single mechanism. There may be advantages to that, but we should all be familiar with the troubles inherent in treating a language as a series of immutable building blocks. All the stats show; the fastest, most secure, most quickly written, and most maintainable code relies more on the programmer being comfortable with the language and allowed to write in their own style (both of which require experience), than it does which language you pick.(*)

      So, just because most java developers have no concept of memory management, and most perl, ruby, and php programmers don't understand why they should avoid nested bubblesorts (or what a bubble sort is), that doesn't mean those languages are inherently bad. I don't discount C++ simply because you need to have memorized "Effective C++" and the sequel in order to avoid memory leaks and errors in even simple constructs. Frankly, I've seen horrors written in every language I'm proficient in, and I've seen graceful implementations in each as well. I've seen a clear and easy to follow object oriented design implemented in plain ole' C, and an incredibly clean Perl sysadmin suite that had exceptional plugin support and was naturally self-documenting.

      In fact, the only time I can rely on getting something horrible is when there's some all-encompassing, 'do it my way' framework, and someone has to put in nasty hacks just to get the remaining 10% to work. I've learned to only trust non-intrusive libraries and frameworks, where it's obvious that you can simply override all behavior in a pinch, or pull it apart piecemeal, and prepare for nastiness in all other cases.

      So I won't discount the language based on the code some people produce in it.

      However, I will say that I personally dislike whimsical code. Damned hard to read, like someone put stereo instructions in haiku form. Pisses me off worse than hungarian notation (which is likely proof of brain damage).

      (*) - or in other words, the entire python credo is wrong

    11. Re:Stupid premise, stupid code by Anonymous Coward · · Score: 0

      Isn't this just justification though?

      There should be One way to do things? What on earth leads you to that conclusion?
      Even on the high-level you've got multitudes of ways to make solutions (strategic level):

      Imperative
      Procedural
      Functional
      Logical
      Descriptive
      Genetic programming
      Learning

      Already from the high-level you've got so many options to choose from. No single language can encapsulate even one of these fully.

      If you go down in detail, you've still got multitudes of ways to do it (tactical level):
      Goto
      If / Else
      Control loop
      Iteration
      Callback hooks
      Lambda functions
      Threads
      Concurrent programming

      What do you want to do? How do you want to do it? What levels are appropriate for the given project, and which should be hidden away?
      All of this can be combined and/or excluded, almost completely arbitrary. There are no One Answer, not in life, not in programming!

      There is no "perfect" way of doing this, other than choosing the Right Tool For The Right Job.
      Often, it should be the tool one enjoys working with the most and has the most competence on, but it should not blind you either.

      I've read tons of Python code, but I've yet to see such elegant and expressive solutions as I've seen in Ruby.
      At the same time, Rails is so convoluted, it's easy to see why people are reluctant to Ruby, if the first impression was Rails (of which only ActiveRecord is intuitive and good IMHO).

      I do understand the urge to control everything, but for creative / fun solutions, I find it limiting and cumbersome.
      If you "get" Python, all power to you though.

    12. Re:Stupid premise, stupid code by Kielistic · · Score: 1

      Your ruby code is exactly unreadable. Why? As soon as you do many things on one line, it becomes unreadable. Ruby seems to encourage that behaviour.

      You are probably just not good at interpreting it well; most humans have no problem with that. For instance- the single line I quoted from you contained several sentences but I had no problem understanding it.

      1.upto(10).each{ |i|
      print i
      }

      Case in point. You are actually doing 2-4 things on the first line of that code (depending on how you define a "thing"). But that is how you've structured the way you read code. Thinking that that is the best way because it's all you can muster is the height of hubris. Something simple like that I would prefer on one line; easier to read.

    13. Re:Stupid premise, stupid code by ducomputergeek · · Score: 2

      I wish I could mod you up. 8 years ago I started a project for a client that turned into a company that I sold 2 years ago. I didn't make millions, but made enough to buy a house and a farm that pays me enough rent to cover my living expenses allowing me to work with other startups without having to worry about paying the bills. [Marrying a corporate attorney with an MBA helps too]

      At any rate that was at the height of the RoR craze. I was in a college town, actually in law school after spending a few years as a DB/400 admin, but loved computers and databases however knew that my skills with AS/400, AIX, and Perl were at the end of their life.

      I was hired to do a project over the summer after 1L. It was going to take me a couple weeks between the end of classes in early May and when my summer internship started in June plus give me a few thousand $$$ for the next semester.

      Well we were set up at the university business incubator and there were a couple developer shops in there, or people trying to be developers. So we'd see each other talk shop and after all they were always looking for new business to help them pay the bills while they worked on their own "big ideas". A couple of them were big Ruby on Rails guys. So I went to their office and they were showing me how they could write a blog in 15 minutes and how easy Ruby was. I shrugged and said, "Okay, this is just like perl modules & CPAN or PHP & PEAR". Then I got lectured on how it was nothing like CPAN or PEAR. I rolled my eyes a bit and then began asking questions about security and scalability.
        After all I had worked with clients in the financial and medical sectors. My summer job/internship (I was being paid $20 an hour) was with a medical supply company that needed to bring its business & software (20 year old DOS program) into compliance with new Medicaid/Medicare regulations & procedures. Security and scaling were concerns in those industries.

      I remember asking the Ruby guys about how they scaled their MySQL database. I was leaning towards PostgreSQL for my project, but hey maybe they knew something I didn't. The RoR guys shrugged and said, "Oh, see with media temple that all happens automagically". I knew they had no idea what the hell they were talking about when it came to infrastructure.

      As I got to going around to more developer conferences as well as interviewing programmers to work for us it seems like I heard the exact same things from Ruby evangelists until about 2009. Then suddenly it seemed like I didn't hear jack about Ruby nor did I see it on resumes.

      I ended up doing the project for my client in PostgreSQL & PHP deployed on FreeBSD servers. Worked well enough that I didn't go back to law school. Version 2 involved an API written in Perl of all things and process $250k a day in orders until we sold the company in 2010 without a problem.

      --
      "The problem with socialism is eventually you run out of other people's money" - Thatcher.
    14. Re:Stupid premise, stupid code by BlackPignouf · · Score: 1

      Also, relatively simple one-liners leave precious vertical space for more important parts of the code.

    15. Re:Stupid premise, stupid code by seebs · · Score: 1

      Which is pretty much why I avoid Python -- because since I happen not to have the exact same intuitions as the Python community, everything written in the "Pythonic" way is awkward and backwards to me. And there's no way for me to use the language without having to be a person who has a different set of intuitions.

      I can fake it, but it's a lot of work and I find it unpleasant.

      --
      My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
    16. Re:Stupid premise, stupid code by Anonymous Coward · · Score: 0

      You're halfway correct in that, in Ruby, you usually should avoid the curly-braces version of block delimiters since it encourages writing things in a single line. However, sometimes cramming things into one line actually aids readability. I'd say that the guideline is, if it's a statement (variable assignment, function call etc), write it on separate lines using do..end.If it's just a simple expression, the curlies are probably better. For example, Enumerable#map is fine for curlies but Enumerable#each isn't.

      None of the grandparent's examples felt like fluent Ruby code to me; I'd personally write it as:

      (1..10).each do |i|
        print i
      end

      In Perl, it would be:

      for my $i (1..10) {
        print $i;
      }
       
      # or postfix syntax; sometimes clearer
      print $_ for (1..10);

      That one's not really that much more abstruse either (unless you're just allergic to dollar signs)

    17. Re:Stupid premise, stupid code by Anonymous Coward · · Score: 0

      It should be difficult to express something from a different angle? If you're such a fanatic of rigidity you must love COBOL. Modern programming languages are successful exactly because they let you use more than one paradigm. You can do old school OO in Ruby, but you can also do it functional style. The best way to do it depends on your personality, the recipients (code is after all a communication medium between people) and the problem domain, not some dogma.

  28. Go ahead, re-invent that wheel by ggraham412 · · Score: 4, Insightful

    Perhaps the most soul crushing phrase you will ever hear as a programmer is: "Don't re-invent the wheel."

    Go ahead, re-invent that wheel every now and then. That's why you got into programming in the first place. You can do a better job.

    1. Re:Go ahead, re-invent that wheel by Anonymous Coward · · Score: 0

      Thinking you can do a better job is not the same as doing a better job.

    2. Re:Go ahead, re-invent that wheel by Anonymous Coward · · Score: 0

      I think what is implied there is don't reinvent the wheel when a perfectly good wheel already exists. That's not the same thing as inventing a new wheel that functions better or wobbles less.

    3. Re:Go ahead, re-invent that wheel by tuffy · · Score: 5, Insightful

      Even if you don't wind up doing a better job, reinventing the wheel is a good way to understand how wheels work. So the effort isn't wasted if one learns something at the end of it.

      --

      Ita erat quando hic adveni.

    4. Re:Go ahead, re-invent that wheel by Necronomicode · · Score: 1

      Yeah, I've seen this numerous times.

      Them: We decided to write our own protocol for this interface
      Me: Why didn't you go for the fully tested standard protocol that we're already using on this other interface which is fundamentally the same?
      Them: Just in case we wanted to add some extra stuff to it.
      Me: Have we added extra stuff?
      Them: No
      Me: Well given that I've just found a basic design error in this new protocol that means it doesn't error trap I'm guessing it didn't get a lot of testing.
      Them: Really? Oh that's a problem, we've burnt this into silicon for some of our other devices already.

      And the classic one where their memory management routines cause problems, I replace them quite quickly with new versions. They all wonder how I managed to do it so quickly and they work so well. I explain that a number of years ago a guy called Donald Knuth wrote a book called "The Art Of Computer Programming" and they came from that. None of them have heard of it - go figure.

    5. Re:Go ahead, re-invent that wheel by Anonymous Coward · · Score: 0

      Sometimes it implies that the wheel that exists is a terrible thing that shouldn't exist. That's when you start plotting the demise of a wheel. It's usually to be replaced with a slightly better wheel. Then management usually torpedoes it and you limp along with the existing unholy abomination for a while longer, until it again becomes a business liability.

    6. Re:Go ahead, re-invent that wheel by Anonymous Coward · · Score: 0

      The trouble with reinventing the wheel is that it absolves you of the need to understand how everyone else's wheels work. Maybe you'll understand the basics, but you won't get why some wheels have lug nuts, tires, spokes, rims, unless the specific use-case you've got in mind calls for those things.

      That's why the saying is there in the first place. Maybe you could code better than the people who came before you. But the chances, a priori, are at best 50/50, and if you don't even bother to study what they did, they're significantly less.

    7. Re:Go ahead, re-invent that wheel by Anonymous Coward · · Score: 0

      “Don't reinvent the wheel” is only said by those who believe wheels grow on trees :)

      Horridly some of them claim to be engineers and/or consider themselves to be smart and intelligent.

  29. Re: interesting that a newbie is telling the world by techprophet · · Score: 1

    With servers you can have your cake and eat it too (to some degree) with hostname aliasing, though. While some languages (eg JavaScript) have easy ways to alias functions and objects, it is often considered bad form to do so.

  30. It should be as fun as writing a book by WillAdams · · Score: 1

    Dr. Donald Knuth has opined that Literate Programming is the most important computer science concept which he has created and that TeX and Metafont couldn't've been written w/o that technique:

    http://www.literateprogramming.com/

    I've found that using it for the TeX projects I do results in much more maintainable code which was also easier to write initially.

    --
    Sphinx of black quartz, judge my vow.
  31. Re:interesting that a newbie is telling the world by Speare · · Score: 5, Interesting

    When I was an undergrad with a part time job helping out in a graduate chemistry lab, there was a suite of utilities written in FORTRAN. People depended heavily on this suite to calculate all manner of things related to their crystallography research.

    The problem was, it was mostly written during one of those years where Lord of the Rings and the Hobbit were massively popular again, and people were learning to program with hunt-the-wumpus teletype programs. The original author "amused" himself by naming pretty much anything he could after some fantasy concept. CASTLE, FRODO, DRAGON, and so on. Okay, so to map out van der Waals surface strength, you ran CASTLE. Many things have quirky codenames, you get used to it. But all the variables followed suit. Now it was a bit more obscure to maintain the program or trace the logic.

    Worst of all, the comments. In FORTRAN, columns 1 to 72 were for your program, and anything after 73 was a comment. The author wrote an "epic" of his own, all word-wrapped in the column space from 73 to 132 (the width of common teletype paper and long Hollerith punch cards). What a waste of his time, you might think. But it was also a huge impediment to maintenance; you see, people in the lab LIKED his story (for a while), so they had to figure out how to patch the logic without breaking the flow of the story. It took years before someone stripped all the prose and got the rest of the lab to follow the maintainable fork instead o the prosaic one.

    --
    [ .sig file not found ]
  32. Scratch by Anonymous Coward · · Score: 0

    One of the great things about Scratch is that you get instant feedback. Is it a robust programming language? Hell no. Does it frustrate routinely? Yes, just enough to keep my daughter interested.

    My biggest frustration with trying to learn structured programming was that it took a week to get from "hello world" to anything else. When characters on the screen were the limit, BASIC was appropriate. Now, however, I've found nothing really between Scratch and Unity for a teaching language.

  33. Trend of the day by jones_supa · · Score: 1

    Modern life seems to cherish the idea of everything being fun and giving immediate reward, even in areas like technology which in general needs long-winded learning process to bear fruit and to master complex systems.

  34. What would Dilbert say? by Anonymous Coward · · Score: 0

    When I hire a programmer, my first goal is to find out how much fun they have coding. Without that, I don't hire them.

    I see. The more they suffer, the more you have to pay them to stay, so obviously the goal is to hire someone who gets so much kicks from their work that they'll do it even if you punish them for doing it ...

  35. So Many by denmarkw00t · · Score: 2

    I tried a number of languages and books before I got "comfortable" doing any kind of programming. Assembly, C++, Java, PHP, Javascript, Perl; I would check out books constantly from the library growing up and spend weeks trying out different things. Some of the books were in the "For Dummies" series, and no amount of humor or so-so comics made Java fun. Same for the rest. Programming didn't start being fun until I actually had something to achieve - once I had a project in mind, the programming became much easier to understand. A book's approach of "now we'll make an address book program" is so dull and boring, it's just not something I can get in to. Maybe that's why I still have a hard time reading through language books today - even Learn Programming the Hard Way has been difficult for me, because I don't feel like I'm going to apply any of it in a meaningful (to me) way.

    1. Re:So Many by Anonymous Coward · · Score: 0

      What kind of projects have you completed?

    2. Re:So Many by denmarkw00t · · Score: 1

      Horrible, disgusting things. Think "real estate."

  36. Fun Joy Beauty by John+Allsup · · Score: 4, Insightful

    These three are the key to motivation in many activities.  Without fun it's hard to get started, without joy it's hard to keep going, and only later do you see the beauty, first hand, that you can achieve through really mastering a discipline.

    --
    John_Chalisque
  37. I have. And it's getting worse. by Anonymous Coward · · Score: 0

    All you really have to do is look.

    What makes you think I haven't?

    Also, I have HAD to change jobs because, well, employers moved development offshore. And I used to move to find interesting projects, and now it has hurt me because I am considered a "job hopper".

    Yeah, you remember back in the 90s when if you stayed in a job more than 2 years, you were considered someone who didn't want new challenges or whatever the bullshit term the lemming managers and HR people had. I did that. 2 years I was gone - usually because the project was in maintenance mode anyway.

    It's hurting me now.

    Also, things are getting worse. Companies are canning people and putting more and more work on the existing people. Meaning, those 55 - 60 hour weeks are turning into 60 -70 weeks and longer. And here's the kicker - the pay is NOT going up and in some cases going down. Recently, a C++ guy I know took a job for $65K. I looked at the job posting and back in 98, I was getting $75K for that same type of work.

    I want out.

  38. Ruby is superb by Anonymous Coward · · Score: 0

    After coding in numerous languages including FORTRAN, C, C++, Java, TCL, and
    a bit of Python, Perl and Javascript, I find Ruby is the one I reach for when starting
    a new project if I have a choice.

    It achieves the perfect balance between concise syntax and readability, has OO
    if you need it but you're not required to use it and has a pretty good standard
    library -- though perhaps not as extensive as Java or Perl.

  39. Perl epiphanies by goombah99 · · Score: 5, Insightful

    I had much the same reaction to perl. I love perl for many reasons. One is that even though the native language without any imports is more powerful than almost any other languange (without imports) the O'reily nut shell guide is the thinest one on my shelf. It really says something about incomprehensibility when even the C++ nutshell guide is thicker than perl. It means that even though perl might seem very ad hoc, in fact it's so self consistent that you can write it all up in a tiny guide.

    What really sold me on perl was writing object oriented perl. I had been doing object oriented programming for some time in multiple languages including java and Objective C, but what really made me understand it was perl. In perl you actually see the underside magic of what an object actually is. It's remarkable that the language of perl could go from not having any objects to having objects just by adding one additional command ("bless"). Nothing else in the language had to be re-written. Internally one is storing all the instance variables in a single hash. What's interesting is that you don't have to choose that mode of data organization. you can instead bless a scalar. then you can have the class rather than the instance manage the instance variables. Effectively a hash is a row oriented data base and a scalar is a column oriented data base. When I realized this I was sort of staggered how many high concept ideas were rolled up into the perl method of objects.

    I went back and implemented a hash in fortran 77. After that I could write Object oriented fortran 77. yep that's right fortran can also be an object oriented language just doing the same trick perl does. All you then are missing is dynamic memory allocation for it to be complete.

    While may people curse perls prefix sigils I actually find them conceptually compact. In most languages the notion of a type, and the construction of a primitives data, get conflated. Really these are different things. Perl makes this explicit. A primitive in perl can have a data organization (list, hash, scalar, reference, dereference, glob) signified by a pand it can separately have a package inheritance (@ISA) that is analogous to a type. In languages like C++ or most everything those two concepts are not distinguised heavily. As a result I find it easier to read a perl program because of all the explicit data structure prefixes.

    What kills perl in the end for complex programs is not these sigils looking like cursing on the page, but rather that everyones programming style is different, so it gets pretty crazy to read because it's so compact. It's perhaps a compliment how compact it is. It's interesting that the less compact and less versatile a languages native syntax is the easier it is to read.

    But it's true. Try reading APL, the most dense language ever devised. then try reading Lua or (early) python. Both of those are a breeze to read other people's code.

    When I read ruby what I see mainly is an extended perl syntax that can avoid using these despised prefix sigils. It gives the objects syntacic sugar, like python does, to hide the object mechanics from you. So it's a very clean looking upgrade to perl.

    --
    Some drink at the fountain of knowledge. Others just gargle.
    1. Re:Perl epiphanies by motorhead · · Score: 0

      I was a CS major in college with a focus on languages. I taught my self Perl and never looked back. I think it's quite useful for UNIX systems admin. What I write is probably classified as 'baby talk" - you can read the program listing out loud and tell what it's doing. Other admins love that. It may take a few ticks longer but who cares? I recommend folks read the "Camel Book" - for the programming bits and the humor.

      --
      Employee Of the Month - Cyberdyne Systems Corporation - September 1997
    2. Re:Perl epiphanies by Anonymous Coward · · Score: 0

      I went back and implemented a hash in fortran 77. After that I could write Object oriented fortran 77. yep that's right fortran can also be an object oriented language just doing the same trick perl does. All you then are missing is dynamic memory allocation for it to be complete.

      Fortran has implemented dynamic memory allocation back in the 90s (Fortran 90). Coupled with the capability to define very clear interfaces which can be strictly enforced at runtime, it makes a very decent OO language.
      As long as there are no strings involved ;-)

  40. Environment by Anonymous Coward · · Score: 0

    Coding can't be fun in an environment that isn't fun. If you have an environment that frowns on fun, then everything is business and business isn't fun. Even programming itself, computer science, has decided that fun is no longer part of the equation. So many people embrace "agile" programming, however, my experience has been that management twists it to mean that we have two week sprints that literally are meant to burn out programmers as fast as possible. Even so-called scrum experts are guilty of this. Yeah, they're doing it wrong, but it's business.

    I'm 50 and it's a common opinion amongst my peers that programming has changed for the worst. Yes, you can do many things but only if you're working on your own. In business, creativity is frowned upon unless it comes from marketing. Instead, programming (and IT) is purely about being "productive" which, to managers, means lines of code. You now use toolsets and frameworks over which you have little choice over and generally the analysis is done by someone who doesn't understand computing (so it lacks any logic). Deadlines are unreasonable.

    Part of the problem is that we've been telling people that programming is easy for so long, they believe it. No matter how whimsical your learning is, business will fins a way to drain it of all passion and fun.

  41. the root of all evil.. er, fun. by Anonymous Coward · · Score: 0

    chomps get and puts over. Good grief, might as well ust go back to perl if you find that crap fun.

  42. _why by Anonymous Coward · · Score: 0

    Anytime I see accidentally read any of his writings, the crazy hurts my head. I hope he's locked up in a padded room and injected with bear tranquilizers on an hourly basis.

  43. A good teacher by dan325 · · Score: 1

    makes a huge difference. My first comp sci teacher in high school was great. Even as he was teaching us the basics, he gave us very open-ended assignments that encouraged creativity. We were programming Pascal in DOS (and I've dated myself). The last topic he introduced in the first year was the Turbo Pascal graphics unit. Our last major project was to "write a program using the graphics unit." We could literally do anything. Some of the less advanced people just drew pictures on the screen. Others did a choose your adventure-style game. One other kid in the class and I had a friendly competition going to see who could make the better project and we were constantly eyeing the progress of the other and trying to one-up each other. I ended up making a game with some rudimentary physics where you could jump around and shoot at a bad guy. It was a blast, to say the least and I have been hooked on programming ever since.

    Unfortunately, my teacher retired at the end of that year, and we brought in a new comp sci teacher. This new guy was very much into teaching to the AP test and took off points if our output deviated slightly from what each each assignment prescribed. I can't imagine that there were many enthusiastic programmers that came out of that environment.

  44. Re:interesting that a newbie is telling the world by T.E.D. · · Score: 4, Funny

    The author wrote an "epic" of his own, all word-wrapped in the column space from 73 to 132 (the width of common teletype paper and long Hollerith punch cards). What a waste of his time, you might think. But it was also a huge impediment to maintenance; you see, people in the lab LIKED his story (for a while), so they had to figure out how to patch the logic without breaking the flow of the story.

    I've been a professional software developer for nearly 25 years now, and did it for fun for about 10 years prior to that. I'm old and jaded, and before this morning I thought I had come across every way in which a well-meaning person can make a computer program difficult to maintain.

    Thank you more than words can express for restoring my sense of wonder in the universe today.

  45. Motivation is the best medicine by Anonymous Coward · · Score: 0

    Laughter is all fine and good, but the best way to learn to program is to have a specific goal in mind. Personally I'm learning to code apps right now because I want to try out a concept in the market and its prohibitively expensive to have it built.

  46. Helps by TheCarp · · Score: 1

    These things help but, if you are into a good problem, even cout is a minor annoyance. I wonder if there isn't some self-selection bias going on here. There have always been terrible bores of teachers. Hell when I was in college I got sick with the chicken pox and, on my way home, realized I needed to talk to my calculous prof, but I couldn't remember his name. My roomate asked if it was Prof SoandSo, "Tall pale humerless pale guy, talks in a monotone voice?" "Yah that is him"...turns out it wasn't.

    Perhaps its just that the more interesting teachers who come up with more interesting approaches, tend to select more interesting or fun languages to teach? Frankly, I don't think it matters much what language you learn in...they all have their idiosyncrocies, but, with few exceptions (looking at you LISP) they are mostly the same, I can usually pick up code in a language and read it without
      too much trouble, especially if there is a language reference I can peek at when the syntax gets unusual.

    I really don't think the language itself matters that much.

    --
    "I opened my eyes, and everything went dark again"
    1. Re:Helps by JesseMcDonald · · Score: 1

      Frankly, I don't think it matters much what language you learn in...they all have their idiosyncrocies, but, with few exceptions (looking at you LISP) they are mostly the same

      LISP isn't really all that different from other multiparadigm procedural languages like C++ or Java, particularly now that both are getting first-class anonymous functions. It's mainly the culture which places it in the functional programming camp, not the language per se. If you want to see something different, try Haskell (pure functional) or Prolog (declarative), languages which really force you to take a new approach to programming.

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
  47. The dangers of humour by jandersen · · Score: 1

    I think it is well documented that people learn better when they have fun - even to the extent that the fun doesn't have to be at all relevant to the subject. I recall an experiment where a comedy movie was shown on a screen while a teacher went through his lecture and his class remembered and understood the subject better than a class that didn't watch the movie.

    The danger is that humour is sometimes difficult to get right; if you get it wrong, it prejudices the student against the subject. I've tried it myself - when I first encountered Perl, I was put off by things like "bless" and similar attempts at being funny (I assume?), and I'd still today rather shave with a cheese grater than use Perl. A shame, really, I've heard it is really useful, but there you are.

  48. Language lawyering by tepples · · Score: 2

    I find C++ much more fun, because it does exactly what I tell it to.

    But you sometimes have to be a language lawyer to figure out exactly how templates, inheritance, the implicit conversion, and other C++ language features will interact in a given case. See C++ FQA Lite for a taste of the language lawyering that C++ programmers have to do in their heads to be competent in the language. In what way do you find this easier than figuring out the semantics of a particular dynamically typed language?

    Python, PHP, Ruby

    PHP is less strongly typed with its policy of playing loose with implicit conversions to and from numeric and string types. But Python is strongly (though dynamically) typed.

    1. Re:Language lawyering by Anonymous Coward · · Score: 0

      Use D or something else instead of C++ if you're doing it for fun.

    2. Re:Language lawyering by uninformedLuddite · · Score: 1

      As someone who used D aeons ago I wonder where the fun actually is?

      --
      The new right fascists are bilingual. They speak English and Bullshit.
  49. I will never relate to this :/ by luis_a_espinal · · Score: 1

    "What's funny is it really doesn't take much effort to be more enjoyable than the C++ examples from earlier...just getting to write gets.chomp and puts over cout > made all the difference. Ruby examples kept me engaged just long enough that I could find Why's Poignant Guide to Ruby.

    To me, this just does not make any sense. The preference of gets.chomp over cout << (or viceversa) are so subjective that they borderline on the ridiculous. I don't think I will ever relate to such minutia. Even when I was in my formative years as a future programmer, such minutia seemed as irrelevant then as it does now.

    At least for me my focus and motivation were always a) what can I create with this programming language, and b) how can I tame this beast. That's the approach I took with BASIC, with Pascal, with Delphi, with C and C++, with assembly, with Ada, with Lisp and Prolog, with Java, with C# and so on and so on.

    The only thing out of this story that I could relate to is that indeed C++ (like Java and C#) is a horrible introductory language, and that something like Ruby (or Python or Lisp or BASIC or a Pascal variant) is a better prog-101 language. Heck, I would go as far as to claim that Assembly (a real one or a simulated one) is better to teach programming than C++.

    But to suggest that such ridiculous minutia "engages" someone to learn, to me that's suggestive of prioritizing on the wrong things. Every person is different and unique and perhaps *THIS* works for them. To me OTH, it has always been about being able to create more and more powerful things with whatever language I had to learn (or work with.) Syntactical minutia is just not such a significant impediment unless you focus on them and give them greater power (positive or negative) than they actually have.

    As for the value of goofing, of course that is important, but that is not a function of the language. It is a function of the professor, and the student. I know professors that will suck at it even if they use Ruby, and I've had wonderful professors that took me on great journeys with whatever language, low-level or high-level, that they were teaching at the time.

    Ultimately, fun is subjective and it is just a function of what you make of the things you have at your disposal. Your learning potential will likely suffer if you take minutia as the focus of your likes or dislikes.

  50. Yes and no... by stevenfuzz · · Score: 1

    75 hours into a deadline week, coding is not fun. I could name every variable poop and fart, but that shit doesn't matter with your boss breathing down your neck (not to mention how pissed if I saw that during a code review). I'm not sure I'm sold on teaching through cuddly hand holding. That being said, technically I learned programming through logo writer and writing little games in basic when I was very young. Looking back, I do not think it was necessarily the content of the programming that kept me interested, but rather the self-competition of beating yourself at problem solving. Why can't kids be motivated by learning, rather than learning because they want to have fun?

  51. Python? by Anonymous Coward · · Score: 0

    Does anyone know of any material that follows that "fun" approach for Python? I am a pro web designer, but a non programmer, and would like to get a fully INTRODUCTORY course to Python but everything I've found so far makes me feel like I'm reading a manual to some complex electronic machinery.

  52. Re:interesting that a newbie is telling the world by Anonymous Coward · · Score: 0

    Also regarding Tolkien, he was a linguist and invented many languages in his stories. The books inspired Larry Wall to become a linguist and work at a job processing electronic communications, and that's how Perl was born.

    He talks about the Natural Languages Principles in Perl here: http://wall.org/~larry/natural.html

  53. Yerkes-Dodson Law in psychology by Anonymous Coward · · Score: 0

    says that complex tasks demand 'low motivation" == "a relaxed mind".

    This has been well-known since the 1930s, keeps getting rediscovered in different contexts.

  54. Goofy == Better by sabbede · · Score: 0

    ...or at least more palatable. Using humor engages more of the brain and makes processing dry material more enjoyable. The only thing better is setting it to a goofy tune. I learned and retained more about James K. Polk from They Might Be Giants than I did from any other source.

  55. What's the point? by Anonymous Coward · · Score: 0

    What's the point in entertaining learning? It just means your soul will be crushed that much harder when you get out into industry and realize that 99% of your professional life will involve almost physically painful efforts to focus on unimaginably dull, repetitive, and restricted tasks.

  56. Q: "Are we having fun yet?" A: Chess by globaljustin · · Score: 1

    I agree with your point about how these articles are a waste of time to read b/c they are essentially just one random person's diary of their tech travails in life....

    The question of the post, about coding being 'fun' I think goes to something deeper though, something that TFA tries lamely to address:

    Coding languages are non-sensical. That's what makes them so 'hard' to learn.

    First, let me contrast between 'easy' and 'hard' & 'simple' and 'complex'....so, the task of 'dig a 5x5x5' hole in the ground' is a simple task, but it's not 'easy' with just a spade shovel...it's at least a day task for most /. readers

    Coding is 'hard' AND 'complex'....contrast with the game of chess...a child can learn the basic rules of how the pieces move and interact, but the game itself is as complex as anything humans do..."easy to learn, difficult to master"

    One reason coding is 'hard' is that so many abstraction layers add unnecessary complexity. People encounter choices and usage of language that is completely out of context of anything they experience and so far removed, in a systemic sense, from the 'user interaction layer'....So therefore, much of the work of coding is learning how to quickly teach yourself how to do a specific task.

    The problem is, many professionals have built their workflow around dealing with coding's ridiculous abstractions. They establish a system of their own using heuristics.These tactics have become **standard operating proceedure**

    Which alienates new coders.

    The true difficulty in coding is the abstraction. Computers can do anything in 'cyberspace' in a sense...the only limits are our ability to describe commands with language!It's **contextuallizing** that total openness into a 'language' for human users to write commands for the computer to execute

    So, to sum up, my theory is that writing code requires that the coder develop their own mental heuristic to overcome the natural limitations in the coding language in use.

    "yes, duh" you might be saying...and that's why this matters in relation to TFA

    Coding is not fucking 'fun' because new users expect coding languages to be intuitive instead of random and abstract. They *expect* to use their proven inteligence and methods that work for other endeavors to work with coding.It doesn't.

    The answer to how to make coding "fun" and how to teach new coders so they retain interest is simple:

    BE HONEST UP FRONT about what the real work is...

    we need to stop pretending that us coders who have 'figured it out' have some magical intuition...it's all hammer-to-forehead slogging uphill...and finding cheats and shortcuts

    --
    Thank you Dave Raggett
  57. Re:interesting that a newbie is telling the world by Obfuscant · · Score: 1

    If he ever has to grok a medium sized project full of classes with "whimsical" names he may wish for clear, intuitive names.

    I read that part of the summary about "getting" to write whatever it was (get.chomped or something like that) and immediately yearned for a computer programming language where you could calculate pi to 300 places using the commands:

    maresy doats && dosey doats && liddle lamsey divey;
    akidlley divey 2;

    Wouldn't you?

  58. Re:interesting that a newbie is telling the world by K.+S.+Kyosuke · · Score: 1

    The books inspired Larry Wall to become a linguist and work at a job processing electronic communications, and that's how Perl was born.

    That almost sounds like the story of Morgoth.

    --
    Ezekiel 23:20
  59. Learned to write C first, loved it by YoungManKlaus · · Score: 1

    ok, I had a great teacher, so maybe thats part of it ;)
    But generally, when I wrote my C work I quickly got into a quite deep flow. In the other languages I wrote/write stuff in (Java and Python at Uni, now C# at work) it is much less so because you generally do much less low-level tinkering -> the feel is much more upbeat and less relaxed.

    On the other hand, the stuff that took me a weekend to write in C I could probably get done in an hour tops in any of those languages ;)

  60. workplace violence by raymorris · · Score: 1

    That would result in workplace violence.

  61. blah blah blah by Anonymous Coward · · Score: 0

    For crying out loud, the best way to get people interested in programming is by using paper and pencil...http://en.wikipedia.org/wiki/Finite_state_machine

    You don't have to deal with syntax errors, compilation, any of that pure BS. All you need is your imagination. If you told somebody to take two letters, and then draw a "game board" with circles and arrows so that you always ended on the "finish circle" whenever you have an even number of "letter 1", that would be all you needed to scratch the itch.

  62. Whimsy is definatly the way to go. by Jastiv · · Score: 1

    Whimsy is defiantly the way to go. Rename the variables into cute little things, make mini games, whatever you need to do to make it fun. Just because someone doesn't get it right away doesn't mean you should stop. Also, beginning by modifying small programs rather than programing from scratch can be a more fun and enjoyable way to learn. Once you know what you are doing, its much easier to do the boring stuff and the business problems, because you already know the basics of the syntax so you no longer get all hung up on that. It also helps a lot to have a nice text editor that highlights different code parts in different colors, and thus makes it much easier to find bugs. Now that I'm more advanced, I don't find myself relying on funny variable names or cute little programs to enjoy it anymore.

  63. Fun vs obligation by VolgaM · · Score: 1

    I am a starting Javascript developer. When I treat any task as an opportunity for self-development then the work becomes may be not very fun but at least meaningful.

  64. Re:interesting that a newbie is telling the world by Anonymous Coward · · Score: 0

    I have found that the name of _everything_ is really crucially important, from variables to classes to programs to directories to servers.

    Yes, it's cute when your servers are named "Kirk", "Spock", etc., but how much more self documenting when they are named "SQL1", "SYSLOGGER", or at least something remotely representative of what they actually do.

  65. Nokogiri, not Nikogiri by Anonymous Coward · · Score: 0

    How does he require the gem if he can't even spell it?