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?"

47 of 226 comments (clear)

  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 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.

    3. 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.

    4. 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.
    5. 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.

    6. 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
    7. 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.

    8. 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...
    9. 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.

    10. 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.

    11. 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
    12. 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.

  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.

  3. 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 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; }
  4. 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

  5. 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.

  6. 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

  7. 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.

  8. 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 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?

  9. 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...

  10. 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
  11. 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 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.

  12. 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
  13. 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 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.

  14. 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.

  15. 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?

  16. 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: 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.

    2. 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...

    3. 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.
  17. 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 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.

  18. 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 ]
  19. 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.

  20. 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
  21. 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.
  22. 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.

  23. 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.

  24. 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.

  25. 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...