Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^3: Worst blog post ever on teaching programming

by adrianh (Chancellor)
on Apr 04, 2006 at 09:20 UTC ( [id://541100]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Worst blog post ever on teaching programming
in thread Problematic post on teaching programming

When they get to the real world, they'll learn that no one else cares about CS theory. No one else cares about whether P=NP. They just want the billing system to run, the accounting ledgers to add up, and the reports to look pretty, with colourful graphs that show the wiggly line going upward. If you do what the rest of the world needs, you get paid; if you don't, you don't.

True.

Of course sometimes knowing about N=NP, big O notation, etc. is exactly what you need to get the job done.

I've encountered my fair share of fresh CS graduates who think they know everything and are terrible at their job. The thing is I've also encountered my fair share of non-graduates who've been working in the industry for years and think they know everything and are terrible at their job. I think a lot of this has to do with the person - rather than whether they come from an academic or industry background.

Universities are largely in the business of training grad students to become professors; any other education they provide is mostly just incidental.

Back when I was at uni I remember being taught tons of purely "academic" content. People I knew who were working in industry told me I'd never use it in the real world. Silly things like object orientation, virtual machines and garbage collection.

I certainly don't think a university education provides you will all of the skills needed to do the job. I'm actually glad that they don't since I don't think universities should be in the job of just vocational education. They do provide a bunch of useful skills though. IMHO as ever ;-)

  • Comment on Re^3: Worst blog post ever on teaching programming

Replies are listed 'Best First'.
Re^4: Worst blog post ever on teaching programming
by Anonymous Monk on Apr 05, 2006 at 18:55 UTC
    Of course sometimes knowing about N=NP, big O notation, etc. is exactly what you need to get the job done.

    When? Academic learning isn't at all bad, but those two examples are a very poor choice. Measuring computational complexity at all well requires far more than order notation (and perhaps more than graduate level computational complexity theory). Performance modeling remains a poorly understood and active field of research, and the gains are being made quite slowly.

    So in practice, the concept of "P vs NP", and order notation are largely useless. "Polynomial space/time" explodes quadradically for a polynomial as low as two! The choice of P vs NP boils down to "too slow to be workable" versus "really too slow to be workable". The exception, of course, if the constants are nice, and N is small enough to be workable: but that's exactly what order notation and most computational complexity theory ignores in the first place!

    Personally, I found that while academic learning is interesting, it's rarely useful. It's nice that you can write your own compiler, but your job will involve producing graphs and reports, not writing compilers. And when and if some of that deep, complex academic learning is required, your company will just hire a PhD: so unless you're willing to give your life to CS theory, there's no great benefit to a mere undergrad degree. Perhaps that's why there's so many open source languages: people desperate to find an excuse to write their own compiler, now that they've wasted thousands of dollars learning how!

    One guy I worked with was so desperate to do something "academic" with his job that he wrote his own recursive descent parser ... for a configuration language that he invented himself ... for an EBICDIC to ASCII translator ... which only needed a very limited set of options ... and which never actually changed. But hey, he got to be all "academic"; and now I've got a tonne of painfully useless code to untangle if I ever have to maintain his over-engineered monstrosity.

    Back in school, I took a lot of courses in things like multidimensional calculus, vector algebra, and group theory. None of it is terribly useful for producing billing reports and the other assorted drudge work that actually pays the bills. In some sense, I understand why my co-worker decided to waste company funds on his wierd design; but I certainly can't condone it.

    In any case, I've been left with a distaste for breathless undergrads, and people who think that "more complicated is better", or people who think "new is better": most of the time, the boring, obvious encoding is the most maintainable encoding, and when it's not, you can at least understand what was done, and slot in your clever little algorithm where it's needed.

    --
    Ytrew

      So in practice, the concept of "P vs NP", and order notation are largely useless.

      I've not found this to be so. For example I can remember one instance of a problem that, in a blinding flash of the obvious, could be mapped onto an NP problem - which immediately told us that we wanted to be doing something like simulated annealing to give us a reasonable answer in a reasonable time.

      Use big O notation all of the time when I did work in the financial sector. Very handy in giving us clues on how things will scale up on very large data sets.

      Personally, I found that while academic learning is interesting, it's rarely useful. It's nice that you can write your own compiler, but your job will involve producing graphs and reports, not writing compilers.

      Depends on your job. I've been paid to write compilers several times during my career. The ones I did after my undergrad compiler course were a lot better than the ones I wrote before it ;-)

      In any case, I've been left with a distaste for breathless undergrads, and people who think that "more complicated is better", or people who think "new is better": most of the time, the boring, obvious encoding is the most maintainable encoding, and when it's not, you can at least understand what was done, and slot in your clever little algorithm where it's needed.

      s/undergrads/youngsters/ and I'll agree with you 100%. For me its a symptom of age and experience rather than an academic or industry background.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://541100]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (5)
As of 2024-04-19 06:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found