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

306 comments

  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 busstop · · Score: 3, Insightful

      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.

      --
      -- ... end of sig
    2. Re:Practical application is the only way by Chrisq · · Score: 4, Interesting

      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.

    3. Re:Practical application is the only way by gl4ss · · Score: 2

      but the new frameworks aren't for that.

      they're for essentially reconfiguring a program someone else made and scripting some additional functionality into it. maybe he should instead try something like QT, instead of all the myriad openmonoraildjangobangopingoflexs's that are out there and in "demand" (there's no ruby jobs out there but plenty of RoR jobs oddly enough)..

      I'm pretty sure he would have no problem picking up android or windowsphone programming either(and both are arguably "frameworks" too).

      --
      world was created 5 seconds before this post as it is.
    4. Re:Practical application is the only way by gbjbaanb · · Score: 1

      amen to that.

      I'm a C/C++ dev by history as I've been dong this shit for ages and today its all C# , so to learn this new stuff I browse around the information about the language from sites including /. and then stepped into trying it out for a semi-real project (ie a tool to do some DB updates). Turned out to be really easy and now I can do the C# stuff with just the usual amount of googling (as whatever you do in C# its all bloody different thanks to MS changing stuff all the time, and partly because I just can't be arsed to remember all this crap anymore :) )

      So, just stop whining about how difficult everything is and get stuck in. You can't be any worse at doing it than most of the kids who call themselves experts in various languages because they can code up hello world.

    5. Re:Practical application is the only way by Lumpy · · Score: 3, Funny

      Exactly. Old C programmer here, it took me exactly 8 days to learn coding for OSX and iOS. It's just wrapping your head around things. and don't be afraid of saying ,"what nimrod thought that was a good idea" at times, because I see a lot of idiocy inside the frameworks.

      I also chuckle at things when I see what amounts to devolving to perl obscurity in a lot of the new stuff. People trying to save keystrokes and sacrifice readability, damn kids get off my libraries and frameworks.

      --
      Do not look at laser with remaining good eye.
    6. Re:Practical application is the only way by Hognoxious · · Score: 4, Insightful

      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.

      That might happen if you try to translate it routine by routine. The result will be similar to if you translate a text using only a dictionary; as my Latin teacher used to say, "Don't translate the words, translate the ideas."

      The right way is to treat the version in the old language as a specification or a reference version.

      P.S. Avoid the temptation of adding fixes, enhancements etc, at least until V1.0 is done; if you're going to drift off the model, you might as well say sod it and make something new.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    7. 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"...

    8. Re:Practical application is the only way by DarkOx · · Score: 1

      I mostly agree with this. One of the first things I do approaching any new language is port some of my little personal utilities to it.

      You need to be careful here about a few things. One you need to pick a project of adequate complexity so you actually explore the new languages feature set. You need to make sure you are architecture where necessary to use the canonical design patterns and practices in the new language. Could you do a pretty much line by line port of a C program to Python or Ruby? Yes. but it would in most cases be wrong, you'd probably want to re-organize the program from data storage perspective into OO; unless you had designed an object model in the C version. Finally you want to use the correct idioms, most languages have a C style for loop but it isnt necessarily the recommended way.

      Its worth skimming through one of those teach your self XX in 24 hours books just so you are aware of the style conventions etc before you get started.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    9. Re:Practical application is the only way by davecb · · Score: 1

      After the first "new" language, it gets easier. In my university they did a course to get us past the bad p[art of the learning curve. They had us writing the same programs in FORTRAN, APL and LISP. Today they'd be doing C, Java and Prolong (:-))

      --
      davecb@spamcop.net
    10. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      In addition: it's not you, it's the framework; most are designed in a brain-dead manner.

    11. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      I mostly agree with this. One of the first things I do approaching any new language is port some of my little personal utilities to it.

      I have the need for little utilities all the time. For me, the way to get into a new language is to use it the next time I need a utility.

    12. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      That's pretty much what I've done every time I am trying to learn a new language or paradigm. I have a program that implements CRUD, network connectivity, etc. - the basics - and I take that as my spec, re-implementing it in the new language/paradigm using the best practices for that language/paradigm.

      It's a really good way to be able to not just hack something out that works, but to be able to get something that works and will let you work well with other devs.

    13. Re:Practical application is the only way by SQLGuru · · Score: 2

      This, but also get a mentor. I more or less took a guy through this type of exercise and had him rewrite the same application four times to teach various concepts. But by being his mentor, he was able to grok the design considerations of the new technology to even know what to look up......

      Rewriting an app the same way you always have but in a new platform doesn't teach you the best practices and new approaches. And not having the knowledge or experience to know the better ways makes it really hard to search for them. A mentor's job is to point you in the right direction.

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

    15. Re:Practical application is the only way by datavirtue · · Score: 1

      whoosh....this is not a real person....it is a snippet from the "get traffic/comments" archive

      --
      I object to power without constructive purpose. --Spock
    16. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      > but you are more likely to struggle to write something procedural in haskel or ocaml.
      If he wants to learn something useful, I'd steer clear of haskel and ocaml

      https://xkcd.com/1312/

    17. Re:Practical application is the only way by zakkudo · · Score: 1

      This. Force yourself to to turn your program into a lib and a front end or two. I have a console frontend and a gtk frontend for my app. Even if you force yourself to give your program a frontend in multiple toolkits like qt/gtk/cocoa, you will learn a *lot* about writing modular code. Just make sure you are keeping an eye out for creating an API.

    18. Re:Practical application is the only way by Chelloveck · · Score: 4, Funny

      My GOTO program for this is Tetris.

      Dude, don't you know by now that GOTO is considered harmful? And you call yourself a programmer!

      --
      Chelloveck
      I give up on debugging. From now on, SIGSEGV is a feature.
    19. Re:Practical application is the only way by jafac · · Score: 1

      This can be the most difficult task, depending on the people in your area/work etc. I've been in a couple of different places, and I can't really say how there is a pattern to this, but there are some work-environments where nobody will be interested in being a mentor. This type of environment is filled with cowboy-coders and NIH-mentality, who know how to look like they are "team-players" but really are only out for their own individual glory. They seem to gravitate to certain organizations. Other places I've worked, I've found a completely different culture, where this sort of attitude just doesn't thrive. But if you're in a place that fosters this kind of mentality, it's almost impossible to find a mentor. And over years, you'll tend to get tasking that fits your skillset, which tends to keep you in a little box, career-wise. Don't get trapped in that box. . .

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    20. Re:Practical application is the only way by TsuruchiBrian · · Score: 1

      There was a period when almost every programmer had to develop all their own paradigms. It's not surprising that even the best programmers at that time developed some suboptimal habits. One of the best innovations was making it hard for people to do bad things. It turned bad programmers into people who could actually kind of make things that sort of work, and good programmers into supermen. Not everyone wanted to use these new tools. And employers gradually figured out that they didn't want to hire people unwilling to use tools that made them more productive. There was a time when most of these people were in the "over 40" group. That group has been getting older and older. Even the stubborn people over 40 have been successfully correctly brainwashed into using most of these tools. The old "over 40" crowd is now "over 50".

      As an analogy, look at old doctors. They are not bad doctors. Doctors that learned medicine before the germ theory of disease, if they were alive today, would probably suck. It's not how old you are. It's about whether you've missed some key revolution in your field due to your age and are also unwilling to adapt.

    21. Re:Practical application is the only way by SQLGuru · · Score: 1

      I've always mentored people because I don't want to be a star among numpties; it is harder to judge my true worth. I want to be the best player on the all-star team. The only way to do that is to make sure everyone around me is as good as they can be......and to stay ahead of them.

    22. Re:Practical application is the only way by Etrahkad · · Score: 1

      Now apply unit testing. Start by making unit tests for current functionality so when you are refactoring, the same outcome exists each step of the way. It's like the paradigm of fail fast, fail often, test fast, test often. When refactoring code into better units of work one must refactor into conceptual entities rather than refactor functions. Separate the logic from the factory so to speak.

    23. Re:Practical application is the only way by theshowmecanuck · · Score: 1

      A good example of this is from back in the day, people trying to learn C++ after being a C programmer. It was very common to write bastardized C programs with C++ syntax. Mostly because C++ doesn't force you to write object oriented. I found it easier to learn Java first then go back and learn C++, because you had to understand OO better to write Java.

      --
      -- I ignore anonymous replies to my comments and postings.
    24. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      Latin?! Never heard of it. Is it some old-time language like LISP or ALGOL?

    25. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      If you ever stop learning you are not one of ‘us’, busstop is correct.

      When I decide to learn a new language I go back to what I wrote before and do it again. If it was good enough to write once, it is good enough to redo. This gives you the advantage of knowing what you want (design and justification) and just using the new language to implement it (implementation and test). You make rapid progress in getting something useful out of your learning and you als get a good feel for why and what the differences between languages are. You can then try to re-implement the code in a new way (take something non-OO and make it so).

      Doing this allows you to use you experience to accelerate learning as you know algorithmns, testing, etc you just learn a new way of looking at the problem.

    26. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      Hah, you're a noob who is afraid of a JMP... pathetic.

    27. Re:Practical application is the only way by rk · · Score: 1

      I'm tempted to say "you misspelled Prolog" but since I've used Prolog, I think I'm actually the one misspelling it and your spelling is indeed more accurate.

    28. Re:Practical application is the only way by davecb · · Score: 1

      We had a standing joke about a "prolong machine", that you could start running and transfer it to a rack in the back room, to be checked once a month to see if it terminated (;-))

      --
      davecb@spamcop.net
    29. Re:Practical application is the only way by David+Gould · · Score: 1
      --
      David Gould
      main(i){putchar(340056100>>(i-1)*5&31|!!(i<6)<< 6)&&main(++i);}
    30. Re:Practical application is the only way by Karmashock · · Score: 1

      management looks to programmers to do things. When programmers get old they often get tired and slow. That is when management starts getting the blades sharpened.

      Its too bad because most programmers after a long career are at least suited to move up into management themselves if only overseeing other programmers.

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

      It is a module for perl -- www.csse.monash.edu.au/~damian/papers/HTML/Perligata.html

      --
      Just because you are paranoid does not mean that no-one is out to get you.
    32. Re:Practical application is the only way by qpqp · · Score: 1

      That was a fun read, thank you!
      The chosen problem is easily solved by throwing an exception, or using a return these days, though.

    33. Re:Practical application is the only way by Anonymous Coward · · Score: 0

      After 25 years in IT as a systems and DB admin that's more or less how I get into a new language. I have a need and want to make a new langauge sing and dance. I learned Assembly on Z80 ( using both ZX Spectrum and Amstrad CPC! ) way back in the 80s, then I learned C around '88 when I got my first PC. When I started working in the early 90's, I learned SQL including extensions like PL/SQL on Oracle and T-SQL on SQL Server. Also had to learn DOS batch, Powershell and Unix shell for DB development stuff as an admin. I learned VB ( including VB for DOS, which was really cool for writing DOS utilities! ). I've learned Perl, Python, JQuery, Javascript and just in the last 18 months I've started to learn both Java and C# ( as they're quite similar ) and I'd never really got my head around the hardcore OOP concepts.

      Each time I found something that needed to be done and found ways these languages could help me exercise and force me to push myself to learn how each language works. Like a spoken language the hardest part is doing all the work and then having to find some way to practice it before you lose the skills. Recognise a niche that needs filling and push yourself with a new language. After only 3 weeks of learning Java I was writing Oracle DB embeded Java procedures to improve our monitoring at the shop where I am a DBA. Each time you write something you know you'll be back to re-code it as you know your skills will be better in a few more weeks or months. As I get older it gets harder to learn new skills but when I start learning something new it's like I'm 8 years old again, sitting in my bedroom with a copy of BASIC manual staring at a blinking cursor on a TV screen! Ha ha! Anyway they always look good as additional skills on your CV/resume!

  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 gweihir · · Score: 2, Insightful

      Oh, and ignore all the assholes here that think your question is not worthy of a genuine answer. They likely do not even know what a c-compiler is.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:what you need them for? by gbjbaanb · · Score: 1

      alas, what you say is true.

      But there is a huge amount of effort being spent in using these things, to the point where you go for an interview and they're not interested in what language skills you have, but whether you know framework x or y.

      So that's why you want to learn them, shit reason really :(

    4. Re:what you need them for? by narcc · · Score: 1

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

      No need to make it personal, that's solid advice.

    5. Re:what you need them for? by gweihir · · Score: 1

      Thanks!

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    6. 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?!

    7. Re:what you need them for? by Anonymous Coward · · Score: 1, Interesting

      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.

    8. Re:what you need them for? by Lumpy · · Score: 2

      "I came to the conclusion that using it is a gross violation of all standards of professional code generation. "

      Amen brother. Kids today cant be bothered with good code, and their spaghetti crap ends up as a "standard" in some places. look through a lot of the TI MSP embedded libraries and frameworks. We dont use ANY of it as it is all a bloated mess for a small embedded platform.

      Hell it's a bloated mess for any platform.

      --
      Do not look at laser with remaining good eye.
    9. Re:what you need them for? by jythie · · Score: 3, Insightful

      I think this touches on the real utility of frameworks, other programmers.

      In many ways, learning or utilizing a framework is not about what it gets you technologically, it is what it gets you socially. It gets you on the same page as other developers, using the same tools, talking the same language, etc. Even if the tech itself does not make the project go any easier, the commonality does.

      Plus, once you know the framework well enough, it gives you enough background TO agree or disagree with others on a project rather then not be able to participate in design discussions. For instance if I had not taken the time to learn and work with Spring on a major project I could not really threaten to break the fingers of the next developer to utilize dependency injection, at least not with any credibility.

    10. Re:what you need them for? by maple_shaft · · Score: 2, Interesting

      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.

    11. Re: what you need them for? by malvcr · · Score: 1

      Let me add to this that the answer is not the framework but the paradigm. You are coming from C so you are not working object oriented. First, choose the program you like to write, then design it thinking in object oriented way, then choose the language according with your final required platform and this will tell you if a framework is required. For example, if you choose c++ you will work with STL for sure and maybe something else; and if you choose Java or C# you have no choice than to use the base framework because they are platforms more than only languages (Strousstrup words). But start with the design if you really like to learn well.

    12. Re: what you need them for? by Anonymous Coward · · Score: 0

      That's a bit arrogant. Have you seen every piece of code written by a "kid"?

    13. Re:what you need them for? by gweihir · · Score: 3, Insightful

      I am actually a person that does code reviews (among other things). I don't mind that my statements make me sound out of touch, because the mess that is going on today with frameworks is nothing I would ever want to touch as a developer. As to "hard to maintain", you seem to have no idea how bad the "modern" style is. Things that could have been done with a few compact binaries and shell scripts to link them together, are done as a mess with hundreds of files, toolkits, "engines", frameworks and the like that nobody can really read or evaluate anymore. Even the developers don't know half the time what it does exactly after working with the stuff for years. That is not progress. That is erosion of technological competences.

      As to IDEs, there are two kinds of users: Those that can produce good code without and those that cannot produce anything without. The second class is very likely to produce utter trash even with an IDE. The problem is that an IDE helps you write complex code. Complex code is by its very nature already broken. A competent developer simplifies, an incompetent one throws more code at the problem. As a result, for competent coders, it matters very little what development environments they use as they are not writing that much code for a specific problem and spend much more time thinking than typing.

      My advice to the OP is to focus of the segment of the market where there still is some understanding of what quality code is. Not only is that segment not going to vanish when the next fad comes around, it also pays better and working conditions are better.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    14. Re:what you need them for? by Anonymous Coward · · Score: 0

      gradle > maven

    15. Re:what you need them for? by RabidReindeer · · Score: 1

      "I came to the conclusion that using it is a gross violation of all standards of professional code generation. "

      Amen brother. Kids today cant be bothered with good code, and their spaghetti crap ends up as a "standard" in some places. look through a lot of the TI MSP embedded libraries and frameworks. We dont use ANY of it as it is all a bloated mess for a small embedded platform.

      Hell it's a bloated mess for any platform.

      I'm not a kid, but I didn't get paid to write good code. All they wanted was to get it done fast and get it done cheap. When I tried to write good code - or better yet, good design, I got dinged for taking too long.

    16. Re:what you need them for? by beowulfcluster · · Score: 1

      Yes it's far better to reinvent the wheel yourself. After all, you're the only one competent enough to make a decent wheel.

    17. Re:what you need them for? by Anonymous Coward · · Score: 1

      If all the libraries are wheels for 18-wheelers and such, then yes you might be better off reinventing the wheel for your project.

    18. Re:what you need them for? by ebh · · Score: 1

      Not just kids. Some people have managed to go for decades as cowboys, hacking crap together that barely works but doing it fast enough and visibly enough and in the critical path often enough that they always look like heroes. The worst is when they start believing their own bullshit and stop acknowledging that any other way exists. See also: Asshole Driven Development.

    19. Re:what you need them for? by UnknownSoldier · · Score: 1

      Spot on! That's one of the things I've noticed as I get older.

      * Less reliance on libraries / frameworks.
      * Simpler data
      * Simpler code

      > serves 100kb of files but somehow manages to take up 300mbytes of disk space and 600mbytes of ram...

      God that is so funny it hurts because it is so true!! I blame that on a few things ...

      * Programmers who started on 8-bit CPUs are the last "good" breed of programmers IMHO who know how to manage TINSTAAFL. These days every 21-day programmers take Virtual Memory for granted, don't understand the speed hit of abstraction, don't understand "null rendering", "null IO", budgets such as run-time & memory, etc.
      * C++, Java, and other "bloated" languages that tend to encourage to make _excessive_ use of libraries. While they make it trivial to get something up and running (good) also has a high memory overhead (bad).
      * Badly designed & bloated data formats like XML instead of something simple like JSON
      * Poor algorithm choice. C++ STL' & Boost vector are great except when it is not. No one cares that it chews up MB of RAM. Well except the console guys. See this excellent white paper:

      "EASTL -- Electronic Arts Standard Template Library"
      * http://www.open-std.org/jtc1/s...

      The bigger problem is the (almost) no one cares about taking pride in being a _excellent_ programmer.

      * Don't use more resources then necessary
      * Know the difference if your app is CPU, IO, or Memory bound.

      The other problem is due to management. They want something that worked last week, but are not willing to invest the time into doing it right. Like Murphy's Law says

      "There is never time to do it right,
      but there is always time to do it over!

        -- Murphy's Computer Laws

      --
      Only cowards censor.

    20. Re:what you need them for? by KingMotley · · Score: 1

      I couldn't agree more. Frameworks are important for the same reason standard libraries are important. For example, reading someone else's code without libraries they write a routine to sort strings. Great. And then the next guy comes along and calls it, expecting it to sort his strings, but the routine does a case insensitive sort, which isn't what the 2nd programmer wanted. Of course he could have read and analyzed the whole routine before using it, but having a library allows both programmers to have access to a string sort that they don't have to analyze to make sure it really is a sort, and can reuse it.

      Frameworks are much the same way. Often without them I find code from a previous programmer, and I think what the hell was he thinking and why is he doing this. Or doing it this way. A framework removes most of the useless code setting up and tearing down basic things and does so in a consistent manner. If I see he's overriding some standard function, I can assume there is probably a reason why it's been overridden.

    21. Re:what you need them for? by KingMotley · · Score: 1

      Get a different job. They aren't hard to find. They don't want a good programmer, they want a code monkey. You'll be much happier in the long run (and the short run, and every run inbetween -- trust me).

    22. Re:what you need them for? by ThatsDrDangerToYou · · Score: 1

      The bigger problem is the (almost) no one cares about taking pride in being a _excellent_ programmer.

      Alas, grammar too is a lost art. ;-)

    23. Re:what you need them for? by jmrives · · Score: 1

      I, for one, completely agree with you. There are good, useful frameworks out there -- at least in the Java world.

      I use Hibernate because it is very flexible and does the heavy lifting with regards to ORM and caching. Do I use it because I am lazy? No, I have written database access code in C, C++ as well as early Java. I use it because it frees me up to focus on the business logic of the application

      I also, highly recommend using Spring. The power and flexibility of dependency injection alone is worth it.

      Again, Maven is an invaluable framework.

    24. Re:what you need them for? by Anonymous Coward · · Score: 0

      Avoiding framworks is like avoiding third party libraries. It is sometimes good, sometimes bad. Blanket statements are for idiots.

    25. Re:what you need them for? by Anonymous Coward · · Score: 0

      Maven is 100% unadulterated dog shit.

      In fact, it is worse than that.

      See CPAN or Gem/Rake/Bundler for simple but powerful build and dependency management.

      Simple problems don't need bloated shit that you have to fight constantly.

      Recommending Maven is one the same level of bad advice as recommending PHP.

    26. Re: what you need them for? by Anonymous Coward · · Score: 0

      You can write OO in C. The fact that Ruby is 100% C and 100% OO is a testament to that fact.

    27. Re:what you need them for? by UnknownSoldier · · Score: 1

      Touchee :-)

    28. Re: what you need them for? by gweihir · · Score: 1

      I am not "coming from C", and even if that were true, your assumption is flawed, as Python is OO and C-modules for Python are OO as well. Maybe the thing is that I have learned OO with Eiffel and was deeply repulsed by the flawed and broken implementations that C++, Java and others use. I can use them, but I will not if I need speed and memory-efficiency. And If I need a few OO containers, it is far better rolling them myself than having to use these languages. (Yes, you can do OO in C, and it is not even that hard...)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    29. Re: what you need them for? by gweihir · · Score: 1

      Indeed. You just need to know what you are doing. Most programmers these days do not.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    30. Re:what you need them for? by Anonymous Coward · · Score: 0

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

      Particularly the part where MVC is old hat, because that's the primary way to program on iOS...

    31. Re:what you need them for? by Anonymous Coward · · Score: 0

      I'm sorry, but if you can't understand dependency injection you're an example of an old programmer (of any age!) who can't learn new (or old) tricks. It also means you probably don't understand information hiding or programming by contract, so likely you're not a good OO programmer at all.
      Which is not necessarily a bad thing, if you're doing e.g., strictly procedural (although DI would also be valuable there) or functional. But if you're in OO, you can essentially ignore the last 10 years of buzzwords except for "dependency injection" (and REST, if you program web services) and come out well ahead. Vice versa, you can agilize your BDD/TDD in the scrummiest no-sql polyglotism until your kanban falls off, you're still an amateur if you don't understand information hiding, cohesion, (de-)coupling and dependency injection.

    32. Re:what you need them for? by jythie · · Score: 1

      Dependency Injection is a very old idea with a new name, and like many old ideas in programming that have been rebranded it is being severely overused by a new crop of programmers. In another 5-10 years from now it will go out of style when people start getting annoyed with the problems overuse causes (just like last time), and then get rediscovered in maybe 15 with some new buzzword and rinse lather repeat.

      I am quite familiar with its usage and am very aware that there are times and places where it is a really wonderful thing to have, but today I see it used in situations where, as far as I can tell, people are using it simply because 'it is the proper way to do things' without any real though.

    33. Re:what you need them for? by oamasood · · Score: 1

      your comment. this comment.

      this is exactly why young engineers do not want to program in java.

    34. Re: what you need them for? by malvcr · · Score: 1

      Wrong assumption from my part :-)

      Let me see ... all the languages using { } come from C, or more precisely from BCPL, although in their evolution several things changed (for some reason they were created).

      According with (http://www.levenez.com/lang/lang.pdf), Python comes from Modula3, ABC and C. Eiffel comes from Simula and Ada, so although they share concepts they are different languages.

      I don't think that C++ or Java have broken implementations, what I think it is that they follow different approaches. Eiffel seems to be more strict (CLU in its past can have some reason on this and was my first OO language in University). and ...

      It is possible to create good software with any language and to create bad software with any language. In fact, it is possible to have perfectly coded software, following all the language rules but with a completely lost (aka broken) sense of the semantic it want to work on. This is, in fact, the biggest problem on the security area and it is not related with the nature of the languages.

      And I understand you. I learned Pascal before C, so when arriving to C it was very "free" for me and was forced to understand the inner logic of the pointer world. With C++ things where more strict although not as systematically defined as Eiffel. What for me is terrible is to work the old fashioned Basic; this is as a short circuit in my brain, but I was able to do nice things with that language a lot of time ago (that, of course, I won't try to repeat).

    35. Re: what you need them for? by Anonymous Coward · · Score: 0

      Let me see ... all the languages using { } come from C, or more precisely from BCPL

      BCPL didn't use {} though, it used $( $)

  3. If you need to ask, then for you the answer is no. by jrumney · · Score: 1, Insightful

    If you have to ask Slashdot, then I'm afraid that the answer is no, you have reached the end of learning new tricks if you cannot figure something this simple out on your own. The good news, from the experience of an even older programmer, is that this does not happen to everybody.

  4. Yes by kthreadd · · Score: 1

    I've never been able to learn "frameworks" from books. I've tried, not my thing. Documentation on the other hand is usually a good start, especially if it's written to be short and to the point. Most important, look at code. There's a ton of free/open source software which you can look at, learn from, contribute to. Find a small bug, learn how to fix it, make a patch, send it in.

    1. Re:yes by hodet · · Score: 1

      This is great stuff and is helpful advice to me as well. Thanks you old bastard.

    2. Re:yes by Anonymous Coward · · Score: 0

      Microsoft notoriously makes things "easy" but really makes them more difficult through their abstractions for someone who already knows what they are doing.

      One of Borland Delphi's marketing copy said something along the lines of: "VB makes the easy stuff easier, Delphi makes the hard stuff easier." That was a truism back in the day.

      You really have to learn how the framework developer's spin on the solution is, rather than raw programming. Once you get into OOP things get a little different from procedural, but other than that, things are the same.

    3. Re:Yes by oamasood · · Score: 1

      This. Exactly. Thank you.

      This is exactly what people should do: Try a new hipster framework, think it's too high-level and magical, try re-doing it without the framework, then realize that they're just re-inventing the framework, and finally learn to appreciate with the framework and realize its ups and downs.

  5. Why Does It Have To Be A New Trick? by Anonymous Coward · · Score: 0

    Old Judges? Old Lawyers? Old Chemists? Old Teachers? Old Cops? Old Comedians? Old Reporters? Old Mechanics? Old Authors? Old ... WTF!?!

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

    1. Re:Specialism by hattig · · Score: 1

      Yes, hyper-specialism is a problem, as is unwillingness to learn new things. Those Flash devs will not go far unless they push their boundaries.

      SVN is not hard. Git is not hard, but a little more complex up front than svn checkout/update/commit. Any intelligent person can get their heads around these in a couple of hours, especially when someone is willing to help them or sit with them through a sample session (an essential part of mentoring).

    2. Re:Specialism by Anonymous Coward · · Score: 0

      The fastest way to motivate a programmer to accept change is to just change it. when they whine, point at the door and say,"I am sure you can find another company that will let you use your perforce all day long out there. Go find it!"

      suddenly they shut up and put in the effort that day to learn the new software. Flash developers are a dime a dozen, and it sounds like you have 1 good flash developer and 3 medicore ones, maybe it's time to replace the 3?

    3. Re:Specialism by fuzzyfuzzyfungus · · Score: 3, Interesting

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

    4. Re:Specialism by Anonymous Coward · · Score: 0

      Well making someone do something they are unfamiliar with is an utter waste of time if you can help them do it in a fraction of the time. I don't do the simple shit anymore mostly because I consider it a waste of my time and I know there are lot of people out there who gladly will do it.

    5. Re:Specialism by Anonymous Coward · · Score: 0

      > Outlook isn't rocket surgery

      You're just a one note pony, aren't you Ricky?

    6. Re:Specialism by Anonymous Coward · · Score: 0

      The hardest thing about git is wrapping your mind around the concept of you having your own repo (and git commit -a not being teh default). Once you realize how git works, you end up hating SVN for it's lack of flexibility.

    7. Re:Specialism by Anonymous Coward · · Score: 0

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

      Programming and IT are different disciplines. They overlap, but university programs anymore avoid teaching that overlap lest someone gets a double major without paying extra for it.

    8. Re:Specialism by Anonymous Coward · · Score: 0

      That's what I've seen, that 4 out of 5 youngins can't be bothered to look anything up that they can't show off.

    9. Re:Specialism by UnknownSoldier · · Score: 1

      And then when you have scalability issues you are wondering what the hell went wrong.

      Only an idiot manager would ignore the _years_ of programming experience why a good developer would resist change. Too often they have seem the pattern ...

      You seem to be married to the idea that "All change is good" which is clearly a fallacy. There are called "Rules of Thumb" for a GOOD reason. Change for the sake of change is just overhead and busy work. Change is sometimes _sold_ as a "magical" Silver Bullets -- whether it be a new process / widget -- often times they DO work fantastic in the context of certain problems, but falls hard outside it.

      * The strength of age is that is is predictable and consistent. Its weakness is inflexibility.
      * The strength of change is that it is adaptable and flexible to new problems.

      The hard part is knowing WHEN to and when NOT to change.
      When to USE a new library, and when NOT to use it.

      What are the trade-offs WRT to compile-time, link-time, run-time performance?

    10. Re:Specialism by Anonymous Coward · · Score: 0

      Desktop Email program is like Punch Cards

    11. Re:Specialism by Anonymous Coward · · Score: 0

      Still in school for ECE, but I do work as a Java dev part time currently.

      I don't quite understand why they complained about switching tools to use. Whenever I started working where I am at now, I had never touched Java before. All of my previous internships had been in C. In my situation, I was somewhat thrown into the deep end never having used an IDE before (previous CS classes I had taken in school were structured a bit oddly) and using all these new tools.

      It's been a lot to learn and a tough pill to swallow. Between several questions to coworkers (not all are helpful, as some can't get over their egos) and a lot of google-fu, I've been able to figure out a lot of the tool functionality and have learned Java fairly proficiently so far.

      So yeah, I have no problem switching tools, languages, etc as it teaches me how to be better at my job. However, it may take me longer to get things done at first just from the learning curve associated with the newer tools or a different language. Basically, I'm saying these guys need to quit being crybabies.

    12. Re:Specialism by Anonymous Coward · · Score: 0

      Found the local rub and tug?

    13. Re:Specialism by fuzzyfuzzyfungus · · Score: 1

      Oh, very much so, which is why I would have no expectation that a programmer would necessarily know anything about configuring a common corporate mail client, or think worse of them for not knowing; but the procedures for 'google around to see if somebody knows why Library X has this weird quirk' and 'google around to see if somebody knows where Outlook 2007 puts the advanced settings for an exchange connection' are pretty much identical, and for any remotely common question about Outlook will certainly work.

      Really, I'd expect the same procedure even if I asked a Flash developer a question related to veterinary medicine, load-sizing industrial chillers for injection molding processes, or saltwater aquarium care.

      The modest overlap between IT stuff and 'stuff you would pick up getting a common contemporary dev environment set up(especially for something like Flash, if they were C gurus or something maybe they did do all their work camped out on the one SPARC installation their university forgot to dismantle, just because that's how they roll; but Flash doesn't really give you that option)' makes it more surprising that a contemporary Flash dev wouldn't know, offhand, about common desktop software; but it's the failure to 'just ask the internet instead of bothering somebody you probably don't want to look stupid in front of' that is nearly unimaginable.

    14. Re:Specialism by fuzzyfuzzyfungus · · Score: 1

      That's what I've seen, that 4 out of 5 youngins can't be bothered to look anything up that they can't show off.

      Are you, by any chance, also a witness to the mind-boggling spectacle of 'two or more people holding internet-connected devices and arguing furiously about the state of some matter of fact that could be looked up in moments'? That one drives me to a state of (admittedly irrational) rage.

    15. Re:Specialism by eric_harris_76 · · Score: 1

      A vaguely similar story.

      I'm a software tester and former programmer (long story), and a few years back had to go through several iterations of testing some code written by a well-respected (deservedly so, as best I can tell) developer. I was new at the company at the time.

      It was supposed to take a file containing a series of things and convert it into an equivalent file with multiple series of those things, because some recipients of those types of files could only handle (say) 50 in a series, but could handle any number of series.

      None but the final attempt split properly. (Yes, it did finally go to Prod.) Some had the wrong size series, or weren't equivalent, or both.

      I'm foggy on the exact details of the failures now, but I do recall how I tested. So a series of 23 should turn into 4 series of 5 followed by a series of 3 -- all in the same order as the original file. A series of 15 should turn into 3 series of 5 -- all in the same order. A series of 4 should remain a series of 4. It should work for upper limits that aren't 5. And that did happen, eventually.

      But before then? Nope. Non-equivalent output. The wrong number of things in the final series (8 instead of 3, as I recall). Omitted series. Stuff like that.

      The program may have been well-structured and very maintainable, in a global sense. Given what I've learned since about the developer, that's very likely. But in the guts of the thing, I gotta wonder.

      --
      There's no time like the present. Well, the past used to be.
    16. Re:Specialism by Anonymous Coward · · Score: 0

      Sorry, but maybe the guy thought you were approachable and could ask you a simple question without getting his head ripped off. If somebody is standing right beside me and probably has a quick answer to something that might take me ten minutes on google, I will ask them.

  7. move over by ThorGod · · Score: 0

    No, please retire so I can have a job, thanks, bye.

    --
    PS: I don't reply to ACs.
  8. yes by Coeurderoy · · Score: 4, Informative

    Although 18 years of programming is barelly adolescence ... (I started with fortran IV because fortran 77 was still being implemented ...
    Now let's assume that you want to learn to write Fubarish code, you'll find out that there are at least five major languages/IDEs/Frameworks to Fubar...
    Choose one, preferably one of the "bigger ones" and make sure it's activelly maintained...

    And then take a deep breath, and know that IT WILL TAKE TIME .... the issue is not that you really need to "learn new paradigms" in most cases it's just rather minor variations of old ones (some time very neat variations, that is the fun part)... the issue is that you "almost understandn but yet it does not seem to make sense"...

    The issue is similar to adult learning new languages vs children learning... adults do not really learn slower than children, but they want to express themselves correctly and speak about "interesting things"...
    Kid's are happy to say "see spot run, give ball me !", adults feel frustrated by this and have trouble making the initial steps...

    So be patient and for instance try something like meteor or angular and try to make an ugly "hello world" app... (or what ever is relevant to what you'd like to build ...)
    then "hello world, AGAIN and I'm the best" app...
    then "hello "
    etc...
    at some point after five time more time than you initially thought it will hit you ... "I did it !" ....

        Good luck youngster :)
          (and now get off my lawn ...)

  9. Take it easy by Anonymous Coward · · Score: 1

    I am in the same age as you, and I learn all the time. The day I stop learning it is time to get another job. But take it easy, there are so many tutorials out there written by someone who understand half of what they are writing about. Framework of the week etc. They write the tutorials because they learn at the same time and that is fair enough. The signal to noise ratio is pretty low, but you can always buy a book on the subject, and start playing with Obj-C or whatever. For me it's always good to have a left hand project where I try out new techniques and knowledge. If you have the people skills, management could also be a way forward. Listen to this: http://www.manager-tools.com/2... If you are considering management, subscribe to a podcast! Good luck

  10. DRY by Anonymous Coward · · Score: 0

    If you used functions in your programming style, they you already applied the DRY principle. With functions for example you encapsulate a set set of instructions to perform a task. If this set of instructions changes, this affects only the implementation of the function (one place). All the calls to the function stay the same.

    1. Re:DRY by Tablizer · · Score: 1

      I used to obsess on DRY, and came to realize that sometimes I overdid it, creating too many layers of indirection, making the software inflexible to lager-scale change and/or confusing to future maintainers. Sometimes making it flexible to smaller-scale changes makes it LESS flexible to larger-scale changes because it's too "locked in" to abstraction layers.

      There is a "Goldilocks" point of just the right amount of abstraction and DRY.

      As far as functions for DRY, optional named parameters are a really nice feature of functions that many languages still lack. They were so quick to add HOF's, but not named parameters. I smell fad-chasing. OOP can do much of what HOF's can for just a little more syntax such that they are mostly superfluous for typical field use.

  11. You have already given up... by ChrisKnight · · Score: 4, Insightful

    If you think fifteen years in the profession makes you an 'old programmer'.

    --
    -- This sig is only a test. If this were a real sig it would say something witty. --
    1. Re:You have already given up... by fuzzyfuzzyfungus · · Score: 3, Insightful

      If you think fifteen years in the profession makes you an 'old programmer'.

      Depending on how old you are when you start, the amount of time required to become 'an old programmer' can be identical to the amount of time required to become 'a programmer'...

    2. Re:You have already given up... by X10 · · Score: 1

      :-)

      I don't see myself as an old programmer. I started programming in 1978.

      --
      no, I don't have a sig
    3. Re:You have already given up... by Anonymous Coward · · Score: 0

      If you think fifteen years in the profession makes you an 'old programmer'.

      Well, it makes you ready for the scrap heap, if you're in HR.

      On the other hand, I learned programming in the 1970s and I'm still picking up new technologies.

      You cannot possibly become expert in everything programming-related anymore. Even I can't do that. The field has become far too broad. Instead you need to look at what is going to be interesting and profitable for you and focus in that area. Look at concepts, not frameworks. Does Big Data look appealing? AI? Statistical processing? General Business?

      Once you have an idea of what kind of systems you want to develop, look at what's prominent in that market. Both languages (C#, Java, scripting or even COBOL) and frameworks. Especiallty pay attention to what's prominent in the locale where you wish to work, since different places have different preferences. Don't just grab the new-and-shiny, since fads often die out quickly, look for something with some staying power.

    4. Re:You have already given up... by Jahta · · Score: 1

      :-)

      I don't see myself as an old programmer. I started programming in 1978.

      That was my thought too. I've been coding for 35 years, and earning my living from it for 30 of those years. There's always new things to learn. That's what makes it fun!

    5. Re: You have already given up... by Anonymous Coward · · Score: 0

      Yes you are

    6. Re: You have already given up... by Anonymous Coward · · Score: 0

      Cool story.

    7. Re:You have already given up... by Anonymous Coward · · Score: 0

      ...which is roughly the amount of time it takes for you to become nearly unemployable due to age.

    8. Re:You have already given up... by servant · · Score: 1
      I have had my 30 year college reunion and I was getting paid for programming in Assembler and FortranIV while in college. Never got the handle on APL, but everything from MarkIV, Easytreve, PL/1, assembler, BASIC have paid the bills for years. To learn and use REXX effectively, I had to learn a new paradigm of coding. Going to OO is still frustrating. Obfucation for its own sake and getting me away from the hardware adds to my frustrations. On using 'environments', 'frameworks', or IDE's, or whatever other euphemism we want to use: it is just another paradigm to learn where we need to forget what we knew to learn how to use it effectively. Consider using them like being a 'new language' (even if they just produce Perl, PHP, assembler, C, or Swahili doesn't matter for now). New constructs, new definitions for old concepts. But try NOT to map your old understanding on the 'new technology' till you can 'think in the new way'. Then layer your knowledge and experience on this 'new fangled stuff', and you can bring a depth of understanding that the whippersnappers can't believe till they have to go through the change where 'everything you know is wrong' too! If they stay in the biz long enough, they will have to do it several times.

      I have made the leap several times. But still remember my the basics of computers haven't changed. It all still boils down to machines running code, and they still only do one thing at a time (no matter what virtual sleight of hand is done).

      Hang in there. Learn each 'new technology' as if it was really new (little is). Then once you master it, integrate it into your life understanding of computing. This is a good way to grow and keep your roots, IMHO.

      --
      ... "When you pry the source from my cold dead hands."
  12. YES! by KingOfBLASH · · Score: 1

    Learning is just about putting in the work. If you decide that you want to learn emacs LISP, and want to implement a project in it, it's possible if you're willing to put in the work.

    As others have pointed out, the more salient question is, why? If you really have progressed up the ladder, then presumably your focus is no longer about daily programming, but more about project management and general management. At that level, it becomes less important to be able to implement a widget in the newest shiny language, but to be able to bring the project (successfully) to completion.

  13. 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."
    1. Re:No by Anonymous Coward · · Score: 0

      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.

      Yeah, I was in the same situation as you before.
      I learned to program based on self-learning. When I tried to learn dot Net (from C) few years back, it was very difficult the first few days. However, eventually, you will get good at it and eventually be master at it.

      Yes, from another comment, I tried learning and using frameworks but eventually stopped. Based on my needs, it was best served creating my own algo than use frameworks at all.

    2. Re:No by serviscope_minor · · Score: 2

      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.

      Quite possibly. I think that programmers of a certain sort are used to hard problems, like delving into the guts of hardware for a driver or a triky algorithm, to solve a task in cunning, but more efficient way. The frameworks aren't any of those types of hard. It's more of a wall of "wtf is this shit?".

      Very hard to go over that wall, and frankly, I'm a bit skeptical that it's worth it in many cases.

      --
      SJW n. One who posts facts.
    3. Re:No by phantomfive · · Score: 1

      Yeah, it's more a matter of learning how to deal with a lot of data without being overwhelmed. If you're trying to memorize it all, you're going to have trouble.

      Learn how to quickly find the function you need.

      --
      "First they came for the slanderers and i said nothing."
  14. Re:You could ... by Anonymous Coward · · Score: 0

    wtf bro

  15. 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
  16. I've been learning new things for 30 years by AccUser · · Score: 4, Interesting

    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.

    --

    Any fool can talk, but it takes a wise man to listen.

    1. Re:I've been learning new things for 30 years by SimonInOz · · Score: 1

      I wrote my first bit of code in 1970, in FORTRAN, and now, at 59, I still like coding. It's not where the money is, so I mainly do architecture, but coding is much more fun.

      Is it hard to learn the new stuff? Yeah, it is. Definitely harder. The new frameworks tend to be pretty huge, and rely on lots of fairly random assumptions - "convention over configuration". You need to pick up a big heap of conventions, which is painful.

      On the other hand, the basic structures still shine out. Async here, sync there, message there, update there, abstract everywhere ... It's easy to miss the fact that years of programming have nailed the basics - probably when you write code in a language you are familiar with, it tends to work. Usually fist time.

      But yes, learning by doing is the best way. Try it, you'll like it.

      Bat damn, there are a lot of frameworks these days.

      --
      "Cats like plain crisps"
    2. Re:I've been learning new things for 30 years by Anonymous Coward · · Score: 0

      I've been programming for 44 years. Had one course on Fortran IV for geologist. Later had one course on Pascal. I love Stanford's course. I'm slower now at 67. Some times it's tough. But I can do it. It requires self discipline and determination. Frameworks are tough. It's often hard to find an entry point for the autodidact. This compounds the problem of age. Find a good course so you can focus on learning not on figuring out what is going on. Your instructor has already done that for you. Even young folks have limited intellectual capital. Use a good course to free up the maximum capital you can so you can use it for learning the language.

      Good luck!

  17. Translation by Max+Threshold · · Score: 4, Insightful

    "I played around at writing code, but I never actually learned any of the other skills that are just as much a part of being a programmer."

    If you haven't learned those skills in fifteen years as a professional, the problem isn't your age. I became a professional programmer at the ripe old age of thirty-six, and learned all the skills you're afraid of in my first year on the job. I had to!

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

    1. Re:It's okay to be tired of programming by Anonymous Coward · · Score: 0

      Great advice. I often have experiences "in the real world" while on hiatus from coding that result in great ideas for new things to code.

    2. Re:It's okay to be tired of programming by carnivore302 · · Score: 1

      Probably the best advise I've seen. I'll try it myself.

      --
      Please login to access my lawn
    3. Re:It's okay to be tired of programming by Anonymous Coward · · Score: 0

      I've been there myself. It was much easier to step away in my 20s. I think I might finally be getting back into it after several years of stepping away recently. I'll be 46 in a few weeks. I'd ramble on more and post under my real id; but that's too much drama and I should really be working on my language. I feel about languages the way the other guy probably feels about games.

    4. Re:It's okay to be tired of programming by neiras · · Score: 2

      I think in my 20s I just didn't know how to recognize burnout. Combined with the usual invincibility complex and with an image as a caffeine-fueled wunderkind to uphold, I ended up burnout incarnate.

      Now, when I feel unproductive for a several days running, I know I need to take a week or two and just do something else. I'm a better coder for it, and a better person too.

  19. Complexity by jones_supa · · Score: 3, Informative

    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.

    I can see where the problem is. You just have to accept that everything is million times more complex than when you started. The new big frameworks and sophisticated build systems are going nowhere. You are were used to writing relatively simple programs. Today you need some serious grit to get through projects.

    1. Re:Complexity by fuzzyfuzzyfungus · · Score: 2

      On the plus side, while the upper bound for complexity(sometimes necessary, sometimes self-imposed) shows no signs of slowing down, the supply of problems that are tractable with historical methods shows no sign of exhaustion.

      If the slashdot-asker is asking because his boss wants a problem that isn't a member of that category solved, or the cheap offshore labor has gotten adequate at solving that class of problems for peanuts, he is undeniably in serious trouble; but the mere existence of greater complexity does not appear to have actually solved all the lower complexity problems.

    2. Re:Complexity by jabberw0k · · Score: 2

      Furthermore, if you're trying to solve a complex problem with complex tools, you probably need to go back and think about how to reduce or compartmentalize that complexity. That's the UNIX philosophy: building blocks. There's no reason you can't use Perl (possibly with Moose or Mojolicious if you need them) for a modern project. No reason you can't use PHP or C++ or whatever you know, with the addition of a few new libraries. Leverage what you know, don't replace it.

  20. getting excited about stuff that is not so excitin by Anonymous Coward · · Score: 0

    Learning new tricks is the easiest part.
    Getting excited about half baken technologies that offer only part of the solution is the hardest part.
    The more experience one has the easier it gets to debunk all the 'magic' and merits of most popular new technologies.
    Since most people have only touched very few other languages and platforms, they are very biased towards the technologies they favor most.

  21. Sure, but... by Anonymous Coward · · Score: 1

    You and I have a similar number of years programming and working. I'm still learning new things every day. In the early 90's there was a relatively small number of choices to get the job done, usually just pick a language and go do something. Now just the breadth of it can be overwhelming.

    The really great thing about today is you can go to your favorite search engine and type "[language] [what you want to do]" and it's likely going to be the first result on stackoverflow (unless you choose Go as a language). Beats going to the index of all those reference books.

    If you're out to learn I suggest focusing on the area that interests you most: web, devices, web services, databases, etc. From there pick the platform (Win, *nix, Android, iOS, etc) and start narrowing down your language choices.

    Here's the stack I use in daily life: Visual Studio, C#, ASP.NET MVC, jQuery, Angular, Bootstrap, Web API, WCF, Entity Framework, SQL Server. Visual C# Step-by-Step is a decent intro book http://www.amazon.com/Microsoft-Visual-2012-Step-By/dp/0735668019. I also recommend CLR via C# by Jeffrey Richter once you've mastered the basics.

    If that doesn't appeal to you pick your own path by what interests you and what you see a decent number of jobs for in your area. Give yourself a project you want to make, something kind of simple, then set out to do it using that new language. This is the best way to learn a new language or framework, at least for me.

    I enjoy http://pluralsight.com as well. The videos can take some of the fear and anxiety that comes from "I have no clue what I'm doing" out of new topics which will help give you confidence to explore more on your own.

    My concern is why you got out of programming as a career in the first place. Is it something which truly interests you? Can you enjoy the mundane along with the exciting greenfield development? Can you handle struggling to get what you want? If so, march on and good luck!

  22. If you have to ask... by Tanuki64 · · Score: 0

    ...yes, you are too old.

  23. judging by my coleagues by mythix · · Score: 1

    Who are what I would call "old programmers", I'd have to say no.

    They don't even want a new desk or laptop. change is evil.

  24. Doesn't help and most is crap anyway by Anonymous Coward · · Score: 0

    Learn by doing. Tutorials won't get you there.

    Most of the frameworks are just bloated rehashes of someone else's badly implemented framework in the 'flavour of the month' language. Generally created by people who are incapable of actually focussing and solving real problems. "Me, I'm working on the framework code, not blocked"

    Find a project that interests you, implement it.

  25. Education vs training argument by dbIII · · Score: 1

    Training gives you only the VB or dotnet of the month. Education means you can sort out sorts in all sorts of languages because you know what should happen instead of just what to write.

  26. Open your mind by WarJolt · · Score: 1

    There are other programming languages besides those listed in the article. It's interesting there is a whole resurgence of new programming languages.
    Some people need a little encouragement. Write formally verified code and learn Coq. Learn a functional programming language like haskell or take a blast from the past and learn smalltalk.

    You might never use these for anything practical, but what you learn from them is invaluable. You need to constantly be learning new things.

    1. Re:Open your mind by Tanuki64 · · Score: 1

      You might never use these for anything practical, but what you learn from them is invaluable. You need to constantly be learning new things.

      In that case I would not learn such worthless stuff. Sorry, but 'you might never use these' is worthless in my book. When I feel the need to train my learning muscle it is stuff like OpenGL, video encoding, OpenMP. Stuff I can use and do with the languages I already know, but are new to me. Just learning a new programming language becomes sooner or later brainfuck. It is the illusion of doing something new, but without actually leaving ones comfort zone.

    2. Re:Open your mind by Anonymous Coward · · Score: 0

      Wow, you are an idiot.

      Different languages teach you different approaches to a problem.

  27. Same start different ending by Anonymous Coward · · Score: 0

    I more or less started programming in the same way. DIY, no frameworks or anything.

    The only difference is I never stopped learning. For example I tend to learn at least 1 new language a year... well I at least try and sometimes fail. For example I really hated perl and PHP, really. But when I decided I need one editor to rule them all i.e. emacs I started to learn lisp (which appears to be never ending process with elisp), and when I needed a scripting language to do all of my scripts in I learned python. When I needed to do some micro controller home automation stuff well I learned assembler for AVR just because the arduino library was too big. and so on there is always something to learn you just need to have the right incentive.

    My point is. In the process of learning new languages one usually get exposed to new ways of thinking, which may include one or more frameworks :), that keep your mind moving. So instead trying to learn a framework I suggest you try to do the thinks you do anyway in with different language but try to stick to the new language de-facto standards. Take python for example it has so many modules that you don't need to reinvent the wheel every time so using python is more about finding the right module then doing it yourself. If you can make a module better you can always contribute your version the the rest of us :).

  28. Rediscover your joy by undulato · · Score: 2

    As others have said - find something you enjoy programming. I started making games for mobile a couple of years ago using Unity3D and Mono/C# - it ticks a lot of boxes for me, just enough coding, just enough creativity and other bits, just enough story telling. If you get bored of one bit you try another and eventually you get there. Plus you learn something about your target platforms along the way.

    Games or mobile might not be the way you rediscover your joy but there is bound to be some great tech out there that you just can't wait to get your teeth into. Word to the wise - Kinect and Leap are not it.

  29. Re:If you need to ask, then for you the answer is by Anonymous Coward · · Score: 1

    Ditto. I'm a contractor developer (mainly Java, but C, C++ and hey I can build a PIC board if I have to :-) ) - no single job > 3 years, and I'm just coming up to 55. So I've been developing for 39 years ... damn! Started with a Pet and ZX Spectrum, Z80 etc and worked up from there.

    My last contract was very Spring/Hibernate oriented - I'd never really used them in anger, but now I can handle the key parts with my eyes closed. Previous one was a fast trading system - lots of Java concurrency and messaging, again, I'd played but I hadn't fought. Before that, it was a big govt project - not much new tech, but a nightmare team organization which I hope I did a lot to straighten out. Before that I was writing an XHTML/CSS parser/renderer for a mobile phone company.

    I read a book on a new thing and then try it. I'm reading about ReST and Node at the mo' because I encroached on it before and it was sort of a mess, and I need to tighten it up. Starting a new contract is generally a whirlwind of new stuff - but I love that! It's like being on fire.

  30. Pick a problem first, not the solution by Sarusa · · Score: 1

    I've been programming longer than you have and I'm still learning new things every day. That's not an exaggeration - we have so many cool projects at work that I can't stagnate.

    The key here is to have a problem to solve, then learn whatever you need to learn to solve that problem.

    You don't decide 'Well I should learn PHP now... okay, now what do I do with this?' or 'I hear Java is good on a resume.' You find a problem that's interesting to you (I want to make a game that... I want to make a neat device that...) and then you learn whatever it is you have to learn. For instance starting to deal with firmware, motors, devices, etc is like a rebirth for a lot of people compared to the boring ennui of database and web services. It's amazing how much you can do with a little Arduino or Raspberry Pi or the equivalent, and that's often enough to kick you out of your stupor.

    If you can't think of anything, or if coming up with a game or trying a neat little embedded system doesn't put you back into obsessive creative mode then it's probably time to consider a new line of work, or just how to ride out your days till retirement.

  31. Reviews by Anonymous Coward · · Score: 0

    Ask your collegues to review your code also pair programming. Use that to discuss DRY concepts and other desirable quality attributes.
    With pair programming you (the newbie) are the driver (typing) and your collegue (experienced modern languague programmer) the navigator (correcting you, thinking about what comes next).

  32. Golly, yes by khelms · · Score: 1

    I recently moved from Assembler on punched cards to the new-fangled Cobol language on a green screen!

  33. Do you have actual use for it ? by dam.capsule.org · · Score: 1

    I find that for me, trying to learn some new tech or framework without a real project behind it never works. I just can't go through a tutorial without having a real use for it. I will simply stop at some point.

    --
    What sig ?
  34. Seconded by Anonymous Coward · · Score: 1

    I'm old (50's) switched from C++ Windows to Java/Android. I've failed to pick up Java before, but once I had a goal in mind, it all became very very easy. Now I'm a great Java programmer (well highly paid anyway).

    I think I failed before because I didn't *use* it, I *learned* it, and once I learned it, I forgot it quickly. Now, I actually use it to make money, and solve real problems, its all so trivial to now, its become second nature.

    'Frameworks'? If you want to learn something, I'd go with Java and Android now (with Eclipse), its the future. For web? LAMP still is fine, you have Perl, and PHP they're still fine tools in common use.

    1. Re:Seconded by narcc · · Score: 1

      If you want to learn something, I'd go with Java and Android now (with Eclipse), its the future.

      I'd bet against that.

    2. Re:Seconded by SQLGuru · · Score: 3, Insightful

      I agree. I think the current "future" is Single Page Applications with HTML and Javascript (subject to change at a moment's notice).....whether it's Angular or Knockout based, SPA apps seem to be the way to go (for now). It's probably the closest we've come to the write once / run anywhere......it works on the desktop and on the device, doesn't require anything other than a decent browser, and requires very little infrastructure (a basic web server).

    3. Re:Seconded by Ronin+Developer · · Score: 2

      I had mod points but couldn't decide to respond with "Funny" or "Insightful". Seriously. There are elements of both in your statement.

      Being an old fart myself, I grew up in the era of C, C++, VB, DELPHI, JAVA, JS. Today, the platform of choice is not the desktop, it's mobile. The SPA style makes it possible to target mobile either as responsive format or as a hybrid using something like PhoneGap/Cordova. Granted, someone still needs to write the frameworks and interpreters to run the SPA so the other tools and skillsets are still a necessity. But, a programmer can make a good living if they know how write a SPA.

      As for learning new tricks? I see two approaches: 1) Refactor, redesign and recode an existing program you've written and know well in the past using the new paradigm or 2) Start with something new.

      In the early 80's a friend of mine decided to learn to program. He decided to write a game for the Commodore PET (okay, you KNOW I'm old). He started with an idea, asked for assistance when he needed to learn a new construct for the hackers around him. His game was character based (we didn't have the graphics cards at school). The game became immensely popular among students and evening adult students. One morning, he came and the disk he shared (for him, he considered it PD) and was developing on was missing (they only gave us one). Our guess is that someone really liked it. Two years later, a game came out on the early Mac. It had REAL graphics. But, it was HIS game now being sold commercially.

      Moral? Just because you don't know something now, you can still make a contribution.

    4. Re:Seconded by Quirkz · · Score: 1

      Another moral might be "have a backup," I think. Now I'm curious, which Mac game are we talking about, and did your friend ever talk to the developer/publisher?

    5. Re: Seconded by Anonymous Coward · · Score: 0

      I'd agree that JavaScript is worth knowing but for server side, web services etc I'd recommend looking at the Grails framework which uses the Groovy language, which is kind of simplified Java and very powerful

  35. Yes by kevingolding2001 · · Score: 3, Interesting

    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.

  36. Maybe by BlackHawk-666 · · Score: 2

    It sounds like you don't really have 15 years experience. You have a few years experience that you've been repeating over the last 15 years. You also tend to sound more like a scripter than a programmer (not that there's anything wrong with that!). Becoming a fully fledged programmer would therefore be the next step for you, and you could certainly take it, but I doubt you will. You are lacking one or more of these:

    * confidence
    * direction
    * motivation

    Learning ability is not likely to be the issue, it's the lack of desire to learn that is at the root.

    Find something you are really passionate about and make that happen using whatever tools are considered the best in that domain. Many older programmers unwind and expand by writing games or personal projects that scratch their itch. Find something that interests you and get coding.

    Personally, I'm working on a pair of games right now. One with a team (8-16 month duration), and one that will take the next few years of my life which I am starting work on solo. They give me reason to fire up the compilers, read the docs and flex my chops.

    --
    All those moments will be lost in time, like tears in rain.
  37. You appear to not know fundamentals. by tlambert · · Score: 4, Insightful

    You appear to not know fundamentals.

    This is very common with self-taught programmers, or programmers who came up through either vocational training, or programmers who were apprenticed into their jobs. Unfortunately, this makes you much less valuable, because you probably don't know the proper terminology to use when referring to a specific algorithm, or you do not have a working knowledge of rarely used data structures, or you do not know object oriented programming paradigms. Minimally, you are going to be handicapped when you are trying to communicate about these things with your peers - in other words, people who have a formal education in these things can use a shorthand you can't, and as a result your communications bandwidth is considerably less than theirs, when talking about technical aspects of the work.

    The first key to understanding frameworks is that there is an inversion of control: the framework dictates the control flow, not you. This may come from after you call into a framework functions, but in the simplest implementation, it comes from you not getting to write your "main" function. If you have used yacc, and did not supply your own main because you have linked to liby.a and used the liby.a supplied main() and yyerror() routines, then you have used this type of programming. If you have used rpcgen and used librpc.a to supply the main() for your program, you've also done a similar thing.

    The second key to understanding frameworks is that you are allowed to extend, but not modify, a framework. Extension is done by overriding callback methods, or by providing additional event processing by hooking the default action, which is typically an error action. For this to be understandable, you need to have a minimal understanding of object orients programming. It's perfectly possible to do object oriented programming in C (in fact, libXt and libAw and other widget toolkits in X Windows did exactly this, prior to wide availability of inexpensive C++ compilers. If you've ever had a pointer to a structure that contains function pointers, and substituted one set of function pointers for another by setting the structure pointer through which you call things to one structure instance or another, you've done this. In simplest terms, you can write a function that gets called when you press a button, but you can't change the fact that it's a button, or the fact that when the UI sends an event into the framework, that causes your function to get called when the user clicks the button.

    The third and final key to understanding a framework is that things have default behaviours. If you don't supply a function to handle a particular event, then the framework is going to supply one for you. For example, if you have a menu bar with drop down menus, the main menu will probably have a quit option. If you don't supply a function to implement the quit (e.g. popping up a dialog and asking if the user wants to save their work, if they've done any), then the default action will happen instead, and the program will quit - without saving the changes, since it's your responsibility to know that there were document or settings changes, and it's your responsibility to warn the user, if the user needs warning.

    You might have some minimal knowledge, through use of Python, of the very basics of frameworks, but since the language doesn't actually force their use, then you probably don't have a very good understanding beyond that.

    My suggestion would be to take a class or seminar on object oriented programming; one thing that's pretty popular is the Stanford series on iPhone programming using Objective C, which will also teach you concepts about object instantiation and messaging, which are things you might need to know on top of just object oriented programming.

    You'd also do well to learn a compiled object oriented language, like C++, if you opt out of learning Objective C, rather than relying on "getting it" by using a language which doesn't force object orientation on you. At the v

    1. Re:You appear to not know fundamentals. by Anonymous Coward · · Score: 0

      shut up

    2. Re:You appear to not know fundamentals. by Psychotria · · Score: 0

      At the very least, you'd benefit from using some type of interface builder to build a GUI program; it doesn't matter if it's for iPhone or Mac Desktop or Windows. You *can* learn to do this on other platforms, but they're generally pretty poor IDE environments compared to the ones available from commercial vendors like Apple and Microsoft, and it won't *force* you to think the right way about the problem space, if you use something like "Eclipse".

      And what, exactly, does using an "interface builder" to build a GUI program teach you? Nothing. Respectfully, it seems that you seem to be part of the problem rather than the solution.

      Commercial IDEs from vendors like Apple and Microsoft are "better"? Better for what? I think that after a statement like (in addition to the "gui builder") that you need to take a step back and consider what your stance is and how well you really understand things.

      Tell me, what is the "order of the algorithm" that the gui builder generates?

    3. Re:You appear to not know fundamentals. by jittles · · Score: 1

      And what, exactly, does using an "interface builder" to build a GUI program teach you? Nothing. Respectfully, it seems that you seem to be part of the problem rather than the solution.

      Commercial IDEs from vendors like Apple and Microsoft are "better"? Better for what? I think that after a statement like (in addition to the "gui builder") that you need to take a step back and consider what your stance is and how well you really understand things.

      Tell me, what is the "order of the algorithm" that the gui builder generates?

      If you're trying to learn to use a framework properly, then I posit that interface builders will help you do exactly that. You'll learn how to wire up all your controls and to handle the framework callbacks properly. I am not saying that you'll learn how to write the UI code, but it will at least force you to learn how to research frameworks and their use. The interface builder doesn't actually write your framework code for you, but it will help you learn what the framework needs you to do in order for you to leverage the framework. You still have to write the code that actually does something meaningful with it.

    4. Re:You appear to not know fundamentals. by xelah · · Score: 1

      I think you missed one of the most important things about using a framework (or, indeed, a GUI builder, a library or even an SQL database): using a framework does not excuse you - or, at least, your team - from understanding and being responsible for the behaviour of your application as a whole, and indeed system as a whole. Hibernate, for example, is not a way to avoid knowing how a database works, what normalization is, how locking/MVCC is handled, the pros and cons of indexes, how queries are planned, how a write-ahead-log works, what disk access patterns you might be creating and so on. There's a bit of a bad sign in the original question: he's been working on stuff for a long time but not had the curiosity or felt responsible for finding out how they work as he goes along.

    5. Re:You appear to not know fundamentals. by geekoid · · Score: 1

      Better as in faster deployment, more reliable programs, more likely to use source control, and better at breaking things down into discrete components.

      you know, better.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    6. Re:You appear to not know fundamentals. by UnknownSoldier · · Score: 1

      /sarcasm Such words of wisdom! We all bow down to your programming skill ... oh wait.

      Pro-Tip: Focus on the message and instead of the messenger.

      tlambert gave some very good advice. The only thing I would add is the the 80 / 20 rule for frameworks:

      * 80% If they do what you need then great!
      * 20% But if they don't, god help you to augment / work around their limitations.

    7. Re:You appear to not know fundamentals. by tlambert · · Score: 1

      And what, exactly, does using an "interface builder" to build a GUI program teach you? Nothing.

      It enforces a "hands off" on the framework internals by virtue of presenting only a high level abstraction.

      Commercial IDEs from vendors like Apple and Microsoft are "better"? Better for what?

      They are better at information hiding. As a result, you have to learn to code in an environment where there is hidden information. In a non-framework coding environment, if something doesn't work the way you want it to because there is no way for you to add non-standard behaviour, it also means that user training is portable between applications written with the same framework(s). In other words, it reduces the learning curve involved in transferring knowledge from word processor A to work processor B or spreadsheet C, and so on.

      A consequence of this is that you learn to live in the constrained environment published by a given framework. It doesn't really qualify you to implement frameworks yourself, since you don't see them from the outside, but it will at least give you a feeling for how you should constrain the programmers implementation environment, should you write your own framework in the future.

      If I had to boil it down to a single sentence, I'd say "They more strictly enforce API contracts, and by so doing, allow less talented people to produce useful code".

      Tell me, what is the "order of the algorithm" that the gui builder generates?

      It doesn't matter, if it's fast enough for the hardware you are running on, and everyone is stuck with the same algorithm, regardless of order. One would hope that the people writing frameworks had a deeper understanding of the fact that they are constraining their consumers, and would attempt to get their implementation as close to O(1) as possible, without needing to throw hardware at the problem.

      If you consider places where O(1) algorithms are truly necessary, e.g. performance critical code, such as code which is called repeatedly, or code such as in the Linux scheduler (which, by default, uses an O(1) algorithm), this typically falls into the "you are not expected to understand this" category, and the code is written by more capable people in order to benefit the less capable by virtue of having done the hard work on their behalf.

  38. Re:If you need to ask, then for you the answer is by Threni · · Score: 1

    The perfect answer. And you can see for yourself, by a casual glance at Stack Overflow, that there's no shortage of new programmers without a clue in their head, and who expect people to solve problems that `give me the error` but who don't think it's important to include the actual error (as if there's only one possible error that could be provoked in that situation) or who demonstrate an utter lack of any resourcefulness, inquisitiveness or common sense.

  39. Change jobs by Anonymous Coward · · Score: 0

    Few things will force change like changing jobs. Find one you like, make sure to interview them and if you "like eachother", go for it. Sounds like you are bored, or like others said, you need a break.

  40. Re:If you need to ask, then for you the answer is by serviscope_minor · · Score: 4, Insightful

    If you have to ask Slashdot, then I'm afraid that the answer is no,

    Nope, this answer is utter horseshit.

    I've encountered the same framework madness as the OP. I've come to the conclusion that 99% of them are utter drivel and it's almost more work to figure out how to use it than it is to code it from scratch, which makes it kinda useless as in the latter case you get much better flexibility.

    Basically, it seems like they make the easy 80% of a problem tribial and the remaining 20% nearly impossible. Better to stick to good libraries instead.

    Elaborating a bit, the GP like me learned from lots of available material in the old days. In those days, the lack of frameworks and general flatness made things a bit more straightforward. Basically you could figure out what things meant at a fundemental level fairly quickly. With the vast modern frameworks, there seems to be much more trusting in the magic of them, and that doesn't sit well with someone who has a decent nuderstanding of programming, operating systems and architecture.

    My advice, ignore the mega frameworks if possible, and don't onfuse them with handy platforms and avoid those as well.

    --
    SJW n. One who posts facts.
  41. I've been writing a lot of 6502 assembler lately by chitselb · · Score: 1

    ... for the Commodore PET. http://pettil.tumblr.com/ But now my code is better than it was in 1979, and by now I have used dozens of other languages and operating systems. Am I "expert"? No. I take the approach of learning the minimum I need to accomplish the mission (usually delivering maintainable code) plus whatever else I become curious about along the way. What usually works best is to combine a new project with a new set of tools, so I'm learning the new tool while trying to finish the project. I describe the approach as "You are here and you want to get there." or "Lewis and Clark" approach. If you started with Perl, learning Ruby. Consider learning something old school, like Forth. Install Linux on your desktop. Force yourself to live in it by deleting Windows first. In short, become uncomfortable. The best learning occurs in that space.

    --
    never ask a question you don't want to know the answer to
  42. Do more by invictusvoyd · · Score: 1

    Just learning new tools seldom works for hackers. Hackers invariably look for efficiency which means the right tool for the job. There is not much sense in using for example C to write a wrapper or a log parsing script and likewize there is not much sense in using perl to write an operating system , Do more . u'll need more and u'll consequently know and learn more

  43. Too old to learn is an excuse by Alioth · · Score: 2

    Unless you have some kind of brain problem (learning difficulty, Altzheimer's etc), you're never "too old to learn". "Too old to learn" is I think an excuse much of the time, learning can be difficult and it's human nature to avoid difficult things much of the time and instead take the path of least resistance. So understand it's going to take some real effort and try to take a structured approach to whatever you're going to learn. If you learn best by doing (or enjoy learning most by doing) then structure your learning by using practical tasks.

    When learning a new programming language often you spend a lot of time in the reference manual simply because quite often things surrounding a framework or language are fairly complex - this makes progress seem slow and difficult, but if you can focus on a task and complete it and keep doing it, it gets easier.

    As others have written, have you learned the fundamentals? You may want to go back to basics for a while and really make sure you understand some of the basic CS types of things if you find you're reading documentation on some class library and it mentions things like linked lists or other data structures and you're not sure how that would be implemented.

  44. Re:If you need to ask, then for you the answer is by ras · · Score: 2

    If you have to ask Slashdot, then I'm afraid that the answer is no, you have reached the end of learning new tricks if you cannot figure something this simple out on your own.

    Right answer, wrong reason.

    Every good engineer I know, software or otherwise, can't resist learning how the next new shiny works and seeing if they can't put it to good use. In fact I sometimes feel guilty of wasting inordinate amounts of time doing that sort of thing. Thus I know I can learn new tricks because I do it all the time.

    They reality is it I hadn't done that all my life, I would be in the dust bin now. I learnt to program in the 70's, on punch cards. Our uni lecturers tried to get us to imagine the shiny's we would have now, I guess as a way of preparing us for continual learning. It's funny now I look back on it, but among the many things we didn't think of are the internet, mobile phones, public-key cryptography, or cryptographic hash functions. It's been a remarkable time to live through.

    If the submitter doesn't know he can learn new things too, he is in deeper shit than he realises. It's not a question of whether he can or can't - he almost certainly can. But if he hasn't been doing continually, there is soooo much to catch up on.

  45. book recommendations by louic · · Score: 2

    Read the following two books, that is how I learned to go from qbasic to object-oriented python using design patterns:
    - code complete
    - design patterns
    After that of course you need practice.

    By the way, it is worth it and makes code more easily reusable because it allows to make small changes to existing code more easily. Although this does not teach you to use frameworks, the logic of thinking in patterns and how to do object oriented programming properly is a very good start.

  46. You're not me by Anonymous Coward · · Score: 1

    In a way you sound like me, but aren't.

    I learned programming out of a drive to actually fix what I saw were problems (that turned out to be really terrible coding by the original author, or just a lack of care.)

    In C land, I'm not afraid to use a library if what I need is in that library, but I loathe C++ and OBJC "frameworks" because these add layers of unnecessary trash on top of efficient code. I do understand C++ for the most part, but I find a lot of what is written in C++, is needlessly written in C++ out of some inane desire of a "team" to standardize on a coding style rather than a practical reason that means using a OOP language.

    I ripped out a proprietary scripting language and replaced it with JavaScript in one project and had that work relatively well. So it's not like I ever felt there was a reason to stick to coding an entire program entirely in C. However when it comes to OOP things, I find the cruft that has been added to languages like Perl and PHP are out of some desire to make the language more irritatingly like Java and C++ instead of, you know, useful.

    What you need to learn depends on what you actually hope to accomplish. I ported RLE code from C to a proprietary scripting language, back while I was in high school, because I wanted to do -that-. I glued image-capture code into an open-source project so I could capture screenshots from the application. I glued in code, into two different gameboy and nintendo emulators so I could learn what notes are being played by the sound system in a game. The stuff has application somewhere else, but generally would be considered a waste of time to have done it had I not wanted to learn something specific.

    My interests in programming often involve image manipulation or compression. Do I hope to be hired by Adobe or Bioware or something? No. If my ultimate goal was to work for either of these companies I would have just went to school 15 years ago and stuck to it. But as it turns out, had I done that, I would likely not have been employed by simply taking the local college's classes. Those turned out to be horrible. The college hired people when "Java" was the buzzword and not a single professor during that semester could actually program in it (oh lovely Java 1.0x code mixed with JDK 1.1 books they had us buy.) I knew more than the professor teaching the class, and as a result the students asked me for help with everything. I kinda just went "screw this, I'm not paying to teach a class" and withdrew from the program. In hindesight, I'm glad I didn't stick with it because both Java and Macromedia director, are pretty much not used by anyone doing multimedia. (They should have stuck with C++.) I should have just went to Digipen if I wanted to make games.

    But back to the frameworks, I don't like them. I find I don't generally care for "OOP for the sake of OOP" programming. As soon as you see words like "factory" in the source code, run, run away. DRY means "don't repeat yourself", translates to if someone has already done it, don't do it again. The practicality of this depends on what language you use, (eg scripting languages often involve having to use C libraries or built-in functionality, writing libraries -in- the scripting language is a foolish thing to do.) If you primarily work in C code, then it's very easy to use "standardized" libraries like zlib or libpng without a second thought, because nobody else has written an alternative better code (lzw, lzma, etc) that can be applied. For example if, I rip zlib out of libpng and replace it with lzma, it would make it super slow and only produce png files that can be read by my application. That's a pointless endevor for the sake of saving a few bytes in the resulting images. I did this with a video codec (saving a few bytes across a few million images is more meaningful) and ultimately came to the same conclusion that even though switching the compression algorithm saved either time or space, the resultant incompatibility didn't provide a meaningful excuse to not use the sto

  47. wow by Tom · · Score: 4, Interesting

    Someone broke Betteridge's Law. 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?

    --
    Assorted stuff I do sometimes: Lemuria.org
    1. Re:wow by Krishnoid · · Score: 1

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

      ...

      Someone broke Betteridge's Law.

      Not necessarily :-)

    2. Re:wow by Anonymous Coward · · Score: 0

      If you've never studied this book Data Structures and Algorithms by Alfred V. Aho (Author), Jeffrey D. Ullman (Author), John E. Hopcroft (Author), or some online course based on the concepts in it, you will up your game an order of magnitude by tackling it.

      One level of programming comes from coding by doing. Another level comes online when you conceptualize the process and begin to think of code as a language with a kind of algebra and sets of operations. Learning how to organize datastructures and factor algorithms will dramatically affect how you organize your thoughts about a particular programming language.

      I started with Fortran IV, SNOBOL/SPITBOL, Algol, Basic, COBOL, PL/I, LISP and a few interpretive scripting/shell languages in my teenage years. Over the years as needed I pick up additional skills. Many shell/scripting languages and other later I've realized it's always possible to learn more. Lately I'm learning PowerShell/PowerCLI bit by bit out of necessity.

      Find what you can as free online courses at Khan Academy, or Stanford online to do with datastructures and algorithm analysis. It will bend your mind into a new way of thinking about what you're doing with creating programs. Ultimately it's about starting with a set of functional goals, figuring out how to represent the data to facilitate achieving those functions, and then the code can sometimes almost fall in your lap because it is a series of transformations on the datastructures you've tagged to hold your problem space.

    3. Re:wow by parodigm_shifter · · Score: 1

      Hmmm ... somehow my id didn't get associated to that post. Hate that it's now on here as "Anonymous Coward" ;)

  48. try this by fiftybmg · · Score: 1

    Get hold of the code generation tools from imatix.com . Specifically the gsl. This will bridge the gap between custom routines, and packaged libraries, by teaching yourself how to generate the libraries from a core requirement definition. It's a lot easier for old programmers to 'get' the gsl than it is for the current crop of IDE developers. Once you get your head around how that works, you will better understand the 'modern' approach, and especially it's limitations and drawbacks when it comes to performance and re-use. Complexity is a manifestation of poor code design, and somehow complexity has become cool.

  49. Your way works, the new way doesn't... by Anonymous Coward · · Score: 0

    The old way of doing things is still the best... But it doesn't promise cheaper labor like the new way does, framework reuse by abstraction... I don't really get it either... As an Electronics Engineer, I learned to write code in HEX and assembly on microcontrollers like the Z80 and 68HC11, just as you describe. I believe this is still the best way for mission critical applications. Also I find it nearly impossible to understand what the code is actually doing in the hardware with higher level languages... I'm a bit biased being a hardware guy at heart, I'm not happy unless I fully understand the state of the machine at all times...

    Anyway, given the fact that code written in years past, seems, to be of much higher quality, I'd say the guidance to find the cheapest and fastest way to abstract and reuse code, has failed, so your not alone my friend.

  50. Programming Old School by John+Allsup · · Score: 4, Insightful

    Programming was done and dusted as a discipline in the sixties, got creative in the seventies and has been taking the piss ever since. New programmers need to stop learning tricks and learn to write good programs that work on minimal resources and work under strain and with no guessing games involved, just like the Space Shuttle people did, and learnt the beauty of purity that Lisp showed, the beauty of simplicity that Forth showed, and redevelop the lost art of programming. Modern day computing is ugly. [ Here ends the rant of an old school fundamentalist ;-) ]

    --
    John_Chalisque
    1. Re:Programming Old School by Anonymous Coward · · Score: 0

      Since the eighties hardware has moved along so fast that most programmers don't (and can't) understand the hardware our code is running on. Instead we use development frameworks to hide all the difficult details behind an API. That gives greater productivity, which means more $$$, at the expense of elegance and efficiency.

      Fortunately, current hardware is fast enough to compensate for the inefficiency built into our coding model.

    2. Re:Programming Old School by K.+S.+Kyosuke · · Score: 1

      Since the eighties hardware has moved along so fast that most programmers don't (and can't) understand the hardware our code is running on.

      Really? I'd argue that it's exactly the other way round. Until 1980s, there was a large number of different computer system architectures, some of them certainly very exotic from our point of view. Since 1980s, virtually everything major runs on x86-based IBM PC compatibles. AMD's Heterogeneous System Architecture is, IMO, the first major development for programmers - in terms of with what assumptions programs have to be written (and machine code generated) - since the introduction of 386 protected mode with flat address space.

      --
      Ezekiel 23:20
  51. From someone who's been in the same position by Anonymous Coward · · Score: 3, Informative

    Starting from the position of an "old skool" programmer and trying to learn all the new tricks at once is difficult. You're absolutely right about that. Don't let that discourage you though.

    The reason it's difficult is because if you're trying to learn one of the common frameworks from your position, you're basically trying to learn a whole shedload of new things all at once. There's a ton of buzzwords and jargon that you'll need to work through, new concepts, and of course the conventions of the framework itself. It's too much to try to learn all that in one hit.

    What you need (and what all the framework authors and tutorial authors seem to miss) is to take things a step at a time. You'll probably be able to get through things pretty quickly that way.

    I'll assume you're familiar with OOP already. If not, that's where to start because most of the modern concepts that you're talking about hang off of having a structured object model. Make sure you have a grasp of the more advanced OOP concepts like inheritance, polymorphism and the like; they're all actually fairly simple concepts once you get past the jargon, but again key things to know before tackling the next bit.

    Now you can start thinking about "Design Patterns". This is another topic where there's a lot of people spouting jargon in a way that makes it virtually impossible for the uninitiated to understand what they're talking about. The basic thing to know is that design patterns are just ways of writing software. They've all been around for a long time, and you're probably using a lot of them already without even thinking about it just because they're the obvious way to achieve things. They key thing to know is that in the mid-90s, a book was published which described the common patterns, and gave them names. These names have become the standard ways of referring to them, so you'll find people talking about Factories, Adaptors and Singletons and expecting you to know what they mean. You may want to consider getting a copy of that book.

    Next thing to learn about is a concept called MVC. Where design patterns describe ways of writing individual classes or linking them together, MVC is about the architecture of your entire application. Virtually all the common frameworks these days use an MVC architecture, so you really do need to know what this is before you'll get anywhere with a framework. MVC divides your code into business logic ('Models'), user interface ('Views') and code to manage the interface between them ('Controllers'). As with design patterns, the basic concept of keeping your business logic separate from your user interface has been good practice for decades, but has been formalised with concepts like MVC.

    Those are the core things you need to know. Additional concepts (you mentioned DRY in the question) will show up along the way as well but you can pick them up as you go.

  52. Get used to a poorly designed environment by Required+Snark · · Score: 4, Insightful
    If you started to code before the rise of the internet, you learned how to function in a somewhat useful development environment. The infrastructure and tools for internet based programming are severely broken by those standards.

    To a significant extent, all the practices that make a workable environment were abandoned for the internet. It's likely that the learning curve problem you are experiencing is a reflection how bad things have become for coders.

    Take languages. With the possible exception of Python, all the languages associated with web development have glaring flaws. PHP is conceivably the worst language to ever gain broad acceptance. JavaScript does objects wrong and has evil lexical scoping rules. You have to be very careful or you can step on an assumption made by object in a library that you don't even know was loaded.

    Thoughtful system design has been replaced by object oriented programming. The failed assumption is that if you have an object model, you must be doing a good job. This is a prime example of magical thinking. Just because it's all objects does not mean that it was done right. (I'm talking about you, Java).

    Then there are the "non-standard" standards. The poster child is HTML in the browser. To reach the full user base web pages must code for multiple incompatible implementations. Chalk up a lot of this to Microsoft, but even they had a lot of help creating the garbage dump called web standards.

    Frameworks take the mindset of spaghetti code, force it on the coder and then claim that they are really great. Take Cake/PHP. Using it is the equivalent of chewing on a mixture of crushed glass and push pins. It only seem useful if you have been swimming in the cesspit of PHP.

    To be fair, I must say that JQuery is one of the best examples of software out there. I demonstrates that even given a flawed language like JavaScript, and the snake pit of inconsistent DOM implementations, elegant and useful software is possible. It's just too bad that there are very few tools that do such a good job.

    So don't blame yourself. You are as smart and capable as you ever were, it's the work environment that has become degraded. If you come to grips with the current crop of shoddy software you can achieve your ends. A more fundamental issue is if you want to work in such a terrible situation. After having the experience of being productive, it's a real let down to experience using such a crap set of tools.

    --
    Why is Snark Required?
    1. Re:Get used to a poorly designed environment by Anonymous Coward · · Score: 1

      I have recently come to web design from a scientific numerical C++, python, matlab/octave background.

      I have been appalled by the utter pigs ear of technologies that pass for web development technologies. HTML and CSS are two of the most horrible and unfriendly examples, I thank providence that the python django framework exists which at least bypasses as much of the crap as possible.

    2. Re:Get used to a poorly designed environment by Ukab+the+Great · · Score: 1

      Mod parent up.

      Young programmers can eat large amounts of hip, carelessly designed defacto syntactic sugar and not get diabetes.

    3. Re:Get used to a poorly designed environment by Anonymous Coward · · Score: 0

      I hate web programming. It' so disheveled, and hasn't improved much since 1994. I trudge through it when I have to, but there's nothing better than a clean, tight back end engine.

    4. Re:Get used to a poorly designed environment by Anonymous Coward · · Score: 0

      "Take languages. With the possible exception of Python"

      Stop. You're 16 and a fucking idiot. You come off like a total douche. Call us when you have actual industry experience.

    5. Re:Get used to a poorly designed environment by Tablizer · · Score: 1

      The infrastructure and tools for internet based programming are severely broken by those standards.

      Agreed! Back in the early and mid 90's, it looked like integrated event-driven IDE's like Delphi and to a lessor extent VB were the future of UI programming. Then the web came along, throwing together different-looking animals like HTML, CSS, and JavaScript in an unholy union of half-ass server programming and half-ass client programming and half-ass glue binding them together, making a chaotic disjointed mess.

      We de-evolved. Time to rethink browser standards. They were good enough for e-brochures, but suck for interactive UI's.

      Then again, if web programming wasn't such a mess, it probably wouldn't pay as well, and that is perhaps why the suckage survives: there's no financial incentives for entrenched experts to devise something saner. Convolution is job security.

      Oh, and get off my lawn!

  53. Learn some new languages by Anonymous Coward · · Score: 0

    I have been writing software since I was a kid using a ZX81. I have been through many phases in my development from assembly, procedural and then OO. At times you get in a rut and locked in your ways. I recommend some of the following to help you break out of your rut

    1) Change jobs so you are exposed to different code and ways of working
    2) Learn a new language from a different paradigm. Functional or some other area that is new to you
    3) Learn unit testing with mocking etc
    4) Write a roguelike on your own time and use it to explore new techniques and ways of thinking

    For me it has been the journey into functional languages and agile techniques that has given the spark back again :)

  54. Great MOOC for learning Java by Anonymous Coward · · Score: 0

    Hi
    I am 50 years old and learnt to program in COBOL in 1982. I nevere really 'got' Object Oriented coding, but I'm just coming to the end of the Amplified MOOC of Java Programming, and it now makes perfect sense. In my day job I write in Perl, but now I would rather code in Java, as it makes more sense.
    https://course-mooc.amplify.com/course
    Tim

  55. Do something that's interesting. by jbrohan · · Score: 1

    I'm very old, IBM 360 anyone! It's much better if the subject matter is interesting. I've worked on all sorts of problems from accounting (ugh) to robotics (Yea) in many countries in the world. Currently I'm working on a way to use computers to help seniors and their carers live better lives. The carers are busy and there are more seniors than ever before. It's called Stay-in-Touch.ca and runs on an Android tablet or a dongle. I have a specific need (apart from meeting a super salesman) to port some functionality to send pictures to grandma from an iPhone, from facebook, twitter and so on. We can do it from Android, of course. Work on your own and sell the apps. I provide the API. There is an infinity of projects in this vein. (Apparently this old programmer can't figure out new lines in slashdot!)

  56. Re:If you need to ask, then for you the answer is by X10 · · Score: 1

    I must agree with this. It's possible for some, but you need to have an explorative mind, that apparently you don't have if you have to ask here.

    I first learned to program in Fortran, way back, in university. In my first job I did Cobol, then I switched to C and C++. After that, from 1995 on, I did Java, and now I do Android and Java. On the side I did Prolog, some php which I hate, and all the other stuff that you run into and you try out for a while. I'm sure I'll make more switches before I retire.

    --
    no, I don't have a sig
  57. Re:If you need to ask, then for you the answer is by Viol8 · · Score: 1

    " I've come to the conclusion that 99% of them are utter drivel and it's almost more work to figure out how to use it than it is to code it from scratch, which makes it kinda useless as in the latter case you get much better flexibility"

    Agree 100%. Often they're written by idiots just out of university who've read a couple of design patterns books and now think they've got the inside view of programming. All they end up doing is creating a top heavy behemoth that is all structure and no functionality - perfect for a degree dissertation, useless for the real world - and a royal PITA for anyone to use properly which usually ends up with everyone subclassing the framework classes and rewriting half of the functionality themselves anyway.

  58. You don't want to by X10 · · Score: 1

    Actually, as a programmer, you don't want to learn new tricks. The "trick" you should master is to write decent code and to be curious after the tools you can use to write that code. It doesn't really matter what programming language you use if you have the skill to quickly learn the specifics of that language. Once you know a few, you see the general pattern, and you know them all.

    --
    no, I don't have a sig
  59. Re:If you need to ask, then for you the answer is by Lumpy · · Score: 1

    The problem is a lot of managers that cant even understand programming 101 have latched onto framework crap like it's the holy grail.

    Code quality across the board has dropped by a magnitude over the past 5 years out there.

    --
    Do not look at laser with remaining good eye.
  60. Burnout? by Anonymous Coward · · Score: 2, Interesting

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

  61. Shoelaces were a bitch by usacoder · · Score: 1

    But I finally got them to work.

    1. Re:Shoelaces were a bitch by geekoid · · Score: 1

      Probably not as well as you think.
      Do they come untied when you don't want them to? If so, you fail.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  62. BOS by Anonymous Coward · · Score: 0

    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

    That's because all these frameworks are a bag of shit.

  63. Projects, not languages by Antique+Geekmeister · · Score: 1

    Merely speaking a language may not be interesting enough to rekindle your interest and encourage growth. But there hundreds of good open source and freeware projects that would benefit from your insight and experience. CPAN, github, GNU, and Apache all host projects that may interest you nad have relevance to your work, without being part of your daily grind. Perhaps you'd enjoy a chance to refine some familiar old project?

  64. Your question makes no sense at all by prefec2 · · Score: 1

    Every human is able to learn new things. It is in our nature. Most people stop learning in a school way after school and switch to experience learning. However, in the IT industry you always should learn new things from books or tutorials. If you have not studies CS at university (which is IMHO the only way you could not have heard anything about frameworks) then it is time to learn theoretical foundations of your field. It will mix perfectly with your experience and of course challenge one "fact" or another.

    However, being 18 years into programming would make you not old. At least not if you started as a kid. With my background it would make you 30. This is not old. That was the time where I reentered university.

  65. You're not a *real* programmer by msobkow · · Score: 0

    You're not a *real* programmer until you decide to write your *own* framework. Your framework won't be useful to anyone else, but you'll think it's the best way to do things because it reflects the way you *want* to do them. You'll spend months or even years hacking away at your framework, ship it, and then some poor slob will try to download and use it.

    That is the ugly truth about 99% of frameworks. They're hack jobs by one or a very few people that deal with a very specific problem or code style, and are useless for anything else.

    Most frameworks don't "make sense" because they only make sense to the people who wrote them. Everyone else just goes through the motions, crosses their fingers, and hopes that it doesn't break because they haven't the foggiest idea what to do if something goes wrong.

    --
    I do not fail; I succeed at finding out what does not work.
  66. No. Everyone should die at 30 by Anonymous Coward · · Score: 0

    No. Everyone should die at 30. In a carousel

  67. Wrong study techniques by rasmusbr · · Score: 1

    You are clearly a reasonably intelligent and capable person, and that doesn't go away with age. It does become harder to memorize things as you age. (Remember when you were 6 and could recite whole episodes of cartoons that you had only seen two or three times? That's not happening again.)

    Whenever you spend time studying and fail to learn it's always because of one of two problems: lack of smarts, or the wrong studying techniques / studying environment. In your case it must be the latter. Did you go to college and if so did you study math and other technical subjects or did you study fussy things like English? If you've never learned how to learn then the place to start is to Google "studying techniques" and become an expert at that.

    For example there are many technical concepts that are best learnt by drawing charts and diagrams on sheets of papers, crumbling them up and throwing them away and redrawing the charts and diagrams on new sheets of papers until you get something that corresponds to what the texbook is telling you. Also, just copying diagrams and other drawings straight out of textbooks can help. It's a cheap trick, but it works. There are lots of these "cheap tricks". Learn them.

    1. Re:Wrong study techniques by geekoid · · Score: 1

      "Remember when you were 6 and could recite whole episodes of cartoons that you had only seen two or three times? That's not happening again
      what do you base that on, and a personal anecdote, I am well into middle age and just started learning music and I can memorize sheet music and songs as well as I cold memorize anything when I was six.
      Personal anecdote being what it is i.e. not data.

      ": lack of smarts, or the wrong studying techniques / studying environment.
      nope. Smart only indicates how long. Sometimes not even that. A good study/teaching technique is the difference.
      I know a lot of not so bright people who graduated from MIT / Cal Tech and our engineers and scientists.

      "Also, just copying diagrams and other drawings straight out of textbooks can help. It's a cheap trick, but it works. There are lots of these "cheap tricks""
      that doesn't teach you anything but how to mimic what's in the book.
      It would explain why so many people I run into or interview can clearly describe concepts, but can't apply them to anything.

      "Did you go to college and if so did you study math and other technical subjects or did you study fussy things like English?"
      I have no idea what that means. Fussy things?

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    2. Re:Wrong study techniques by careysub · · Score: 1

      You are clearly a reasonably intelligent and capable person, and that doesn't go away with age. It does become harder to memorize things as you age...

      There are changes in brain memory processes in normal aging, but as a blanket statement about what will happen, I find this to be untrue. The key to maintain the ability to learn is to constantly learn as a normal part of daily life. This keeps you in the habit of learning, allows you to continuously acquire new ways of learning, and even more important - gives you a continuously increasing framework of interconnected facts and areas of knowledge to associate with new things. These things can actually make learning easier with age. The same studies that measure memory decline with age show that staying mentally active actually protects against this.

      The broader your knowledge of computer science and software technology the easier it is to pick up "new" things. Often they are not new at all, and when they are, they are always built on things you already know. You should continuously broaden your knowledge. You should also see yourself continuously climbing up the software development skill level. If you aren't a better, more knowledgeable, programmer today than you were last year, then you aren't doing it right (most programmers, sadly, aren't doing it right).

      If you associate learning with being "in school", then you are in trouble for sure. A lot of people seem to only acquire information effectively "when taught" and for them, I suspect it is a downhill slide once they leave school. This is one of the chief causes suspected of age related learning problems - people becoming rusty at learning since they don't make it part of their daily life ( as Wikipedia puts it "memory strategies are used less by older adults as they move further away from the educational system").

      Another commonly cited factor is believing that learning is harder when you are older. This is definitely a self-fulfilling prophesy, and there are external cultural factors reinforcing this. Any time someone in the 50s forgets something - people are quick to term it a "senior moment", when in a 25 year old they would not draw any conclusion about mental deficit. Seeing young programmers frequently forget things (didn't complete that task, forget to start that overnight job, forget to check the log, etc., etc.) that I don't forget, I think a lot of claims about mature adult memory problems are straight-up ageism.

      --
      Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
  68. Fundamentals are key by azemon · · Score: 1

    tlambert hit the nail on the head. Go learn the fundamentals, either through coursework or through self-taught methods. Once you understand the fundamentals, you will find it much easier to grasp frameworks and "modern" technology.

  69. Old programmer? by Anonymous Coward · · Score: 0

    Started with PERL, eh? I started with BASIC, PASCAL, and assembly on the 6502. PERL didn't exist then. I'm still going strong with modern languages though I do fall back on C for most things embedded that I work on. I work with modern frameworks, OO languages, and old fail procedural stuff. If I can do it so can you, you young whipper snapper.

    Now get off my lawn!

  70. Old dog by nani+popoki · · Score: 3, Informative

    I started programming 45 years ago. Over the years, I've learned to write code in about 12 languages, six of them professionally. I coded in PL/1, Fortran, BASIC, lisp, Pascal, Ada, FORTH, C, C++, Delphi, Java, Python and a bunch of assembly and shell script languages. I admit that I find it harder to learn a new language nowadays but some of that is because the languages have become more complex. It's been about five years since I had to learn a new language (that one was Python), so I expect I'll be teaching myself something new soon -- and I'm 65. So, I guess I'd have to say you have no excuse not to study another language.

  71. You're not old or particularly experienced ... by Qbertino · · Score: 1

    You're not old nor are you particularly experienced at programming. Fiddling with web stuff for two decades doesn't make you an expert programmer. On the contrary, in the battle you learn lot's of bad habits. I should know, I'm in roughly the same position as you. Mind you, hacking together a messy system that has the customer satisfied two weeks from now and has the varnish of feature-completeness is a skill on its own, but it's only remotely to do with proper programming.

    The problem with applied programming on the web is that it's a steaming mess and constantly moving and evolving. I recommend that you specialize in one field - let's say Android Development and dive into the accompaning technologies. Learning OOP and OOAD does not happen when you use frameworks or toolkits, it happens when you learn to build your own.

    Perhaps you should get some certification alongside your field you want to specialize in. And again, be warned: PHP + JS + CSS + MySQL + jQuery + Zend/Symfony/CakePHP/FrameworkXVZ + fiddling with x-browser compatability + a litte image and/or video editing here and there does not make you an expert.

    Dive in and learn OOP with a mature non-messy technology and you'll eventually get there.

    My 2 cents.

    --
    We suffer more in our imagination than in reality. - Seneca
  72. Change techno by Dunge · · Score: 1

    I've been a C++ programmer for 10 years, going from 3D programming to embedded computing. This year I started doing C# WPF/WCF with dependency injection and MVPVM pattern, it's a whole new world.

  73. Damn by luis_a_espinal · · Score: 2

    Can an Old Programmer Learn New Tricks?

    Talking about self-deprecating titles. The problem here is not age, but confidence, direction and determination.

  74. Re:If you need to ask, then for you the answer is by Anonymous Coward · · Score: 0

    Really? 99% of all frameworks are useless? Please excuse me while I roll my eyes. Aside from the obviously ridiculous made up statistic that you pulled from the nether, your comment generally isn't that helpful. I'm not entirely sure why you're marked up as 5, Insightful.

  75. This again? by Fishbone · · Score: 1

    Seriously, it seems like this question comes up every few (2-6) months. Can we have the submitters just search the archives before posting? It's not like there's been some sea change in IT world that would preclude the same answers.

    Over and over.

    And over.

    Can we just get back to stale tech news already?

    1. Re:This again? by Anonymous Coward · · Score: 0

      > Can we just get back to stale tech news already?

      No, because FUCK BETA, remember?

  76. F*** it! by Anonymous Coward · · Score: 0

    There was a time it was the youngsters who'd better learn from seniors... Sign o' the times I guess.

  77. Get rid of the poorly designed environments. by hendrikboom · · Score: 2

    Or find a better one. I recommend you try "How to Design Programs", an intro to Scheme, which, despite its syntax, is a very decently designed language. You can buy the book for money, or download it for free. (there's two versions. The newer one is more fun. The older one is more finished.) Racket is the implementation that's designed to work with it, and is available for Windows, Mac, and Linux. For free.
    The book is about program design, not about piecing together fragments found on the web.
    The Racket mailing list is a place where students can actually ask questions and often get the language designers and implementers to answer even trivial questions.
    Try it. It won't take long, and you will learn.
    To the extent you are already experienced, you will find the beginning a bit tedious. So skim through until you reach your level.

    -- hendrik

  78. Can you teach an old dog new tricks? by Anonymous Coward · · Score: 0

    Yes, if the old dog is alert and interested.

    I've been learning new stuff for 40 years.
        10 years ago, I learned to fly.
        That's a much steeper learning curve that just learning a new framework.
              (Including weather, aerodynamics, ATC, and especially human factors.)

    Your brain is a really neat gadget, but the manual for it says use it or loose it.
        Get off you butt and get with it.
          (But be smart and use the tips for doing it the easy way from the rest of the folks on this site.)

  79. No Old Programmers by porsche911 · · Score: 1

    Old Joke: "What do they do with Engineers when they turn 40?" A: Buy them a birthday cake then take them out to the parking lot and shoot them.

    18 years of experience probably means you are either getting close to your 2nd cycle of becoming an "expert" in a technology area or you've been doing the same 2 years work 9 times in a row. Either way, it's time to get out of your current sweet spot and learning something entirely new. You need to get "leverage" with your experience. Really learn something like Agile Processes, Project Management, Finance, a critical business area, requirements management, Continuous Integration/deployment tools, DevOps, etc. Don't try to recreate the same old skills in a new programming language -- it's a dead end.

    Me? I started programming 40 years ago in high school and have over 30 years industry experience. I've tried to learn something new every 18 months and have managed to survive so far.

    Good luck, the next 10 years of your career can either be the best decade or the hardest depending on how flexible you are.

  80. Yes Yes Yes by pcjunky · · Score: 1

    My wife, who started programming in the late 1970's went back to College in 2008 to complete her BS degree. She learned PHP, Java, Java script, CSS. Graduated with honors from UCF. She is very skilled at web development now. She is 53.

    She even completed a MS style Thesis in the honors in the majors program.

    http://explorer.cyberstreet.co...

       

  81. It's really just that there are more developers. by Anonymous Coward · · Score: 0

    It's not really "kids these days" so much as you have a lot more people developing at different skill levels. There are plenty of young developers doing great things. There are plenty doing bad things, but that's because we have the tools where people with less skill can still be productive in some way.

    When I was growing up, only a handful of people I knew had computers. Now they're everywhere. Getting started in development is easier than ever. There are on-line resources of various qualities, and I had magazines and books to learn off of, and they could be hard to attain as a child/teen.

    So you can do more quicker now, and there's a lot less quality... but that doesn't mean the number of truly talented developers has gone down. The number of developers has skyrocketed, and the number of good ones is about the same or slightly more. :)

  82. You've already given up by Anonymous Coward · · Score: 0

    Truth is, if you ask a question like that, you've already given up. Me, I've been programming now for more than 25 years (started when I was 18). I took a slightly different path than most, as I started on little 8 bit microcontrollers, worked my way up to PCs, and now am doing website and networked app stuff.

    Languages I have used (from the beginning to now) - Fortran 77 (in college), Motorola 6502 Assembly, C, Intel 8051 Assembly, C++, VB 6, Delphi 1-6, VB.NET, C#.

    I will never to old to learn, in fact this is what keeps me doing this job. Taking and evaluating technologies and applying them to solve problems for my employers is quite satisfying.

    Truthfully, I think what a lot of people miss is that all programming, frameworks, IDEs, etc. are tools to solve problems. Find new problems to solve and solve them using tools and frameworks.

    If you aren't programming for a living, pick up an open source project that interests you, look through the bugs and feature requests and solve the problems.

  83. I'm more curious by koan · · Score: 1

    Can say a 50 year old learn to code? I always see it referred to as a young person job, and only for young people to learn, I never see anything on an older person learning to code.

    Is this unheard of? Does it happen? Has any one here learned to code at an older age, say above 40?

    --
    "If any question why we died, Tell them because our fathers lied."
  84. Re:If you need to ask, then for you the answer is by XxtraLarGe · · Score: 1

    I must agree with this. It's possible for some, but you need to have an explorative mind, that apparently you don't have if you have to ask here.

    Or maybe the guy is just experiencing some self-doubt, and needs some encouragement from others who have faced similar challenges and prevailed.

    --
    Taking guns away from the 99% gives the 1% 100% of the power.
  85. In Defense of Frameworks by Anonymous Coward · · Score: 0

    I would like to take the opposite position from just about everybody on this forum. Frameworks are vital to modern programming. Not using frameworks is like reinventing the wheel for every program. If you had to drive a nail into a piece of wood would you first forge a hammer? Frameworks help you avoid writing mundane code that has been written a hundred times over, and focus on the new creative stuff.

    I have noticed a lot of this anti-framework sentiment is fueled by performance concerns. First of all early optimization is the programmers greatest foe. The most important thing is to just get something down, a rough draft. Later you can come back and optimize. But remember in the real world there are deadlines and your boss doesn't care how little memory and cpu time your program uses if it doesn't do what he/she asked. Second, if you work at a company they are most definitely going to be using frameworks that you have to be familiar with. You can't just submit code to your team that uses your homebrew framework instead cause you say it's more efficient. They probably wont believe you.

    I don't know what frameworks you guys are using, but many of them are powerful and highly optimized. I'd love to see someone here write a better physics engine than Box2d or a better Json library than Gson in under a year. And why would you? Again the whole point is to focus your time on writing the specific code that will solve the problem at hand, thats the fun part.

    1. Re:In Defense of Frameworks by Anonymous Coward · · Score: 0

      Added by author.
      Case in point, requirements for recent job offerings. Look at all those frameworks and IDE add-ons:

      IBM Tech Branch
      o WebSphere Message Broker v8 or v9
      o WebSphere Message Queue
      o Server-Side Language: eSQL (some clients use Java)
      o WebSphere DataPower
      o IDE: Eclipse is used with an AddOn

                        Microsoft Tech Branch
      o Server-Side Language: C#
      o Client-Side Language: HTML5, CSS3, JavaScript
      o IDE: Visual Studio 2012 or 2013
      o Framework: ASP.NET MVC 5 with Razor Engine

                        Mobile Tech Branch
      o Framework: PhoneGap (Primary), Worklight, Native
          For iOS and Android development
      o Client Side Language: HTML5, CSS3, JavaScript
      o IDE: Eclipse (Worklight has an Addon)

  86. Re:It's really just that there are more developers by gweihir · · Score: 1

    I agree on the number of good developers. However, from what I see, the mediocre and bad ones that make this their profession do more harm than good. For example, a while back I did a (very partial) review of a project that was aimed at replacing a piece of critical infrastructure in a large company. The project was convoluted, slow, had extreme algorithmic errors (I accidentally found a quadratic sort that could have very large input), was very hard to get an overview over, etc. The project was canceled a bit later. It had been the 3rd failed attempt. The problem is that while these people had a lot of developers, they did not have any good ones or the good ones could not perform because all the "helpful" tools and processes stood in their way. Now, if those people had 20 really good developers instead of several hundred mediocre to bad ones, they would never have gotten into that fix. Coding is hard. In order to have a positive productivity, you need to be pretty good at it.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  87. Good perspective on frameworks by MillerHighLife21 · · Score: 1

    The biggest thing about frameworks is that they are supposed to give people the ability to learn one way of doing things that provides a structure to solve just about every use case for a particular type of problem and in doing so, make it easier for teams to collaborate. That's why Rails and it's clones have taken off so much. You learn rails and you can jump from project to project without having to figure out exactly why/how each individual programmer decided to do things differently. Additionally, they automate a lot of the repetitive processes and code that people continuously reinvent.

    For web projects, this is great but it's not without it's problems. Web projects GENERALLY follow the same type of behavioral requirements, so in 95% of cases a framework can handle it well. The down side is when people get MARRIED to their frameworks and start ignoring good architecture in favor of the best way to do things within the framework. The creator of rails itself, DHH, is the single worst offender in this regard because he advocates doing almost nothing in the database itself which is like building a person with only one leg.

    Frameworks aren't for every problem and a lot of successful web projects get mired down into a huge main app and then spend a couple of years having to refactor parts of it out into services. The key word there is successful though, because they can afford to take the time to refactor because they got to market and made money. Rails gets you to market quickly with all of the capabilities that you need to get the job done. Successful app after successful app have been launched with Rails as it's backbone and that's EXACTLY what it's supposed to do for you.

    However, if you're dealing with an existing application or an enterprise scenario where you will be integrating with a legacy database or throwing an existing user base at a rebuilt system...it is not the right place for a framework. In those scenarios you're effectively already at the "successful now refactor" stage.

    Everything has it's place.

    --
    "Don't teach a man to fish, feed yourself. He's a grown man. Fishing's not that hard." - Ron Swanson
  88. Ruby on Rails by meta-monkey · · Score: 1

    Ruby is the scripting language, and Rails is the framework that includes everything you need to quickly and easily make web applications. RoR emphasizes DRY and RESTFUL techniques that you can carry over in to any other langauge you use.

    I know everybody here hates RoR because it's noobish and popular, but there are jobs for it and it's very easy to quickly whip up some sample web apps you can put on a resume. There are also tons of books and online tutorials. I rather like Railscasts

    --
    We don't have a state-run media we have a media-run state.
    1. Re:Ruby on Rails by geekoid · · Score: 1

      I hate it becasue it's poor and adds nothing to the industry.

      If it's easy, then it should have almost no value no a resume.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  89. It all (mostly) looks like C... by taoboy · · Score: 1

    It helps that most of the "new" tech either builds on or borrows from the imperative programming foundations laid by C. I've transitioned from Perl to stuff like Java and Javascript/HTML5 without a lot of pain. Over the years, I've occasionally revisited stuff like Lisp and Scheme, but that seems a bridge too far. Yes, John McCarthy, I'm doing it wrong, but I'm too old now to give a shit...

  90. Gets boring after 20 years by Anonymous Coward · · Score: 0

    I'm in my mid 30s, and it's exactly like toys and video games, you just can't enjoy it as much as you did when you were young.

  91. To ask the question is to answer it. by whatthef*ck · · Score: 1

    If you can't do it, you can't do it. Don't assume it's because of your age.

  92. as others have said: scratch an itch by acroyear · · Score: 1

    Just find a personal itch to scratch and scratch it.

    Doesn't have to be something you'll release, but being able to show it in action is an interview booster (thus, if it is mobile, all the better). The fun part is that once it is scratched and you decide to move it somewhere else into the cloud for more permanent hosting, there's another itch to scratch.

    Case in point, I put together a shopping list manager using node/express/mongo and jquery/jquery mobile/stativus. Then found that if I were to deploy it at my webhost, I don't have mongo so I then needed to learn an ORM system for node to mysql (using bookshelf js right now). Similarly if you build something in mongo, you can look to learning AWS or Google Cloud Development and get the app out there and there's another skill on the resume checklist.

    In fact, doing the database port actually helped me develop and refine unit testing so my data-access layers had the same front API - knowing you're replacing a single piece actually encourages writing the pieces to be more modular and independent.

    All javascript, plenty of html5 modern architecture skills learned or refined, and this from someone who spent most of the mid-late 2000s as a J2EE w/ Oracle guru.

    So really, the short answer is: just do it.

    --
    "But remember, most lynch mobs aren't this nice." (H.Simpson)
    -- Joe
  93. Never too late. by Anonymous Coward · · Score: 0

    I've been programming for 30+ years and not a year has gone by that I haven't learned some new skill or trick. Sometimes I've been guided into different practices grudgingly, but even if there is something you dislike, learning is almost always worthwhile.

  94. Re:If you need to ask, then for you the answer is by Anonymous Coward · · Score: 0

    The "nuderstanding" typo is in fact a great term to describe thorough understanding, or understanding without the hindrance of semantically empty layers of nonsense.

  95. No and F-you by Anonymous Coward · · Score: 0

    Stop whining about being to old to learn. Just STFU and start doing.

    The only difference between now and then is you have to be willing to sweat out learning the new stuff the same way you did 18 years ago.

    Right now you're just old, well paid, and too lazy, yeah that's right lazy, do actually do something new; because doing something new is hard.

  96. Not if they are by geekoid · · Score: 1

    asking stupid questions like that.
    As an old programmer who has spent his life constantly learning, there aren't new tricks, just more learning.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  97. Re:If you need to ask, then for you the answer is by Quirkz · · Score: 1

    I'm going to disagree. It's a good discussion, and there are a lot of other people out there wondering roughly the same thing. I'm not a programmer, just a hobbyist, and I've wondered multiple times whether I should spend my limited free time trying to learn more about a language, or more about a framework. The few times I've looked at frameworks, it's seemed like I needed a whole book to figure out what it actually did, and after a few hours I bailed in favor of just focusing on the language and learning how to code what I needed, rather than learning how to use what other people coded that I might be able to make use of.

    But I've *also* wondered many times whether I just wasn't getting it, and if maybe I was spending far too many hours recreating wheels when if I'd spent another five minutes understanding someone else's wheel + cart + horse combination I could be saving myself tons of trouble, and possibly get the benefit of things I wouldn't even think to do on my own.

    I'm very curious about this discussion, and I think I'm getting some useful information out of it. Whether or not it helps the OP, this is definitely a case where he's asking what I was thinking, and I doubt I'm the only one.

  98. Re:It's really just that there are more developers by Anonymous Coward · · Score: 1

    What a lot of business / hiring people don't realize is that not only can you have a 10x developer, you can have a -10x developer. You can actually hire a developer that has negative productivity by botching up existing code that must now be fixed by someone else. In the worst case, it can fail the project, or set it back years.

    And this is what the company's infrastructure resides on. It's a wonder companies don't pay more. Too many degenerate gamblers out there in hiring positions.

  99. Perpetual Learning by AndyCanfield · · Score: 1

    How to young programmers get to be old programmers? By learning.

    I've been programming for forty-five years; FORTRAN, COBOL, ASSEMBLER, PL/I, RPG, Pascal, Basic, HTML, JavaScript - you name it and I've written bugs in it. You MUST evolve or get left behind in a home for obsolete programmers.

    Based on several recommendations, I am now learning Ruby On Rails. Not because I can't make PHP dance on the head of a pin, but because my customers want to hear those three magic words. What they want to buy, I will sell them. I can, and have, done OOP in assembler, but there's no market for that.

    The Internet makes it easier to get the information, but it does not make it any easier to cram that information into your brain. It still takes time and energy and effort to remember whether the IF statement parentheses are prohibited or optional or mandatory.

    Personally my all time favorite language was Pascal, because it reads close to English. I used words, not funny braces and brackets and abbreviations. Ruby insists that I write "def": instead of "define"; I don't know why, but that's what I must write this year.

    - www.andycanfield.com

  100. Everyone is Different by greatmatter · · Score: 1

    I've been coding for 20+ years and get excited when I see new technologies/languages/frameworks to learn. Bring it on--and don't stop. I just wish there were more flexible developers out there.

  101. No, never too late ... by kbahey · · Score: 1

    No, it is never too late for someone who is willing to learn ...

    My career spans some 30 years, and I did reinvent my skills every now and then.

    I changed careers to computers in the mid 1980s, from pharmacy, of all things. Started with playing around with a Sinclair ZX Spectrum. A year later, I got a job doing programming in COBOL on mainframes, along with PCs. A couple of years after, it was finally UNIX, where I realized this is the system for me. Some years after, it was Linux. Several years after that, it was LAMP (Linux, Apache, MySQL, and PHP).

    Now I do consulting on open source exclusively, as a small business owner.

    Just have to learn new things every now and then, and do actual projects with them.

  102. Didactic classes may actually help by AnontheDestroyer · · Score: 1

    They can give you some direction, and, in some cases, help you navigate the framework hellscape. Pick a topic, and see if you can find an online class for it, either with a University or a MOOC. You may also notice that with your experience, you can run circles around some of the other students. Incidentally, having worked with a few self-taught duct tape coders - who tried to build the whole system out of duct tape, not that you are one, I'm just saying - a generic, high-level "Software Development" course where they teach design patterns, software architectures and practical development, may be in order.

  103. Have You Considered BDD? by LifesABeach · · Score: 1

    I think of it as a 4.5 level language experiment.

  104. Don't fight it by NewWorldDan · · Score: 1

    I think the biggest problem we encounter when moving to a new platform is looking at it and seeing everything that's wrong with it. Moving from C# Windows apps to HTML/JavaScirpt/CSS has been very frustrating because nothing works the way I think it should. It's a terrible platform, but that's just the way that things are done now, so you better get used to it and just accept it.

    But to make a modern web app, you're going to need some additional frameworks on top of the HTML, JavaScript and CSS. So you've got jQuery and BootStrap and whatever else on top of whatever is assembling pages on the server side of things, MVC, or whatever else. So you've just got to dive in head first and fully commit yourself to doing things the new way or you're going to get left behind. I've seen old programmers who made the change, and I've seen guys cling to what they're comfortable with and slowly become obsolete. And that's why I'm using the Slashdot beta.

    1. Re:Don't fight it by phantomfive · · Score: 1

      And that's why I'm using the Slashdot beta.

      wow, that's the scariest twist at the end of a story I've ever heard!

      --
      "First they came for the slanderers and i said nothing."
  105. Can we please stop asking this question? by Schnapple · · Score: 1

    Look, I get that we're all getting older and that there's traditionally been something of an age bias in IT but can we please stop having a "hey am I too old do be doing programming?" story every fucking week?

    No you're not too old. Yes you might have a harder time finding work at your age (whatever age it is) but there's so many other factors (choice of technologies, state of local technology scene where you're at, whether or not you have people/hygiene skills) that no one can really say what it is. Yes you have commitments and debt and maybe a wife and kids and the fresh kids out of college just have those to look forward to. But come the fuck on.

    There's basically two things people worry about - is your age causing you to lose job opportunities and is your age making your mind slower/worse/etc. If you're asking for an absolute answer to either then it's no. We've established this over and over and over. There are just as many jobs out there looking for fresh faced kids as there are looking for seasoned professionals. The reason that the game industry, with its cutting edge technology, is mostly young people is not because young people's minds are more amenable to cutting edge technologies, but because the game industry overworks, under pays, and generally churns through most of its non-Carmack-level talent and causes people to switch to mundane business rules programming for 2x the salary and 100x the stability.

    Now can we please move on to something important like whether or not Bitcoins cause Libertarians to commit suicide?

  106. I find user group meetups useful by peter303 · · Score: 1

    We have about dozen in my city on Java, html5, mobile apps, etc. Sometimes its people demonstrating work projects with the approval of their management. other times its personal projects, often open source. We have several professional teachers inthe area who write the OReilley books and give company in house courses. I dont use much of what I hear about myself due to lack of time. But I try to keep informed about trends in technology.

    A side effect is due to extreme recruiter demand we have free pizza, beer, books, etc. at these user meetings. There are often ten times as many open jobs and peole looking during the job session.

    My first user group was the Homebrew Computer Club meeting at the Stanford Linear Accelerator in the mid 1970s. I learned a lot there and still learning things 40 years later. I've been to other groups on Amiga, UNIX, Mac, NeXT, SIGGRAPH, etc over the decades.

  107. Don't blame your age... by SpinyNorman · · Score: 1

    You're problem isn't that you're too old to learn, but rather that (per your own description) you were never that good to begin with. Any fool can do simple programming.

  108. really? by Anonymous Coward · · Score: 0

    Did you forget how to read and learn?

  109. Re:If you need to ask, then for you the answer is by skids · · Score: 1

    Every good engineer I know, software or otherwise, can't resist learning how the next new shiny works

    There are too many next new shiny things for any one person to figure out how they all work. A good engineer has to have either instinct or guidance so they don't invest time in doomed flash-in-the-pan technologies so they can use the time more productively. Especially since a good engineer is already spending most of their time actually working their current assignments on top of learning new things.

  110. A framework is a new language by scamper_22 · · Score: 1

    I'm probably quite young, but I learned programming in C and assembler as my starting languages.

    That said, I have worked on many frameworks including things like ASP.NET and Java Enterprise stuff. My first one was probably MFC.

    Here's the key thing that got me for a long time.
    Learning a new framework is like learning a new programming language from scratch. You have to put in the same effort into it. At least I need to as I need to understand what the framework is doing before I feel comfortable using it.

    I reflect at all all the time I spent learning C/C++ and it was filled with books and trial and error and nuances.

    Yet, when first presented with Frameworks, that is generally not how it is approached in companies. It took me years to get pretty good at C and C++ including STL... Frameworks are thrown around so quickly, it is almost like they just expect it to be easy to use and you just call a few methods and away you go.

    So that is the first thing, you need to put in the time to learn it properly. There is also a certain amount of trust that occurs. I've found myself learning to trust frameworks more. I can't really explain it, but I trusted MFC when I used it. For all the weirdness it used and preprocessor crap, Microsoft provided a pretty good IDE that made it easy enough to use and get started. Boy was there a lot of mysterious boiler plate code.

    And yes, MFC is technically C++ I guess, but you really needed to learn MFC to actually do and understand anything.

    It's the same with say Java. You might learn Java, but you need to learn Spring or Hibernate or Maven or whatever.

    A lot of modern frameworks don't really come with that nice custom tailored IDE. Some do integrate nicely with say Eclipse or whatever, but it still generally leaves you in a state of uncertainty.

    That is one area I've always appreciate MS in. For their frameworks, they tend to provide the custom tailored tools to actually let you use it.

    But lesson. The lesson is, it's going to take you a while to learn the framework. It's going to take you even longer if you plan on being an expert and knowing how it works underneath.

  111. Are You Really Having Trouble by TechNeilogy · · Score: 1

    or do you just think you are? It's easy to minimize the amount of work it took to get to where you are. When you first learned to program, you likely took it day-by-day, just being involved with the process itself and enjoying the it without worrying about how fast you were learning. You may actually be learning faster now, it paradoxically just feels slower because you're comparing it to all the things you already know.

    --
    "The wisdom of the Patriarchs was that they *knew* they were fools." --Master Foo
  112. Re:It's really just that there are more developers by Lumpy · · Score: 1

    There is a problem in the industry.

    Good coders are expensive. Medicore ones are a dime a dozen. Management thinks it is smarter to hire 10 medicore programmers for less money than 1-2 good ones.

    Thus you get failed projects and exactly what they paid for.

    --
    Do not look at laser with remaining good eye.
  113. Cheap vs. Good by Anonymous Coward · · Score: 0

    This comes from the race to the bottom where companies prefer programmers who are cheap to those who are good. All those H1B's coming over here because there are no good software engineers? What they really mean is there are no good software engineers who will work for peanuts. Now those good programmers just work as high dollar contractors who come and clean up the mess after all of the cheap programmers make a hash of things.

  114. No, because... by Anonymous Coward · · Score: 0

    ...you've been writing shitty code for 18 years and now you still don't realize it's shitty code. Before you can move forward you have to understand why what you've been doing all this time is bad.

  115. A book and a project. by mypalmike · · Score: 1

    > I never learned to ... write modular, DRY code

    Don't worry about frameworks right now. This is your problem right here.

    The book that helped me best in learning to write modular code was "Analysis Patterns", by Martin Fowler. (http://martinfowler.com/books/ap.html) It's ancient now (from 1996), and you can find used copies on Amazon for under 10 bucks. I came across it back around when it came out (yikes, that's 18 years ago!) while I was buying up every book I could find on OO, and this is the one that really made plain to me how to approach object design.

    With book in hand, I might recommend also trying to write a text-oriented version of a card game. Crazy 8's or go fish where the number of players can vary and the "AI" is simple.

    And if you really want to focus on modularity, I'd say write this game from scratch in Java. It's a language that definitely prods you towards modularity. Everything is in a class. One class per file. With that constraint, most developers learn to think carefully about how to organize code, and the lessons learned can be used in any language.

    --
    There are 0x40000000 types of people: those who understand 32-bit IEEE 754 floating point, and those who don't.
  116. Old programmers learning new tricks by geezenslaw · · Score: 1

    I just read thru a lot of these noobs ranting about old programmers learning new tricks to get a job.

    First of all it appears you have no formal training just the abiltiy to hack.

    In my estimation in contemporary software dev trends this is an advantage (especially in the eyes of HR or the employers).

    Where I WAS working the 25 year old English degree M$ admin guy completed the first installment of the lynda.com beginners tutorial for Java and the next day was promoted to Java dev.

    It works! Right now the kid is being spoon-fed brain-dead easy issues so the management believes he really can code (the project narcisist does an OTS pointing to which buttons to push).

    If I asked this kid questions about machine arithmetic vs human arithmetic (3 questions or so...) he would not get past the first machine question: Can computers divide? It would just be eyes-in-the-headlights!

    So, yes, go ahead and hit the online or brick-and-mortar for training.

    I recommend Java for one because of all the JVM based frameworks out there right now (see devrates.com).

    And, because the employers want a rediculous stack of techno including Java.

  117. Lots of people have done it by __roo · · Score: 1

    I wrote a popular book for learning C#, and I routinely get emails from people who started programming in the 80s and 90s who felt their skills were going stale and were able to pick up C# without any difficulty.

    I do not believe there is an expiration date on our ability to learn new programming skills. This applies for any language, whether or not you use a book... as long as you remember that most (only?) effective way to learn a new language is doing lots of projects (that's something I focus on for my readers).

  118. Re: Practical applications (find a good cross plat by Anonymous Coward · · Score: 0

    I've used Qt and while bloated, it was useful. I now use JUCE, it is a C++ framework that works on most platforms, android, iOS, OSx, windows, Linux. It is written by ONE guy, so it fits in one brain and is consistent and compact, pretty complete. While focused on being a support framework for music software such as Traction and music synth plug-ins, it is perfectly reasonable for a wide variety of apps. JUCE does what I need, it abstracts over most OS's, providing a lasting tool I can stick with for the long term that covers the devices I need covered with the same code mostly...

  119. No by kithchung · · Score: 1

    I think i'm suppose to say "Beta sucks" too? http://en.wikipedia.org/wiki/B...

  120. Re:If you need to ask, then for you the answer is by UnknownSoldier · · Score: 1

    I 100% agree with you. Many people assume older programmers are against "libraries" & "frameworks". We are not. We understand the rapid prototyping they bring. We are leery of the compile-time and run-time overhead costs.

    The one of the key differences between a novice and experience programmer:

    They know when TO use and when NOT to use a framework.

    The novices just want to shove more code at a problem until it "works" without really understanding the data flow. *facepalm*

  121. yeah yeah yeah by Anonymous Coward · · Score: 0

    If you have mastered(well no one really has 100% even 30 year old veterans) c/c++, know plenty of algorithms, then you should have no problem learning new languages like c#, perl, python, etc...

  122. Re:It's really just that there are more developers by KingMotley · · Score: 1

    It's not a problem. That is my bread and butter.

    I fix all the stuff that a team of developers totally botched.

  123. What has really changed? by Anonymous Coward · · Score: 0

    Nothing really has changed, and the concept is still the same.
    INPUT -> PROCESS -> OUTPUT
    The way it is done doesn't matter.

  124. I've been programming for 45 years by Calibax · · Score: 1

    I started programming professionally in 1969 with Fortran, followed by COBOL in 1970, Algol and IBM 360 Assembler in 1972. Since then I've coded projects in Basic, Simula, ESPOL, NDL, Databus, PL/1, PL/S, Rexx, Forth, Pascal, and half a dozen different assembler languages such as 6502, 6800, 68000, x86, Datapoint, PDP-11 and PowerPC. My current languages of choice are C, C++, C#, and JavaScript, although I can do Transact/SQL, Visual Basic, and Python if needed.

    Here's my point. A computer language is just a way of expressing simple commands. The concepts are pretty much the same across most procedural languages. A DO loop is a DO loop, regardless of what you call it and the exact syntax. A much bigger issue is learning the idioms and the libraries associated with each implementation of a language. Just like human languages, the more of them you know, the easier it is to pick up the next one.

    I've never had any formal computer classes. Back when I started there was no such thing as a computer science degree - most university classes in computing were done the math department. But you still have to learn. Buy books, read them, do small projects to familiarize yourself with the languages. Make yourself learn. It's your career, manage it. Make certain you have the skills that are needed, and if you think you don't have the skills you need then be proactive in getting them. Use the Tiobe index to see what's trending up.

    I'm at my sixth company at present. I have never been unemployed. I don't code as much as I used to because I'm in an architectural role now, but I still can code and I enjoy it immensely. I'm still the go-to guy in my areas of expertise. I made the mistake of going the managerial route at one point and discovered I hated it. Computers are easier to handle than people - they don't lie, they do what you tell them, and they don't have hidden agendas, and they don't backstab.

    18 years is less than half of your working life. Coders will be needed for long time. Application coders will needed for years to come. People will be needed to code operating systems, drivers, environmental software, IDEs, compilers, etc. for many years. Don't give up, and don't believe all you read about ageism. I interviewed for my current gig with a full head of grey hair.

  125. Of course you can by tompaulco · · Score: 1

    For a good programmer, asking whether you can use a new language or framework is like asking someone who builds watches if he feels he could learn how to tell time. Of course you can. Anybody who knows the foundations on which the tool is built is far preferable to someone who merely knows how to use the tool.
    Now, you'll never get passed HR, who is only looking for people who used that tool exclusively and recently and doesn't care whether you actually WROTE the tool.

    --
    If you are not allowed to question your government then the government has answered your question.
  126. Compairing Apples and Organs.. by Anonymous Coward · · Score: 1

    Before internet:
    Usually one computer, one client, and zero server(because it is on one computer).
    One O/S platform.
        Had known libraries.
        Had known software
    One hardware platform.
        One CPU.
        Had known amounts of memory.
    THIS WAS THE STANDARD.

    After the internet:
    Multiple computers, multiple clients, and multiple servers.
    Multiple and sometimes unknown O/S platforms.
        Multiple and unknown libraries.
        Multiple and unknown software.
    Multiple and unknown hardware platform.
        Multiple CPU's.
        Unknown amounts of memory.
    THIS IS THE STANDARD NOW.

    Before the internet you made the standard.
    After the internet you have to apply the standard.

  127. No by Anonymous Coward · · Score: 0

    18 years of writing shitty code(which is exactly what you described) is too big of a habit to break.

  128. Re:It's really just that there are more developers by Lumpy · · Score: 1

    Good for you, but it still makes me weep that our industry has been turned into a sweatshop of medicore messes.

    --
    Do not look at laser with remaining good eye.
  129. Try this by Anonymous Coward · · Score: 0

    https://www.youtube.com/watch?v=EtJy69cEOtQ

  130. Group Grope by John+Da'+Baddest · · Score: 1

    Lot's of suggestions here for singleton work, but maybe you should get into something new by learning in a team. This could be "extreme programming" if you're already working in a paid corporate job, or by taking a real course someplace where you can interact with similar mindsets. (The course itself may be less useful than the peer interaction, so still worth the cost.) And sometimes software conferences have workshops or "interaction sessions". Community colleges are another possibility for special topics.

  131. You can if you want to... by mr_wook · · Score: 1

    I find myself disagreeing with most of the comments below, although the ones I read all have merit. As someone who's been programming since 1973, (professionally since 1975), I find learning new frameworks and methodologies not only interesting but important. When mentoring younger programmers who lack a CS background, I try and recommend the classics: Design Patterns -- see what you do and don't do based on what you read here; Prefactoring -- learning some good habits fundamental to all development; Knuth -- it's like a granite foundation in a box; Once you've gone through these, I hope it will have opened your eyes to evaluating new frameworks, languages, and methodologies. This should help you hone your discretion as you evaluate (and reject) various options you encounter. Also, think about extending your skill sets through building APIs, developing data management skills, client/server (not just REST), etc. I've had to learn 4 or 5 new systems and APIs in the last 6 months, with 6 more to come, as well as providing API and server infrastructure support. Good luck, if I can do it, you can.

  132. Solution by Anonymous Coward · · Score: 0

    Fire them.

    10CHAR

  133. Re:It's really just that there are more developers by HornWumpus · · Score: 1

    When was it not? I'm only 50, I've seen/worked a few places that were exceptions for a while, but generally when has the industry not been a 'sweatshop of medicore messes'?

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  134. Re:It's really just that there are more developers by Lumpy · · Score: 1

    Leave me to my delusions that my professors gave me!

    I honestly warn a lot of youngsters away from CS, "It is the new factory work". You leave college with all that debt and utopian dilusions that it is a noble profession and discover that it will chew you up and spit you out if you are not a part of a very specialized and needed segment that cant just replace you with another fresh grad.

    This is why I LOVE embedded work, CS grads cant wrap their head around only having 6-8K total for program and storage. so us old farts cant be intimidated to spend 22 hour days 8 days a week at the office to meet retarded deadlines.

    --
    Do not look at laser with remaining good eye.
  135. Re:If you need to ask, then for you the answer is by HornWumpus · · Score: 1

    Dude, you forgot to click 'post anon'.

    Now everybody knows you've written Cobol!

    My college prof noted 30 years ago. 'Everybody who knows Cobol, is embarrassed to admit it'.

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  136. Sure, just do this by CppDeveloper · · Score: 1

    If you really want to change the way you code then read the following article.

    http://binstock.blogspot.com/2...

    Pick an old project that you think might be a good candidate for a major re-factoring and follow EVERY SINGLE ONE of the rules and rewrite it using them.

    I think that some of the rules are a bit overkill but as an exercise and to force yourself to learn some new tricks follow them all and don't stop following them until they are second nature.

  137. I'm 63 and learn new things by hughbar · · Score: 1

    The secret is probably that [like many anoraky people] I enjoy the new things, I'm a neophile. Also, I'm not afraid to be mediocre at some things, I enjoy, a luxury I have because I don't use everything I know 'professionally' nowadays. But, if you don't enjoy technical stuff and do it 'just for money', it's harder to learn.

    A couple of open source projects, however small, probably help as well, to 'fix' knowledge. 18 years pfui, get off my lawn...but seriously, yes, you can.

    --
    On y va, qui mal y pense!
  138. Re:If you need to ask, then for you the answer is by yinzara · · Score: 1

    I find your comments distasteful as I find all the other comments that disparage all frameworks. I will definitely say "Flavor of the month" frameworks are a dime a dozen and are nearly useless, however there are MANY very well accepted frameworks that increase the speed of development (and in turn the modularity and maintainability of the code). Have you tried to write a dynamic website without jQuery (or an equivalent)? If you say "I don't need it", then you're just ignorant or inefficient. Have you tried to build a large scale java application without Maven (or an equivalent)? How about create a RESTful web service without any framework (there are many options though for Java I prefer JAX-RS and reference implementation)? Have you ever had to maintain someone else's application? The more industry accepted frameworks they used, the easier it is to understand what they were trying to achieve and how they did it. If you have to read tens of thousands of lines of code to process an HTTP request, you'll never be able to manage it. There is a huge difference between a physics engine in a game and an enterprise transaction engine or a business process engine used to manage 100,000s of financial transactions. I'm really sick and tired of all the embedded systems or games developers or with old C guys who think it's the solution to everything trying to make these vast generalizations about what is viable in the world of development. Not all development is about the speed or efficiency of the code. Much of it is about maintainability and modularity and without frameworks that can be nearly impossible.

  139. I'm on the other end of that... by Chirs · · Score: 1

    I've been working for over a decade on the server side of things. Linux kernel customization, device drivers, high-availability, fault-tolerance, etc. Mostly in C, more than a little bit of assembly, some shell scripting.

    There's a lot of that stuff still being done, and it's a pretty good living since there aren't all that many people who are comfortable in that environment.

    1. Re: I'm on the other end of that... by Anonymous Coward · · Score: 0

      Full ack.
      About what is 'the future' there are the booming areas and also always the 'cash cows' for programmers ;)

      I have just 20 years expertise in Oracle RDBMS based stuff - which might be not really hip anymore - and also lots of experience on many unixes, linuxes several languages etc. pp.
      I am still no mobile dev, but have a good income knowing all that 'crap' I know and luckily understand ;)
      Learning something new is sth I always do. And the learn a new paradigm really is the hard and I think most interesting part :)

      As response to the original post I'd say start writing tests of something you have done and then program it top down. Try to stick close the the paradigm defined for the language and don't get too fancy using it.
      Maybe ask friends for reviews so you might get insight in what you tend to do and shouldn't and where the strengths of the new language lies. Like that I think and hope you get 'the point' :)
      I ignored java for 10 years cause I did not get the OO part. Some years ago I tried again and this time it worked :) maybe sometimes giving new ideas time to settle is also a good idea. For me it was.

  140. Learn the basics, clone and contribute by Anonymous Coward · · Score: 0

    Learn the basics of a programming language (say Ruby or Python), clone a free software project and contribute to the community. When you hit an issue, people will be willing to help and your learning process will produce usefull code, not just code that will get thrown away. Coding is social these days.

  141. Re:If you need to ask, then for you the answer is by deroby · · Score: 1

    The problem with this kind of thinking is that there is no real continuity any more. There used to be a time when you could take code from a couple years back and copy-paste it into your current project. Nowadays we switch technology so fast that you can hardly understand the code from 2 years back again because you got out of touch with the frameworks it worked on.

    On top of that. I've seen projects being restarted over and over again trying to build the same solution using 'what's new this year' technology; and pretty much each time it fails on some new 'unforeseen' thing... It kind of works; but it isn't great. But who cares? They're convinced that when they rewrite it next year using that new framework/paradigm/whatever it will surely be perfect.

    Mind you, I don't mind looking at new stuff; but in my experience it's often times the same thing packaged differently over and over again. So where is the real benefit? Using "the old methods" I know exactly where the pitfalls are and how to avoid them; using the new stuff sometimes looks quite promising and might take a lot of the grunt-work out of my hands so I can focus on the 'real fun things'; but when it obscurely fails it can be very frustrating and consume a lot more time than I assumed I had won. It's a very grey area sometimes.

    --
    If there is one thing to be learned on slashdot, it has to be sarcasm.
  142. Re:wow - Donald Knuth by parodigm_shifter · · Score: 1

    I mentioned Aho, Hopcroft & Ullman before. Another series of books/lectures to consume to change your brain about what you're doing when you're programming is Donald Knuth's series The Art of Computer Programming. You can start from here: http://cs.stanford.edu/~uno/ta... Go find some of his stuff on YouTube. You will undoubtedly cook your brain a bit, so give yourself plenty of rest between episodes of exposure.

  143. Re: Practical applications (find a good cross plat by Anonymous Coward · · Score: 0

    JUCE has shitty licensing.

  144. No. by Anonymous Coward · · Score: 0

    Mod this shitbag down.

  145. "framework" is an oxymoron by rewindustry · · Score: 1

    am not on /. much anymore, because am in the midst of doing exactly this, only for pity sake - JUST SAY NO TO FRAMES.

  146. Re:It's really just that there are more developers by gweihir · · Score: 1

    Indeed. Many developers are more expensive than not having them would be. Developing code is not like sweeping floors where anybody can have some positive level of productivity.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  147. Re:It's really just that there are more developers by gweihir · · Score: 1

    The issue is that mediocre developers are already around zero in productivity and may be negative. So 10 mediocre ones may be worse than one mediocre one. They certainly do not add up to anything good.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  148. Re:It's really just that there are more developers by gweihir · · Score: 1

    I am a CS grad, and I have embedded experience. It is not even that hard, typically you do not have to go down to assembler, but can to C with some limitations. The thing is that most CS grads are really bad these days and do not know the basics and do not care about them either.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  149. Re:It's really just that there are more developers by Lumpy · · Score: 1

    You are a rare one that actually cares about the craft.

    --
    Do not look at laser with remaining good eye.
  150. Learn by example by hh10k · · Score: 1

    Learning a framework (or any language or library) from scratch by reading documentation, or writing new applications by yourself, is doing it the hard way.

    If you want to use a library of code, you have to understand the mindset/philosophy of the programmer behind it. If you don't, you're just going to be fighting it by re-writing or doing things in the most inefficient way possible.

    I would recommend finding a well-regarded application that uses that framework and discover how it structures itself around it. See how it handles things like data, events and UI. Maybe it goes well with other libraries? If you still can't make heads or tails of what's going on, then maybe the example you picked is too big :-)

    Try not to immediately discount a framework if you don't understand it at first. If it's popular, it must be doing something right.

  151. Switch your thinking. by Anonymous Coward · · Score: 0

    If you view your "skill" as learning new trends and constantly migrating, then you don't actually need to learn any new skills! Just keep applying the skill you already have.
    (Programming since the 1960s and currently fielding leading-edge personalization applications)

  152. still young by an_orphan · · Score: 1
    I'm 4 years experienced, I still remember when I had 0 years experience.

    The difference between then and now is a few things:

    1. 1. I actually, objectively, learn faster, I have more experience, more techniques at my disposal, and fast paths in my brain to do so.
    2. 2. The discomfort of not knowing something is much more pronounced relative to my usual competency.

    When I was just starting out, the relative cost of #2 was the same for a number of topics.

    Once you are an expert in one, working through feeling dumb all the time I imagine is much more frustrating.

    What worked for me and the best advice I could possibly give is to identify the smartest programming writers and speakers that are doing what you want to do, read their books, watch their talks, and embody their viewpoints of code.

    In the course of a few years of this you will gain a foundation whose benefits become more apparent over time.

    Dealing with the perceived discomfort from #2, I'm not sure as I'm super-crabby and still young, but the most up-to-date and fresh experienced developers I've had the pleasure to work with embody a childlike curiosity.

    #2 can be mitigated

    #1 is a little more biological

    I think #2 and related perceived tradeoffs dominate the learning equilibrium.

  153. Find someone by Anonymous Coward · · Score: 0

    Find someone who already knows the language you can work with, who can tutor you, sort of like a copilot who will sit beside you and help you, someone who really knows the language well. There are many categories in languages: procedural, functional, object oriented, SQL, contract, assembler ... all these languages have elements of each other in them, and they all have their strengths and weaknesses. For example, C is extremely fast. And, there are many languages. I think the one of the fastest way to learn how to program in a language is to do it and have somebody to show you how. How to use libraries is also very important, because much of programming has already been done, and you can save yourself a lot of work. If you need to rewrite a library, you can go back and concentrate on that, but if you know how to use what is already there, that saves you a lot of time, at least initially. Programming by its nature is very lonely profession but if you can find a group of people to work within sure ideas and help each other out, then you'll be far ahead of the game. Proverbs 9:9 says: Instruct the wise and they will be wiser still; teach the righteous and they will add to their learning.

  154. 95% of all the "new" stuff ... by Hohlraum · · Score: 1

    is just the old stuff with a flashy new name and a little frosting added. :) Stay off my porch!

  155. Mobile????? by bbsalem · · Score: 1

    I have a doubt that mobile displays and keyboards are anything more than a transition, although responsive design for narrow screens is valuable for accessabale designs for larger screens. The reason I think that mobile is overplayed is that the screen size limitation is probably going to go away and so desktop designs will gain importance on small form-factor devices when they are used on a hub with standard displays or when mobile devices make use of projection devices to create the keyboard and full-sized display with images painted on a table top or wall. So either a tablet or a projected full desktop will become the norm as the mobile devices become as powerful as current low-end desktop machines. This is already happening, projected keyboards already exist and projectors drawing full desktops on any desired surface can't be far off. The only value of the small cell phone keyboard is for use of the telephone. Maybe future mobile devices that aren't tablets will not even ship with a keyboard or OLED display. They will have projected displays and function exactly like today's desktops or laptops. If your mobile device is a powerful as your desktop, you may find it easier to not put up with that narrow display and keyboard at all.

    1. Re:Mobile????? by qpqp · · Score: 1

      I have a doubt that mobile displays and keyboards are anything more than a transition [...] the screen size limitation is probably going to go away

      You're right about that. The future is multi-modal.
      There's no one "display" or interface. It's ubiquitous computing and ambient intelligence all the way.
      You walk into another room, your interface roams with you. The computing power comes from the grid next to you, in your house, the bus stop, datacenter, in the mesh network of little devices all around you...
      I'm not sure about the role of the phone, or whether it will at all exist. What I do know, is that natural (also, multi-modal) interfaces will take over the keyboard sooner, rather than later.

  156. Re:It's really just that there are more developers by bbsalem · · Score: 1

    The more things change the more they stay the same. The failure rate of software projects has always been about that same and the number of good developers has been low. More than 70% of projects eventually get abandoned and maybe 10% of developers are competent. I have written code and managed systems and I do not consider myself to be among the 10% of competent, I am a relative hack having written FORTRAN in my early days, C later on and dabbled in OOD in retirement. Lately I have been interested in Python but dislike Java and see that the impediments to writing good clean code are about the same now as they were 50 years ago. Then it was abuse of GOTO and duplicating code that should have been put in functions, now it is bad design hidden away in class libraries. I balked at being asked to support java applications after legacy compiler experience because of that. I felt that strong typing and poor library design made the learning curve for java applications too steep and that the language was and is too wordy. I am someone with poor vision and I regarded the environment one gets with java to be far too busy and hard to read.

    When you look at the number of frameworks coming out, particularly the number written in javascript, presumably writem to avoid the awful mistakes of that language's design, beginning with the ease to create global variables, one is tempted to avoid both strongly typed languages and those with lots of class libraries, and functional languages do really need sideeffects, even though they can be abused. What is needed is abstraction and delayed typing or weak typing so that all of the complexity that relates to typing can be deferred to runtime. That is what I like about Python. But even python doesn't get around the human failing of most developers to not be able to write clean objects and to write decent documentation. Writing good documentation is almost more of a premium that writing clean code, because if the only thing you have to go on is crappy open source, and OOD tends to produce layers of boilerplate that makes it hard to get to the working code, then not having a good statement of what the software does makes it not worth the effort to use it. Many open source projects do not succeed because their authors either cannot write documentation or lose interest when it comes to that task. If I am a programming hack, I might do better as a technical writer and regard the effort to write good documentation of at least as important than coding itself.

    By the way, if you go and look at the Java in a Nutshell book, any edition, you get more than 500 pages. That is is tough nut to crack. The reason is that the complexity of the libraries as authored by Sun, especially, is too much. There have been a couple of successful alternatives, acm.jar, comes to mind, but the sheer size of what is in java leads me to believe that it has been deliberately obfascated as a form of security as it was adopted by security conscious firms with the intent that the sheer size of it, the bolus of class libraries, would make for a steep learning curve and a deterent for many and job security for the rest. That is abuse of technology in my opinion and no better than a FORTRAN programmer from the 1970's hiding what his code does in spaghetti code. The Nutshell book was more than 500 pages, it is was good documentation, the problem is that the complexity came out of abuse of OOD, not in spite of it.

  157. Just Do it by Anonymous Coward · · Score: 0

    You did it before. You can do it again.. and again... and again...

    Just enjoy what you do. It means, if you decide to learn something new, you have to pick something that you will enjoy. The magic is there... just look for the right technology.

  158. Read Clean Code and the Clean Coder by DickMardy · · Score: 1

    Firstly - I've worked with (indeed I used to be) a programmer that learned through doing. As such, I've categorised such people into two groups: - those that give a shit about getting better, and those that don't. You appear to be in the first category, which is by far the better and much less dangerous of the two. About ten years ago now, I decided that I'd had enough of meetings in which I'd have to muddle through and make answers up as I went along, so I went back to University and got a Masters in Computing; my undergrad degree was in English - then I got sucked into programming via HTML, then JavaScript, then "classic" ASP etc - as I say - it all kind of snowballed as it went along. The Computing Masters was fun to do and resulted in the following major improvements: firstly, nowadays when I'm in a meeting and I don't know what people are talking about, I'm confident enough to admit it. Secondly, I have the research skills to go and find out more about the thing I don't know about. I'm pretty sure I could have gained these skills without doing a Masters, too - but (as several others have mentioned here) it's the confidence that makes the difference, however you get it. Since then, I've been a team lead at a Finance Company and (just about) managed to hold that down. I also came to the conclusion that the brash, "confident" (i.e. egotistical) developers were the dangerous ones, who always seemed to be followed around by a cloud of disaster - their "confidence" was usually utter BS. Also, fundamentally, whether you know "Framework X" or "Foundation Y" should always be secondary to whether you know how to code well in a team - to which end, I recommend that you read both Clean Code and The Clean Coder by "Uncle" Bob Martin. And learn how to write good tests. As I say - the fact that you're being conscientious about this is a good indicator that you'll be OK. Best of luck.

  159. Never too old short of dementia by nellcoper · · Score: 1

    Got you beat by a long shot. I have over 35-years experience starting with BASIC as an actual business programming language. Also started online with PERL, CGI scripting languages,et al. Javascript and the whole OOP concept threw me for a loop initially. I *could* do some debugging, but not basic coding without frustratingly near-endless errors and bombs. I still don't call it a language I can program in. However, by cussedly returning to the subject and trying new approaches and projects, I finally had the "Ah-hah!" moment and the concept clicked... just in time for the next concept in coding. :-) Oddly enough, I've found doing a bunch of personal Wordpress development extremely useful for keeping up with the new approaches and concepts in code development, both because of what's integrated in the updates and what's not but discussed integrating or integrated by individuals in their modules. You may find something else easier for you to grok. The key is to accept that you're going to have to drop your old habits and mindsets. It helped enormously when I was able to stop looking at the programming as an entirety and instead considered it in modules or "Lego blocks" of functions that interacted. So instead of thinking in terms of having to do it all myself — write the code to collect the data, store the data, retrieve the data, parse the data, manipulate the data, and respond based upon the data — I was able to start saying "Hmmm, pretty much everyone's going to need to do X, so there's probably a function already included for that, so I just need to read the codex and find what it is and see how I can manipulate the results."

    FYI, I've got a friend a little older than me who spent the last 15 years of her tech work life helping small clients maintain old sites. In retirement she's getting around to the concept of responsive web design — but I still can't get her to grasp CMS and database-driven sites. We all have our blind spots.

    Best of luck and keep working. The best part of tech is that there's always something new to learn so we don't end up one of the "walking dead" retirees just waiting to die and grumbling about the "good ol' days."

  160. Re: Practical applications (find a good cross plat by Anonymous Coward · · Score: 0

    > JUCE has shitty licensing.

    Huh? JUCE is dual licensed under GPL and proprietary commercial terms.

    If you want to share your code, use the GPL'd version. If not, buy a license. What's your beef, "it's not BSD licensed" ? Get over it. You don't get to dictate to other people how you want to use their code.