Slashdot Mirror


Ask Slashdot: Can an Old Programmer Learn New Tricks?

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

10 of 306 comments (clear)

  1. Practical application is the only way by Karmashock · · Score: 5, Interesting

    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.

    --
    I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
    1. Re:Practical application is the only way by VortexCortex · · Score: 5, Interesting

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

    2. Re:Practical application is the only way by Applehu+Akbar · · Score: 5, Insightful

      Now for the unprogrammable task: try to convince management that you can still code after 40.

  2. what you need them for? by gl4ss · · Score: 5, Interesting

    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.

    --
    world was created 5 seconds before this post as it is.
    1. Re:what you need them for? by gweihir · · Score: 5, Insightful

      I agree on the framework quality. Also, their primary use is to allow people that cannot program well to get something done (badly). Last time I looked at a Java-Framework, I came to the conclusion that using it is a gross violation of all standards of professional code generation. One effect is that it takes people months before they can do even simple things.

      Fortunately, my current project requires speed and efficiency, so no frameworks, but raw C from the ground up. (Libraries like OpenSSL or PCRE are fine.) The project before that I used Python as glue and C as worker. Still no frameworks.

      Personal recommendation: Avoid frameworks. They create far more problems than they solve. And they slow everything down.
       

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:what you need them for? by hattig · · Score: 5, Informative

      And which framework was that? If it's targeted at "enterprise" use, then speed and efficiency won't be one of its core features, not with runtime annotation processing...

      For example, Apache Wicket is a gross bloated thing to avoid the "horror" of learning how to program a web UI in JS that communicates with the backend server using sane RESTful APIs. OTOH it saves you from writing those APIs and keeps your codebase in a single object oriented language.

      Hibernate is a gross-but-cool thing that saves the developer from touching JDBC. It's overhead pales in comparison with the network latency/RTT and database effort though, and it allows the programmer to again do database operations at a decent OO high level. Personally, I prefer JDBC but that can end up with a lot of boilerplate code to do simple operations. But OTOH you could end up with dodgy DB code, failure to try/catch/finally properly, etc. HQL can DIAF.

      And Spring ... Spring does everything. Dependency injection is a major advantage (until you use it, you might wonder why your "EntityManager" class is not good enough), interceptors, etc. Ignore the MVC crap, that's old hat.

      And tooling is another thing. Maven is essential for the Java developer today. Until I used it, I was happy with Ant and manually updating dependencies. Selenium is an essential web UI integration test tool too. Anything that makes testing, integration testing, etc, easier should be welcomed with open arms. Team-based development is a recipe for breaking code contracts in multiple places.

      There are a lot of new tricks that a programmer that has stayed in a comfortable role for a long time could have missed, and find problems when looking for a new job. Luckily, a good C programmer is unlikely to be applying for Java roles, and roles are often now in the embedded marketplace where frameworks are less common over raw C with common libraries.

      And there will be plenty of people that disagree with everything I've written. The joy of programming, eh?!

  3. Specialism by Anonymous Coward · · Score: 5, Interesting

    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.

  4. No by phantomfive · · Score: 5, Informative

    Am I just too old and too set in my ways to learn something new?

    No. This question> comes up all the time on Slashdot.

    Honestly, from your description (which is too short to be certain, of course), and based on other programmers I've known with similar symptoms, you give up too easily, and that is your problem. Every programmer eventually runs into something that is hard. The key is to keep at it until you understand. Read through the Javadocs for Java until you understand how they are organized. Or whatever framework you want to learn.

    It's primarily a matter of not giving up until you have it learned.

    --
    "First they came for the slanderers and i said nothing."
  5. It's Never Too Late! by buchalka · · Score: 5, Interesting

    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!

    --
    Games Programmer And Designer
  6. It's okay to be tired of programming by neiras · · Score: 5, Insightful

    Years ago I actually burnt out. I felt like I couldn't learn anymore. I kept sitting down in front of my editor and going through the motions, wondering where the inspiration was, never able to click into the zone, chasing focus, being unproductive.

    I took three years away from code. I got married and started a family. I worked at a relative's construction company. At first I had to force myself not to think about tech. Then I found myself actually forgetting about it because I was doing other interesting stuff. Eventually I realized I needed some software to do something, so I sat down to build it and the old joy was back. Everything felt fresh again.

    Recommend you take a break and do something completely different - for years if necessary. You only live once. You might come back to software, you might not. Do what's right for you. The programming world will still be here rediscovering old design patterns and handwaving about the latest development process fads if you choose to get back into it.