Beta

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Learning To Code: Are We Having Fun Yet?

timothy posted about 10 months ago | from the 10-sin-20-go-to-hell dept.

Programming 226

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

cancel ×

226 comments

Sorry! There are no comments related to the filter you selected.

It's all about keeping interest (5, Insightful)

YttriumOxide (837412) | about 10 months ago | (#44922795)

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.

Re:It's all about keeping interest (-1)

Anonymous Coward | about 10 months ago | (#44922849)

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.

Re:It's all about keeping interest (5, Insightful)

YttriumOxide (837412) | about 10 months ago | (#44922885)

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.

Re:It's all about keeping interest (5, Interesting)

CountJoe (466631) | about 10 months ago | (#44923489)

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.

Re:It's all about keeping interest (2)

cascadingstylesheet (140919) | about 10 months ago | (#44923573)

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.

Re:It's all about keeping interest (1)

Anonymous Coward | about 10 months ago | (#44922957)

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.

Re:It's all about keeping interest (2)

Brit_in_the_USA (936704) | about 10 months ago | (#44922977)

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.

Re:It's all about keeping interest (0)

Anonymous Coward | about 10 months ago | (#44923337)

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.

Re:It's all about keeping interest (0)

Anonymous Coward | about 10 months ago | (#44923391)

Andrei Alexandrescu - is that you?

Re:It's all about keeping interest (2, Interesting)

Xest (935314) | about 10 months ago | (#44923171)

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.

Re:It's all about keeping interest (2)

TapeCutter (624760) | about 10 months ago | (#44923383)

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.

Re:It's all about keeping interest (1)

mi (197448) | about 10 months ago | (#44923415)

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

Re:It's all about keeping interest (4, Insightful)

YttriumOxide (837412) | about 10 months ago | (#44923515)

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.

The classic (3, Insightful)

Anonymous Coward | about 10 months ago | (#44922799)

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.

Re:The classic (0)

Anonymous Coward | about 10 months ago | (#44923459)

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.

You're doing it wrong (1, Troll)

benjfowler (239527) | about 10 months ago | (#44922811)

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.

Re:You're doing it wrong (5, Funny)

ArcadeMan (2766669) | about 10 months ago | (#44922829)

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

Re:You're doing it wrong (0)

Anonymous Coward | about 10 months ago | (#44922875)

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!

Re:You're doing it wrong (0)

Anonymous Coward | about 10 months ago | (#44922881)

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

Re:You're doing it wrong (3, Insightful)

K. S. Kyosuke (729550) | about 10 months ago | (#44922991)

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.

Re:You're doing it wrong (1)

ArcadeMan (2766669) | about 10 months ago | (#44923229)

Are you calling me a quack?

Re:You're doing it wrong (1)

Megane (129182) | about 10 months ago | (#44923537)

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

Re:You're doing it wrong (1)

Anonymous Coward | about 10 months ago | (#44923635)

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

Re:You're doing it wrong (1)

CastrTroy (595695) | about 10 months ago | (#44923661)

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.

Re:You're doing it wrong (1)

Anonymous Coward | about 10 months ago | (#44922857)

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.

Re:You're doing it wrong (1)

SJHillman (1966756) | about 10 months ago | (#44923021)

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.

Re:You're doing it wrong (1)

pmontra (738736) | about 10 months ago | (#44923109)

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.

Re:You're doing it wrong (0)

Anonymous Coward | about 10 months ago | (#44923283)

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

Re:You're doing it wrong (0)

Anonymous Coward | about 10 months ago | (#44923291)

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

Re:You're doing it wrong (1)

MightyYar (622222) | about 10 months ago | (#44923413)

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.

Re:You're doing it wrong (0)

Anonymous Coward | about 10 months ago | (#44923585)

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.

Steady state (1)

mikemarotta (2741889) | about 10 months ago | (#44922817)

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.

Re:Steady state (1)

OakDragon (885217) | about 10 months ago | (#44923215)

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.

Coding on Windows (3, Funny)

ArcadeMan (2766669) | about 10 months ago | (#44922823)

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

Re:Coding on Windows (3, Funny)

serviscope_minor (664417) | about 10 months ago | (#44922883)

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 [mit.edu] ?

Re:Coding on Windows (-1)

Anonymous Coward | about 10 months ago | (#44922971)

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

Re:Coding on Windows (1)

ArcadeMan (2766669) | about 10 months ago | (#44923239)

Dead, but not forgotten.

Re:Coding on Windows (0)

Anonymous Coward | about 10 months ago | (#44923461)

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?

Re:Coding on Windows (2)

Megane (129182) | about 10 months ago | (#44923559)

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

Head First (1)

Terry95 (2690775) | about 10 months ago | (#44922839)

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.

Re:Head First (1)

bickerdyke (670000) | about 10 months ago | (#44923001)

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

Ugh, I hated Why's Guide... (4, Interesting)

Anonymous Coward | about 10 months ago | (#44922867)

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.

Re:Ugh, I hated Why's Guide... (0)

Anonymous Coward | about 10 months ago | (#44923717)

Oblig: You must be fun at parties.

interesting that a newbie is telling the world how (5, Interesting)

raymorris (2726007) | about 10 months ago | (#44922897)

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

Re:interesting that a newbie is telling the world (2)

SJHillman (1966756) | about 10 months ago | (#44923039)

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

Re: interesting that a newbie is telling the world (1)

techprophet (1281752) | about 10 months ago | (#44923191)

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.

Re:interesting that a newbie is telling the world (5, Interesting)

Speare (84249) | about 10 months ago | (#44923327)

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.

a different perspective (2)

buddyglass (925859) | about 10 months ago | (#44922899)

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.

Re:a different perspective (0)

Anonymous Coward | about 10 months ago | (#44923499)

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.

It's all about fun (2, Interesting)

X10 (186866) | about 10 months ago | (#44922905)

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.

Re:It's all about fun (1)

Anonymous Coward | about 10 months ago | (#44922973)

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

Re:It's all about fun (5, Funny)

SJHillman (1966756) | about 10 months ago | (#44923055)

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?

Translation (4, Insightful)

Anonymous Coward | about 10 months ago | (#44923059)

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.

Re:Translation (3, Insightful)

Greyfox (87712) | about 10 months ago | (#44923493)

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 have. And it's getting worse. (0)

Anonymous Coward | about 10 months ago | (#44923665)

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.

Re:It's all about fun (1)

jhol13 (1087781) | about 10 months ago | (#44923223)

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

Re:It's all about fun (0)

Anonymous Coward | about 10 months ago | (#44923289)

you?

Re:It's all about fun (0)

Anonymous Coward | about 10 months ago | (#44923353)

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

Indian outsourcing companies

What would Dilbert say? (0)

Anonymous Coward | about 10 months ago | (#44923417)

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

"Programming medicine" (1)

oldhack (1037484) | about 10 months ago | (#44922919)

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.

No silver bullet (1)

Anonymous Coward | about 10 months ago | (#44922925)

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.

I've had some fun reading (1)

Anonymous Coward | about 10 months ago | (#44922933)

http://learnyouahaskell.com/ [learnyouahaskell.com]

LPMUD! (4, Interesting)

Mirar (264502) | about 10 months ago | (#44922937)

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

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

Re:LPMUD! (1)

beowulfcluster (603942) | about 10 months ago | (#44923041)

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.

Re:LPMUD! (0)

Anonymous Coward | about 10 months ago | (#44923143)

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

Human-readable code (0)

Anonymous Coward | about 10 months ago | (#44922941)

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.

The right tools, language, and project (4, Insightful)

rcs1000 (462363) | about 10 months ago | (#44922943)

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 [raspberrypi.org] 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 [coronalabs.com] is fairly mature and works with both Android and iOS. For a web app, there are a few more options, of which PythonAnywhere [pythonanywhere.com] 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.

It's why I love Perl (2)

happy_place (632005) | about 10 months ago | (#44922945)

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.

Re:It's why I love Perl (0)

Anonymous Coward | about 10 months ago | (#44923119)

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.

Re:It's why I love Perl (1)

stormpunk (515019) | about 10 months ago | (#44923245)

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.

Re:It's why I love Perl (2)

Andover Chick (1859494) | about 10 months ago | (#44923297)

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

Programming in a Nutshell (1)

TechNeilogy (2948399) | about 10 months ago | (#44922951)

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

I teach my kids Perl (1)

Andover Chick (1859494) | about 10 months ago | (#44922963)

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.

To much College mindset. Need more trade school (1)

Joe_Dragon (2206452) | about 10 months ago | (#44922989)

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.

Make stuff happen (3, Interesting)

Murdoch5 (1563847) | about 10 months ago | (#44923015)

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.

Re:Make stuff happen (1)

TangoMargarine (1617195) | about 10 months ago | (#44923433)

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

Re:Make stuff happen (3, Insightful)

Murdoch5 (1563847) | about 10 months ago | (#44923691)

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.

Great Another Crappy Coder Is Born (1)

Anonymous Coward | about 10 months ago | (#44923017)

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

Anyone can write code... (1)

pietromenna (1118063) | about 10 months ago | (#44923031)

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.

BASIC (1)

Anonymous Coward | about 10 months ago | (#44923035)

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

Stupid premise, stupid code (4, Insightful)

shellster_dude (1261444) | about 10 months ago | (#44923063)

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

Re:Stupid premise, stupid code (0)

Anonymous Coward | about 10 months ago | (#44923453)

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

Re:Stupid premise, stupid code (2)

Andover Chick (1859494) | about 10 months ago | (#44923663)

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

Re:Stupid premise, stupid code (2, Insightful)

Anonymous Coward | about 10 months ago | (#44923475)

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.

Re:Stupid premise, stupid code (0)

Anonymous Coward | about 10 months ago | (#44923529)

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.

Re:Stupid premise, stupid code (1)

Necronomicode (859935) | about 10 months ago | (#44923601)

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

Re:Stupid premise, stupid code (1)

Greyfox (87712) | about 10 months ago | (#44923673)

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.

Go ahead, re-invent that wheel (4, Insightful)

ggraham412 (1492023) | about 10 months ago | (#44923181)

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.

Re:Go ahead, re-invent that wheel (0)

Anonymous Coward | about 10 months ago | (#44923231)

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

Re:Go ahead, re-invent that wheel (1)

Necronomicode (859935) | about 10 months ago | (#44923703)

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.

Re:Go ahead, re-invent that wheel (0)

Anonymous Coward | about 10 months ago | (#44923399)

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.

Re:Go ahead, re-invent that wheel (5, Insightful)

tuffy (10202) | about 10 months ago | (#44923615)

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.

It should be as fun as writing a book (1)

WillAdams (45638) | about 10 months ago | (#44923213)

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

Scratch (0)

Anonymous Coward | about 10 months ago | (#44923343)

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.

Trend of the day (1)

jones_supa (887896) | about 10 months ago | (#44923393)

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.

So Many (2)

denmarkw00t (892627) | about 10 months ago | (#44923471)

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.

Re:So Many (0)

Anonymous Coward | about 10 months ago | (#44923609)

What kind of projects have you completed?

Re:So Many (1)

denmarkw00t (892627) | about 10 months ago | (#44923647)

Horrible, disgusting things. Think "real estate."

Fun Joy Beauty (4, Insightful)

John Allsup (987) | about 10 months ago | (#44923619)

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.

Ruby is superb (0)

Anonymous Coward | about 10 months ago | (#44923695)

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.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?
or Connect with...

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>