Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?

Ask Slashdot: Can an Old Programmer Learn New Tricks? 306

An anonymous reader writes "I have been programming in some fashion, for the last 18 years. I got my first job programming 15 years ago and have advanced my career programming, leading programmers and bringing my technical skill sets into operations and other areas of the business where problems can be solved with logical solutions. I learned to program on the Internet in the 90s.. scouring information where ever I could and reading the code others wrote. I learned to program in a very simple fashion, write a script and work your way to the desired outcome in a straight forward logical way. If I needed to save or reuse code, I created include files with functions. I could program my way through any problem, with limited bugs, but I never learned to use a framework or write modular, DRY code. Flash forward to today, there are hundreds of frameworks and thousands of online tutorials, but I just can't seem to take the tutorials and grasp the concepts and utilize them in a practical manner. Am I just too old and too set in my ways to learn something new? Does anyone have any recommendations for tutorials or books that could help a 'hacker' like me? Also, I originally learned to program in Perl, but moved onto C and eventually PHP and Python."
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Can an Old Programmer Learn New Tricks?

Comments Filter:
  • by Karmashock ( 2415832 ) on Tuesday March 18, 2014 @03:13AM (#46513983)

    You have 18 years of learning by doing.

    Classes and tutorials are not what got you there. You did things.

    Name a program you could make in C or perl that you know well. Now try one of the new languages you wish to learn and set the goal of making that program in that language.

    Then do it.

    You'll have to look up syntax etc for every little operation. But you'll learn. And once you know how to do that you'll have the confidence and core knowledge to bootstrap yourself further.

  • by gl4ss ( 559668 ) on Tuesday March 18, 2014 @03:15AM (#46513987) Homepage Journal

    maybe that's your problem. just taking a framework and using it for nothing leaves you with nothing.

    most "frameworks" are just gobbled up shit anyways, quite often now consisting of other frameworks which consist of other frameworks and so you end up with something that serves a tcp/ip connection, serves 100kb of files but somehow manages to take up 300mbytes of disk space and 600mbytes of ram...

    so whats a hip framework today? is it hip because it's actually good? unlikely. as proof just check what was hip and cool 10 years ago, 9 years ago and so forth.

  • Specialism (Score:5, Interesting)

    by Anonymous Coward on Tuesday March 18, 2014 @03:22AM (#46514003)

    I'm in about the same situation, except that I'm not 100% autodidact (I *did* learm programming at school, back in the 1970's), and I sometimes feel the same.

    There's one observation though: we've got a number of 'junior programmars' here, fresh from school.
    They're all extremely good at what they do, much better at using a framework than I am, but at the same time they're not even competent in stuff I consider elementary.

    Among them are 4 (four) Flash developers. As a test, when we moved to another building and they all got new computers last year, I made them configure their mail reader (MS Outlook) by themselves. Just gave them each a piece of paper with everything they needed, set them loose, and observed.
    One immediately came back asking for help, and two of the others wouldn't have got it working without assistance from the fourth.

    Those same four are proficient in Perforce (source management) because they were taught how to use that that at school, and when they were hired, the person who hired them (who left the company since) installed a Perforce server especially for them. When I tried to make them switch over to Subversion because that's what I and everyone else uses here, three out of four complained that it was too difficult. Even with Tortoise as a client.

  • It's Never Too Late! (Score:5, Interesting)

    by buchalka ( 416106 ) <tim@MOSCOWbuchalka.com minus city> on Tuesday March 18, 2014 @03:35AM (#46514039) Homepage

    I've been a programmer (mostly) for the past 25 + years.

    At 16 I wrote my first computer game, love it and then... Stopped.

    Used Fortran, Cobol and stuff and eventually Java Enterprise stuff.

    Realised I HATED IT!!

    At 46 decided games were my passion (should have continued from my first game at 16).

    Fast forward 3 years I feel proficient in Objective-C, Cocos2D and other game frameworks - I absolutely love it. 3 published games later and a pile of other stuff - Having the time of my life.

    Do what you love is all I can say to anyone readying this.

    And if you want to learn IOS there is NO BETTER COURSE out there (yeah I like capital letters) than the free Stanford CS193P course on iTunes - Google it.

    Paul Hegarty rocks as an instructor.

    Embrace it, I am living proof its never too late!

  • by AccUser ( 191555 ) <mhg@tao s e . c o.uk> on Tuesday March 18, 2014 @03:36AM (#46514043) Homepage

    I started to learn programming at the age of 11, and two years later had a 'summer job' writing software for a contracting firm in central London. That was in 1984. I'm now 43 years old, and am still learning new things. I stopped contracting a couple of years ago for a simpler life, and my software development is more about scratching my itch rather than a clients, and it is certainly more interesting that way. If you're not motivate to learn something new just for the sake of it (I'm a big fan of Duolingo and Khan Academy) then you're going to have to find that itch for yourself.

  • by Chrisq ( 894406 ) on Tuesday March 18, 2014 @04:19AM (#46514173)

    Name a program you could make in C or perl that you know well

    Actually I think you should take this a step further, not just taking a program you could write, but one you have written already. This turns the exercise from a programming-from-scratch to a porting one: All logical problems were solved when you wrote the original version. Now you can concentrate on the details of the new language/framework/whatever.

    This will work well except when you are switching to a new programming paradigm. If you rewrite a program you originally wrote in a procedural language in a mixed or object oriented language (python, java, scala, ruby, etc.) you will have to work very hard not to code a procedural solution. Similarly with a functional language - but you are more likely to struggle to write something procedural in haskel or ocaml.

  • Yes (Score:4, Interesting)

    by kevingolding2001 ( 590321 ) on Tuesday March 18, 2014 @04:34AM (#46514207)

    Yes, you can learn new tricks, but like everything else you have to work at it. I've been programming in some fashion for close to 30 years but I'm still learning new stuff all the time (getting employed on the basis of the new skills is a bit harder, but not giving up yet).

    If you are struggling to come to grips with frameworks, might I suggest that you are probably not getting 'why' they are written, or what they are trying to achieve. Not getting that means you are trying to memorize a whole bunch of stuff that doesn't seem to make any sense, and that is basically impossible.

    The easiest way to understand the 'why' of a framework is to start trying to write equivalent things yourself from scratch.

    Once upon a time I installed Django and worked through the tutorial. Admittedly I was pretty impressed with the inbuilt admin interface that you got for very little code, but beyond that it all seemed too long-winded and abstract for what I wanted to do. So I decided to not use Django and just write my own application directly using wsgi.

    I spent a day or two happily coding up a number of functional pages and a rudimentary menu system. Then I realized that some of my code was getting a bit unwieldy. Functions to parse the url and call the appropriate function were getting too long, and code that produced the output was starting to be duplicated in numerous places. I sat down and had a good think about how I could refactor stuff to be more maintainable when suddenly it hit me... "I'm re-writing Django (though much more poorly)".

    Once I realized that, and I understood the problems that Django was trying to solve it all suddenly made a lot more sense and I found it easier to get my head around it all.

  • wow (Score:5, Interesting)

    by Tom ( 822 ) on Tuesday March 18, 2014 @05:18AM (#46514337) Homepage Journal

    Someone broke Betteridge's Law [wikipedia.org]. That's quite a lot more interesting than the actual question, which is, of course, dumb.

    That only young people can learn is one of those myths that get debunked all the time and no one ever pays any attention. You know that bullshit about language and how children pick up languages (including their mother tongue) magically while adults struggle so much? Yeah, it's total bogus, in fact adults learn languages faster and better than kids with the same investment in time and dedication.

    The main difference is that young people in practice learn faster because they have little else to do. If you'd get the same exposure and personal teacher attention as a small kid does, you'd pick up a new language in half the time.

    So the real question is: How much time and effort are you willing to expend? Is it something you really want and are willing to spend a few hours a day on?

  • by Anonymous Coward on Tuesday March 18, 2014 @06:04AM (#46514467)

    most "frameworks" are just gobbled up shit

    Rubbish. Unless you're talking about some obscure amateur effort, but who's talking about that anyway? You could dismiss and problem-solving technique on that basis. Are you trying to say that he won't gain anything from the likes of Qt, .Net or Cocoa?

    Good frameworks exist and they're popular. Their worth is well proven. Why waste your time (and customer's cash) reinventing solutions?

    If the poster wants a taste of how a framework is used and structured, there are plenty of good online resources. For example, take a look at Stanford's iOS courses based on Cocoa – very comprehensive and free in iTunes U.

  • Burnout? (Score:2, Interesting)

    by Anonymous Coward on Tuesday March 18, 2014 @06:19AM (#46514507)

    It's possible that you are experiencing symptoms of burnout. I get this from time to time, I can't focus enough to learn new stuff. Try taking a few weeks off (at least evenings) and do something completely unrelated, like play video games or just concentrate on your sex/love life for a while. Eventually you'll be chomping at the bit to get back to the computer, and then you'll be fresh and better able to move your mindset onto unfamiliar ground.

    But you better believe that learning new stuff is the bread and butter of a programmer's career; you don't just stop, ever. I mean I've been programming since 1982 but only last year I learned the theory of Kalman Filters and this year I'm diving into some Support Vector Machine stuff, as well as ramping up on the PS4. Mind you, this is pure CS stuff; learning frameworks-du-jour has never really interested me all that much. This also may be an issue for you - you may suspect in the back of your mind that learning these modern frameworks is a waste of time, and you may be right ...

  • by maple_shaft ( 1046302 ) on Tuesday March 18, 2014 @07:36AM (#46514699)

    I love how the OP is asking about how to stay current with new languages and technologies that employ the programmers of today and tomorrow, and the best you can come up with is some working-class hero grey beard defamation and unfair characterization of the "bloated inefficient framework". You sound like a person that tried one framework with little guidance that turned out to be bad, or it turned out that you didn't like not having fine control over every byte of memory so you wrote them all off as being a bane to proper programming.

    It is sad and makes you sound really old and out of touch. Nothing in your post will help an older programmer stay current and will in fact do more to separate him from the rest of programmers and software developers that are gainfully employed and networking together. I would not hire you for my company, not because I don't think you are indeed a talented programmer which no doubt I am sure you are, I am sure you could teach a guy like me a number of things. I would not hire you because you sound like every prima donna perfectionist cowboy coder that refuses to compromise technically and quite frankly doesn't mesh well with a team. That one guy that is still coding in Vi and is still writing clever (hard to maintain) code when others are utilizing IDE's, writing explicitly clear and easy to debug code in a generation of cheap hardware. It is always better to use standard frameworks and accept a few limitations of those when you can find somebody off the street relatively quickly who can hit the ground running on a team and frankly not have to spend months deciphering a custom low level module for a specific OS.

    But that is okay if you feel the way you do after all. Walmart always needs more greeters.

  • Name a program you could make in C or perl that you know well. Now try one of the new languages you wish to learn and set the goal of making that program in that language.

    My GOTO program for this is Tetris.

    It has everything from input to timing to graphics, audio, network state synchronization, even custom asset data storage of the shapes or push notification of high scores. You can make it in everything from Ada to Brainfuck, on any output from printed paper to LEDs connected to a parallel port, from the command terminal to 3D data visualizers. The state is minimal enough to manage in 100 DWORDS, but complex enough to learn the efficiencies of joins, etc. in a SQL DB.

    It's simple enough to code in a few thousand chars, yet can cover all the bases esp. if you factor in "cheat prevention" (read: server side validation and user authentication).

    In my experience the older you get the more efficient you are at learning a new platform. Programming becomes a meta task of translating solutions into the platform's problem space. Do it long enough and you'll end up writing your own compiler for a meta language so that you can simply add a new platform "runtime" to the supported target language lists, check off which subsystem to output in what language, and deploy existing solutions faster than these noobs can say "expressive"...

  • Re:Specialism (Score:4, Interesting)

    by fuzzyfuzzyfungus ( 1223518 ) on Tuesday March 18, 2014 @07:46AM (#46514711) Journal
    "Among them are 4 (four) Flash developers. As a test, when we moved to another building and they all got new computers last year, I made them configure their mail reader (MS Outlook) by themselves. Just gave them each a piece of paper with everything they needed, set them loose, and observed. One immediately came back asking for help, and two of the others wouldn't have got it working without assistance from the fourth."

    What surprises me most about that is not so much that they aren't familiar with Outlook configuration (webmail has butchered general knowledge that 'email' is even something that you don't just get from a website, and Outlook's heaviest presence is in corporate/institutional where IT tends to automagic as much of that as they can, lest they have to walk you through it.); but that someone of their demographic (junior, recent graduates, presumably comparatively young) wouldn't Just Fucking Google It before asking a potentially embarrassing question. Especially given that googling around a bit is more or less the standard response to a situation where documentation is lacking or unclear on some programming matter.

    The fact that they lacked specific knowledge of a given mail client isn't too surprising(though Outlook isn't rocket surgery, so failure to figure it out is a little weirder); but how does somebody make it through programmer school without picking up on the fact that the internet is a repository of many secrets and asking it can save you a lot of time and trouble?

How many NASA managers does it take to screw in a lightbulb? "That's a known problem... don't worry about it."