Forgot your password?
typodupeerror
Education GUI Java Perl Programming

How Can an Old-School Coder Regain His Chops? 565

Posted by timothy
from the just-eat-the-brain-of-someone-younger dept.
DonLab writes "I was a proficient software engineer in the 1980s, writing hundreds of thousands of lines of ALGOL, FORTRAN, COBOL, and Pascal programs, as well as working in 370 and 8080 assembly language & pre-relational DBMS systems. My hands-on programming career ended when I became a freelance analyst and designer, ultimately retiring young in the early '90s. Now I'd like to reenter the field, but I'm finding that I know nothing about today's post-C languages, programming tools, and computing environments. I wouldn't know where to start learning C++, PHP, Java, HTML5, or PERL, much less how to choose one over the other for a particular application. Can I be the only pre-GUI software designer or hobbyist searching for a way to update his skills for Windows, iOS, or Android?"
This discussion has been archived. No new comments can be posted.

How Can an Old-School Coder Regain His Chops?

Comments Filter:
  • C-sharp (Score:4, Informative)

    by Ethanol-fueled (1125189) * on Sunday August 01, 2010 @06:44PM (#33104574) Homepage Journal
    Submitter - not trolling, but you should include C# in your list if you want to be relevant today.

    Don't hate the players, hate the game.
    • Re: (Score:3, Funny)

      by WGFCrafty (1062506)
      Don't forget to B#.
    • Re:C-sharp (Score:4, Interesting)

      by dskzero (960168) on Sunday August 01, 2010 @06:50PM (#33104634) Homepage
      I agree. C# is very likely to become a powerful language in today's market, if it isn't so already (It isn't on my market, people just seem to love Visual Basic and PHP a lil' too much). That said, the new COBOL versions, as my father says, who's a guy who's been working with computers for over 30 years, have programming environments which are very close to what Java offers. Perhaps you should look into that area.
      • Re: (Score:3, Insightful)

        by Anonymous Coward

        A commercial software developer would have to be nuts to put their company entirely into Microsoft's basket by committing to C#. C, C++, or Java would be better choices for a Windows application because it remains portable, it's easier to go from version to version of Windows, and it's harder for Microsoft to just squish you if they want to.

        I speak from experience on the Microsoft squishing you part.

        • Re:C-sharp (Score:5, Insightful)

          by digitig (1056110) on Sunday August 01, 2010 @09:51PM (#33106056)
          A commercial software developer developing for MS Windows has already put their company into Microsoft's basket. How many companies are turning a profit on Windows development, compared to Linux development (note: development, not support)?
          • Re:C-sharp (Score:5, Insightful)

            by Nursie (632944) on Monday August 02, 2010 @02:34AM (#33107512)

            Why is the natural opposite to windows development necessarily linux development. In my job we target AIX, Solaris, HP-UX, Linux and Windows. Solaris is our biggest market at present, IIRC.

            Granted, this is not desktop software.

          • Re:C-sharp (Score:5, Insightful)

            by shutdown -p now (807394) on Monday August 02, 2010 @02:50AM (#33107590) Journal

            A commercial software developer developing for MS Windows has already put their company into Microsoft's basket.

            It depends on the development platform. If it's something that abstracts away the OS reasonably well (e.g. C++ with Qt or wxWidgets, or Java with Swing or SWT), then it is quite possible to develop for Windows, but maintain an easy migration math to other OS in case it is needed.

            Of course, there's also Wine...

          • Re:C-sharp (Score:4, Insightful)

            by dave87656 (1179347) on Monday August 02, 2010 @05:09AM (#33108090)

            A commercial software developer developing for MS Windows has already put their company into Microsoft's basket. How many companies are turning a profit on Windows development, compared to Linux development (note: development, not support)?

            With java you have independence. You're not tied to Windows or Linux.

            • Re: (Score:3, Insightful)

              by 32771 (906153)

              Seeing how ARM processors support Jazelle, I'm convinced people have taken Java serious enough to even bother with improving its virtual machine performance. So Java doesn't even just give you freedom but also a well developed ecosystem.

        • Re: (Score:3, Informative)

          by dave87656 (1179347)

          Agreed. We use Java for that reason. The fact still remains that, even with MS's monopoly power, Java is still the most used programming language. It's not perfect, but it is widely used and it isn't going away any time soon.

          Other than that, C and C++ are still in heavy use. And C will never die since all the new languages are written in it.

          • Re:C-sharp (Score:4, Interesting)

            by theshowmecanuck (703852) on Monday August 02, 2010 @11:02AM (#33110414) Journal

            Java is still the most used programming language.

            FTFY: Java is still the most actively used programming language.

            Cobol is still the most used programming language... and is still being used (and I have no idea how to program with it... I can barely stand looking at its record/data structures).

            • Re: (Score:3, Funny)

              by Andy Dodd (701)

              Could possibly be worse. Is COBOL like FORTRAN in that EVERYTHING IS CODED IN ALL CAPS AND READING THE CODE HURTS YOUR EYES?

              I did a tiny bit of FORTRAN work when I was at an internship while in college. The code was painful to read, almost entirely because it was ALL CAPS. :(

      • Re:C-sharp (Score:5, Insightful)

        by Gorobei (127755) on Sunday August 01, 2010 @08:38PM (#33105600)

        If he needs to look into modern COBOL, he should just give up now.

        Almost nothing has changed between 1980 and 2010. Modern PCs and phones look a lot like mainframes from the 1980s. Sure, speeds are higher, programmers are more expensive, and communication is much cheaper. But, algorithms and design are virtually unaffected. A good 1980s hacker can be up to speed in a month, tops.

        Pick up python, ruby, or whatever, and write code. GUIs aren't magic - they are just bits visible to the user: read and play and you realize they are trivial.

        • Re: (Score:3, Insightful)

          by Blakey Rat (99501)

          Pick up python, ruby, or whatever, and write code. GUIs aren't magic - they are just bits visible to the user: read and play and you realize they are trivial.

          I'm guessing all the GUIs you produce are godawful.

          I highly doubt that modern COBOL programming tools give you what you need to create a stellar GUI compared with C#-- hell, even Java doesn't, IMHO. I could be wrong.

      • Re: (Score:3, Informative)

        by Canazza (1428553)

        I use C#.net at work, and with MS Visual Studio's code-completion it practically writes itself. Not only that but you can use the built in UI to build windows forms.

        Granted, you will be tied down to Windows platform, which for some is too great a problem to overcome. In that case, try out Python with the Pygame lib. Works rather well on all platforms (even some mobile ones)

    • by outZider (165286)

      Submitter asked about Java, which takes care of half the equation. Some enterprise shops are C#, some shops are Java. Not everyone wants to deploy on Windows.

    • Why update at all? There are still legacy systems using FORTRAN and probably COBOL as well. While there are C#, Java, PHP developers all over the place I imagine that finding a developer to maintain a legacy system is extremely hard. Of course that means there will not be many jobs out there for you but the pool of qualified applicants will be extremely small.
      • by fuzzix (700457) on Sunday August 01, 2010 @08:06PM (#33105354) Journal

        Why update at all? There are still legacy systems using FORTRAN and probably COBOL as well. While there are C#, Java, PHP developers all over the place I imagine that finding a developer to maintain a legacy system is extremely hard. Of course that means there will not be many jobs out there for you but the pool of qualified applicants will be extremely small.

        Plenty of money in COBOL but there is a need to suit up (physically and mentally) - not for everyone.

        I have found a small but significant niche in embedded *nix programming. Small yet powerful systems requiring every scintilla of juice tempered with a familiar API - C Systems programming work is common enough (yet not common enough!). This is where I hope to spend the next while.

        An "old school" approach to knowing the architecture inside-out and attention to detail is clouded by the bizarre abstractions of C# and Java. PHP isn't even an abstraction, it's a distraction (I grew tired of the inconsistency so no longer practise).

        Perl is unfashionable in some circles and has a reputation for having magic constants (or whatever it is the detractors call "I don't want to learn this language") but I recommend it if you want dynamically typed "chops".

        I find these "chops" are overrated. I enjoy low-level thinking so don't need to bloat up with virtual machines[1] (the real ones work fine for me), OO[2] (I know how to pass a pointer to my data to a lib) or design patterns[3] ("ways to do things" - if you learn one way as "the way" you may be unlikely to think there may be a better way)

        [1] I use virtual machines but it's perverse running the dozens of MB JVM (and waiting around for it) for a browser bound animation or trivial desktop app. There may be a better case for this messing on the application server, but I don't care.

        [2] OK, I will make an argument for OO in GUI programming - a large and complex library of heterogeneous components is difficult to arrange sensibly in a procedural manner. gtk_status_icon_set_from_file(foo_icon, "bar.png") or fooIcon.fileSet("bar.png")? There may be a similar argument to be made for other systems but for the most part I find the OO model a needless abstraction.

        [3] Right... most programmers aren't brilliant - I know I'm fucking terrible for the most part - so having established methods for common situations is no bad thing... just don't get too attached.

        • by Uksi (68751) on Monday August 02, 2010 @12:43PM (#33111890) Homepage

          This is a plea for anyone who thinks object-orientation won't do anything for them to stop and back away from that view for a second. Give me a minute to explain.

          Read this great article called Why are you still using C? [renaissancesoftware.net]. I think it explains very well what OO can do for it.

          Did you know that the Linux kernel, despite NOT using C++, is actually doing bonafide object-oriented programming?

          Just one example is the Linux VFS. A filesystem passes in a struct with function pointers to read, write inodes, etc. The I/O kernel code only knows about each VFS in the generic terms, but ends up calling specific implementations via the function pointers. This is called polymorphism.

          That's right, the Linux kernel is doing real, meaningful object-oriented programming. In contrast, if you put a few functions together under a class (like many people do that "have to" write OO), then you ain't doing jack shit worth of object oriented programming. However, because the kernel is using C, it has to do a lot of messy things with pointers. C++ helps take care of that mess (polymorphism is supported in the compiler), so you don't have to write it by hand.

          Problem is, object-oriented programming is useful when it is applied on an as-needed basis.

          Design patterns? Same thing. People got a design patterns boner when the book came out (I know I did). The academic/enterprise/fancypants software architect approach was: "What if? What if?! Why not use a pattern here, just in case you ever need to do it this other way?" So, you end up seeing patterns and flexibility and layers of abstraction (variations on a theme) built everywhere, where you end up not using them.

          So you end up with a ton of code that never really does you any good. Worse, when you suddenly realize that you need some kind of flexibility, you already probably sliced the code the wrong way, so now it's actually *harder* to make things flexible. All because you made them flexible ahead before you knew what you actually needed.

          There's a concept of emergent design, which basically says: don't come up with any frameworks, let frameworks emerge from the code. That is, if you find yourself needing to copy/paste the code or find yourself repeating something that's awful similar to this other thing, well, *now* -- only now is the time to use a technique to eliminate the duplication. Maybe you make a little framework. Maybe you just make a class or two to help you out. Maybe you use a bit of a larger design pattern, well, 'cause you don't need to use the whole thing. And that's great! You've taken care of the duplication, so now all the code you have has purpose, has a real need.

          WE have been made to feel stupid, by all these academic and UML software architect wankers that are removed from real-world coding and proclaim the need for design patterns everywhere and "careful architecture" beforehand. Turns out that we weren't stupid, we were just being practical.

    • Re: (Score:2, Informative)

      by Javagator (679604)
      I would recommend starting with C#, also. One big advantage is the excellent and free IDE available from Microsoft (C# Express). There are also some excellent books available, such as Programming Microsoft Windows with C#, by Petzold. Also, C# is similar in syntax and structure to Java and C++, so you can more easily transition to these languages, if needed.
      • Re: (Score:3, Interesting)

        by fuzzix (700457)

        I would recommend starting with C#, also. One big advantage is the excellent and free IDE available from Microsoft (C# Express). There are also some excellent books available, such as Programming Microsoft Windows with C#, by Petzold. Also, C# is similar in syntax and structure to Java and C++, so you can more easily transition to these languages, if needed.

        Haven't tried C# express but I did use SharpDevelop [icsharpcode.net] in a previous gig when doing a little windows dev - it struck me as very polished.

        I ended up doing what I needed with Win32 API calls and building with wxDev-C++ [sourceforge.net] but I don't like talking about it... (Because of Winsock2 rather than wxDev-C++.

        • Re:C-sharp (Score:4, Funny)

          by fuzzix (700457) on Monday August 02, 2010 @08:53AM (#33108974) Journal

          I would recommend starting with C#, also. One big advantage is the excellent and free IDE available from Microsoft (C# Express). There are also some excellent books available, such as Programming Microsoft Windows with C#, by Petzold. Also, C# is similar in syntax and structure to Java and C++, so you can more easily transition to these languages, if needed.

          Haven't tried C# express but I did use SharpDevelop [icsharpcode.net] in a previous gig when doing a little windows dev - it struck me as very polished.

          I ended up doing what I needed with Win32 API calls and building with wxDev-C++ [sourceforge.net] but I don't like talking about it... (Because of Winsock2 rather than wxDev-C++.

          Troll, eh? Is that because winsock2 is actually good or because I didn't close the bracket?

    • Re: (Score:3, Interesting)

      by johnlcallaway (165670)
      I make a boat load of money just doing Java and SQL. And in the last few weeks, I've had 3 people ask me if they know of any Java programmers (two for full time positions, one was contract work). Two of those people only knew I was in the computer field. Yet no one has EVER asked me if I know of any C# programmers. So toss out the comment about having to know it to be relevant today.

      Figure out what you want to do, then learn the language appropriate for it. Want to code Windows, MSSQL, or whatever Win
  • Work backward (Score:5, Insightful)

    by p3bf (459005) on Sunday August 01, 2010 @06:46PM (#33104592) Homepage
    If you want to develop for the iPhone/iOS, then learn Objective C. Just figure out what you want to do, keep your focus narrow for now, and work backward from the requirements.
    • Mod parent up! You have to have something you want to accomplish.

      I'm a web dev who had no meaningful GUI skills, and limited Ruby skills. But I wanted a particular kind of multi-pane editor with wiki formatting and language support for ancient Greek, that worked a bit like KDissert, my favourite mind-mapper/outliner.

      I found I was able to figure out the essentials of QT-based GUI programming in Ruby over a focused long weekend. Nothing but persistence and online tutorials were required. It would have been ea

    • Re:Work backward (Score:5, Informative)

      by Netshroud (1856624) on Sunday August 01, 2010 @07:18PM (#33104946)
      If you want to learn Objective-C, the iPhone Application Development course (Stanford) on iTunes U [apple.com] is extremely useful.
      • Re: (Score:3, Interesting)

        by HiThere (15173)

        What if you are interested in Objective-C, but not in Apple EULAs? Is there a good choice (is that a good choice) in that case?

        I'm rather interested in using Objective-C on Linux, but not enough to fight with the old tutorials I've been able to find. (I suppose I could learn Objective-C++, but I've heard less than friendly things about it.)

        Last time I looked at it I looked long enough to determine that the Foundation libraries supported Unicode (mandatory!), and I think I remember utf8. But that was stri

    • by rainmouse (1784278) on Sunday August 01, 2010 @09:18PM (#33105876)
      If you develop apps for the new iPhone, can I put in a request for an app that uses GPS to direct you towards the nearest public phone box.
      Thanks.
  • Mailing lists (Score:5, Insightful)

    by gatzby3jr (809590) on Sunday August 01, 2010 @06:47PM (#33104598) Homepage

    Here's a few tips that I try and use when learning new languages:

    1) This one may seem obvious, but just start using it. Write "Hello World!" programs, and then an address program, stupid stuff until you get used to syntax. Eventually you'll start to pick up on the strengths of the particular language and come up with ideas on how to write stuff to further enhance your knowledge and proficiency.

    2) What worked for me usually was to subscribe to a mailing list. Not necessarily even the 'official' *-users mailing list, but just one that talks about problems. By reading through other people's common problems, not-so-common problems, and more importantly, the community's solutions will help get a perspective of the language and how other people are using it.

    3) Start looking at well written code in that language. Go on GitHub, Bitbucket, sourceforge, or whatever, and start looking through the code.

  • Easy (Score:5, Interesting)

    by camcorder (759720) on Sunday August 01, 2010 @06:48PM (#33104610)
    Pet project.
    • by rwven (663186)

      Yeah, this is the only way to go, imho. Find a hole and fill it on your own time. Best way to learn.

      By the way, if you're looking for something more on the lucrative side of things, I kinda look at it like this:

      PHP (my forte) has such a low barrier of entry that the market is flooded with people who THINK they know PHP. There are TONS of worthless PHP programmers out there, and it hurts not only the reputation of the language but also the salary ranges because no one trusts that many of them are all that go

  • by girlintraining (1395911) on Sunday August 01, 2010 @06:49PM (#33104618)

    First, start by giving up on that "I don't know where to start" attitude. Just dive in. That's how you learned code "back in the day" and very little has changed. You just need to start absorbing information and trusting that after awhile, it'll turn into useful knowledge.

    • I second that (Score:5, Insightful)

      by Dan East (318230) on Sunday August 01, 2010 @07:20PM (#33104968) Homepage Journal

      Pick a language and dive right in. If you are proficient in as many languages as you state, then learning "modern" languages will be no problem. Especially if you are familiar with Pascal, which structurally is very similar to the languages you want to learn.

      C++, PHP, Java, C# and Javascript are all related structured programming languages, and primarily differ in minor syntax, class definition, data types and strictness.
      For example, the C code:
      if (++i > 10) {
        j+=5;
        i=0;
      }
      will execute as-is in all 5 of the languages I mentioned (PHP would have $ signs in front of variable names). So if you are familiar with C, or even Pascal, then you already understand a good portion of modern languages.

      "HTML5" - HTML, CSS and Javascript (and throw in PHP for server-side), would represent the largest departure from what you have done in the past, due to the tremendous amount of segregation between what runs on the server versus what happens in the browser. To some extent the entire thing will seem like a big hack, and to a large extent that's what it is.

      Still, my point is that if you were able to become proficient over such a wide variety of languages in the past, then you will not have any problem today, especially since many of the modern languages are quite similar.

      • Re:I second that (Score:4, Insightful)

        by geezer nerd (1041858) on Sunday August 01, 2010 @10:01PM (#33106138)
        I think this is a very sound response. I served in the industry from the early 70's, and retired in 2006. Learned many languages and wrote lots of code during those years. The poster already understands programming, so he is really looking for how to upgrade his language base. He does not need, in general, to go read a bunch of introductory books. He needs to have a problem to solve, choose an unfamiliar language to solve it in, and then dive in, consulting quick references and online tutorials when progress is blocked by lack of knowledge. That is how I learned C, Java, Perl, and PHP. (And HTML and Javascript.)

        From what the poster says of his background, I think the biggest, most difficult challenge he has to face is learning about object-oriented programming languages and methodologies. I know when I was trying to get past Fortran, Algol, and such that was my biggest hurdle, and teaching myself was a real challenge. But once understood, the programming world becomes a brighter place. Good luck!
    • by kikito (971480)

      I think he realizes that. He's asking "what language should I pick", not "how do I learn a language".

  • Stay Retired. (Score:5, Insightful)

    by Nikkos (544004) on Sunday August 01, 2010 @06:51PM (#33104654) Homepage
    Really, did the crash hit you that hard or are you bored? I don't know if you understand the employment situation for programmers these days. You're going to be old in an industry noted for it's ageism, behind the curve technologically, and depending on where you do find a job, you're likely to be paid terribly for long hours and work under a clueless asshole boss.

    I really hope you have other options, it's ugly out there these days.
    • Re:Stay Retired. (Score:5, Insightful)

      by commodore64_love (1445365) on Sunday August 01, 2010 @06:58PM (#33104720) Journal

      >>>clueless asshole boss

      My goal is to earn a BS in Business and become one of them. Or one of the HR people. That's where the real power lies. And money.

    • I guess you missed the 'retired early' part. Sometimes folks do things for fun rather than profit. Especially when they've fixed the profit part elsewhere.
      • by Nikkos (544004)
        I guess you missed the "did the crash hit you that hard or are you bored?" part - you know, the first sentence. Apparently you can read minds and don't need such information.
    • Re: (Score:2, Insightful)

      by swrider (854292)
      Yeah, it is going to be tough for you. I have been programming since the mid-1970's and over the last 10 years or so, I have found it difficult to get good paying jobs. And, these are jobs where I have the skill set and know the language. Companies want to pay noobs right out of school a pittance rather than pay an older, experienced programmer what their skill and experience is worth. Even if I can finish the job in a fraction of the time required by the noobs. If you are older, you need to be an owner
    • Re: (Score:3, Interesting)

      by sorak (246725)

      and work under a clueless asshole boss.

      Amen. I had an experience last week where someone, (who wasn't my boss, but is over me, and happens to be married to the sister of the CEO of the small corporation I work for), complained that on a web page I had worked on, that half the hyperlinks were purple and the other half were blue, chastising me for the inconsistency. (It wasn't just that one comment; he had four emails full of requirements, but that was the straw that broke the camels back).

      I set a reminder to deal with it the next business day, wh

    • Re: (Score:3, Insightful)

      by jellomizer (103300)

      I never found problems in finding developer jobs. The problem is so many good developers are just bad employees. Who think their IT skills are the only factor in employment. Durring the dot com boom in the 90's companies tolerated many of our quarks and sometimes celebrated then as skill of the "new economy". However after the pop the survivors were people who can handle the business and technical side of things. The ones who treat sales and marketing as key and an intelligent component to the business. An

    • by luis_a_espinal (1810296) on Sunday August 01, 2010 @10:54PM (#33106466) Homepage

      Really, did the crash hit you that hard or are you bored? I don't know if you understand the employment situation for programmers these days.

      Depends on the programmer. Seriously. Not to make up shit, but I'm getting an average of 2 calls every week from headhunters I know for well-paid positions, calling me if I'm interested or if I know people that might fit the bill. I'm happily employed, and the only people I'd trust enough to recommend are employed. People I know that I wouldn't even trust to code a "hello world", those are the ones that are continuously having a hard time getting a job. Maybe for other people, who are truly qualified, they have a harder reality, but from where I'm sitting, if you have the chops, you get the job.

      And I'm not even in a place that is known for its plethora of IT/software jobs. And yet, 1) I know people who are continuously getting the gigs, and 2) I know that a lot of positions are being unfilled.

      And it's not as if companies aren't willing to pay. It's just that there isn't enough qualified software engineers. There is a shitload of cookie cutter programmers out there, you know, the type who never gets the basics, like why he needs to close a database connection or avoid Java string concatenation. For them, obviously, there aren't enough jobs. But there are jobs out there, companies are willing to pay good for filling them... and they have a hard time filling them in with qualified people.

      That there is a problem with the economy is one thing. That there aren't enough jobs for the cookie-cutter programming masses, that's another. You have the skills and you have been intelligent enough to cultivate your professional network, you get the job. Period.

      You're going to be old in an industry noted for it's ageism

      Cliche. I work with developers who have been working with software for 25 years if not more, people well into their late 50's. I'm not making that up.

      behind the curve technologically,

      This you might have a point, and the person in question might have to start in an entry level position, but that's his call. But consider this.

      Most people that are working with software NOW are already behind the curve. You see people out there that have been doing, say, Java for 10 years and still don't understand why fine-granularity web services are a bad idea. Since the dot-com (and thanks to it) our software industry is inundated with people who can't program for shit, and who expect to get paid $70K out of school just because they know how to code a JSP/ASP page.

      I'd rather have a veteran programmer starting up with Java and C# in a junior position over the junior developers we have know. And I know for a fact of employers who think that way as well.

      and depending on where you do find a job, you're likely to be paid terribly for long hours and work under a clueless asshole boss.

      Isn't that how it for most us anyways? This is how it was 30 years ago, it is what it is now, and that's how it is going to be? The people who work 9-5 are those who work on an assembly line connecting piece A with piece B non-stop. You want to work with software, with finance, with medicine, with law, expect to work long hours.

      As for having an asshole boss, you'll get one now matter where you work or what you do. It's life. It's a 50/50.

      I mean, fucking seriously, are we really to believe that it likely to get an asshole boss, with likely meaning the majority of times? Are we really that cliche and gullible? One thing I know is that the more people focus (and believe) that this is the case, the more that it is simply a matter of projection, of projecting their own assholery.

      Yes, sometimes we get an asshole boss. But other times it is not. It's called LIFE!!! And when you repeatedly hear someone always complaining about asshole bosses, they are actually saying "I'm an arrogant, pr

  • F/OSS! (Score:5, Informative)

    by comrade k (787383) <comradek.gmail@com> on Sunday August 01, 2010 @06:52PM (#33104660)

    I wouldn't discount languages like C just yet. They're still hugely important in the kernel world, for example.

    As far as newer languages go, there are a lot of F/OSS projects that could use another hand. Have a look at the Bugzilla for various projects and grab the latest source from svn/git/mercurial/whatever. Your skills as a programmer should transfer over to a new language relatively easily, and you'll have done a good deed.

  • Don't (Score:5, Insightful)

    by kryptKnight (698857) on Sunday August 01, 2010 @06:52PM (#33104662)
    Proficiency in ALGOL, FORTRAN, COBOL, and Pascal makes you stand out from the crowd. Market yourself as a specialist.
    • Re:Don't (Score:5, Insightful)

      by Burnhard (1031106) on Sunday August 01, 2010 @06:54PM (#33104680)
      Mod parent up. The OP is missing the big opportunity here. There are millions of lines of FORTRAN and COBOL code out there today in live production environments.
      • Re: (Score:3, Insightful)

        by keeboo (724305)
        Agreed. It makes more sense if he updated his knowledge of COBOL/FORTRAN (why waste years of experience?) and exploit that niche.
    • Re:Don't (Score:5, Insightful)

      by fruitbane (454488) on Sunday August 01, 2010 @06:58PM (#33104724) Homepage

      This. Very much this. There are any number of bank and government softwares that still use these languages and are losing people able to deal with them to retirement. They may not be overjoyed that you are coming out of retirement to do it, but they may not have much choice.

    • Re:Don't (Score:5, Informative)

      by drolli (522659) on Sunday August 01, 2010 @07:15PM (#33104928) Journal

      Parent is definitively right.

      This guy knows *COBOL* and he thinks for career reasons about new languages? As fas as i understood that COBOL coders are right now (or in a few years) worth their weight in gold; I hold a phd in physics, programmed in nearly all "post-c" languages, (and some non post-c languages) and i was thinking about learning COBOL to earn money.

      I mean it could be that he got some offers by now.... (maybe posting to ./ was just a way of applying for a job?).

      • Re:Don't (Score:4, Interesting)

        by arth1 (260657) on Sunday August 01, 2010 @10:37PM (#33106364) Homepage Journal

        I'm sorry to say, but you probably won't land a good job just by learning COBOL.
        What's needed is experience with the whole systems the COBOL programs run on, which is much more of a challenge than the programming language itself. Someone hiring COBOL programmers likely expects people who live and breathe CICS and LPARs too.

        As for the OP, I vehemently disagree with those who suggest languages like Java and C#. Not because they're bad, but because they're so completely different from what he already knows.
        To go from FORTRAN to C# is like going from AutoCAD to Photoshop. Just so very very different.

        If he wants to ease into what's popular today, perhaps start with Object Oriented COBOL. That would be a handful in itself, as it turns the whole concept upside down from what's "old school", but it would still not be as suicidal as jumping directly into any of the "new skool" languages.

        And if he wants to learn (pseudo)scripting langauges, Python is probably the way to go. Not because it's a wonderful language, but because it is about as unforgiving as COBOL, yet small enough that you can keep it in your head and focus on the actual problem without going OO (although you can certainly do that in Python too -- you just don't have to).

    • Proficiency in ALGOL, FORTRAN, COBOL ... makes you stand out from the crowd. Market yourself as a specialist.

      Indeed. Aren't these exactly the kind of people that were in demand to mitigate Y2K?
      Not as if a FUBAR like that won't happen again. And again. And again.
      Nobody has the budget to rewrite entrenched systems into higher level code these days.

  • by commodore64_love (1445365) on Sunday August 01, 2010 @06:52PM (#33104664) Journal

    If already know those programming languages, you should be able to pick-up the newer ones easily. Maybe look at some Open Source code to familiarize yourself with the new words and structure, but that's all your really need.

    The biggest challenge will not be learning these new languages, but convincing the HR dopes (i.e. liberal arts majors), that just because you've never programmed in C++ or C#, doesn't mean you don't know to do it. That's been the biggest challenge for me: "But we need someone who knows System Verilog, and you only know Verilog. You're not qualified."

    Idiots.

    Also you may find yourself working against ageism, even if you did have the required skillset. Slashdot just recently ran an article about how hiring managers in tech firms assume anyone over 40 is not suitable for working on new technologies. They want young blood, preferably those with no family, no life, willing to work lots of hours and/or fresh out of school.

  • learn python (Score:3, Insightful)

    by dr_leviathan (653441) on Sunday August 01, 2010 @06:53PM (#33104666)
    Postpone learning the other languages and focus on Python. It has almost as many modules as PERL but us much more readable. It supports object oriented design and is easier to use for small projects than C++.
    http://python.org/ [python.org]
  • A language is just a syntax and a set of standard libraries. Pick a language, find some examples, and start tweaking them while studying the API. If you still have the skills, it won't be too long until you're writing big stuff. Just be sure to keep studying other people's code so you'll know which of your old habits arn't appreciated in the modern language, and you'll be fine.

    The biggest differences you'll need to get used to is:

    1) The programming tools you can use today (from vim to Eclipse) are much smar

  • Although it sounds like a cop-out; anyone you'd want. I'm a hardware type, so I only use programming when I have to. I like being close to the metal, so your assembler experience is still valid. I'd kick the tires on smalltalk/squeak squeak.org; the go programming language by Robert Pike; Perl is good for text mungification; Python has its fans; I've used Forth for debugging ...

    If you use open source software, (or extensible commercial stuff) learn the language where the action is, for you.

    I'm not a really

  • Don't (Score:5, Insightful)

    by clinko (232501) on Sunday August 01, 2010 @07:05PM (#33104808) Homepage Journal

    Stick with what you know. You're trying to enter an overpopulated market with no experience in the new languages.

    "Hi I'm here for the French teaching job. "

    "Experience?"

    "I'm fluent in latin, amazing at it in fact"

    "You're here for the wrong job"

  • Now I'd like to reenter the field, but I'm finding that I know nothing about today's post-C languages, programming tools, and computing environments.

    Great that you'd like to re-enter the programming community, but why do you want to?

    If you're looking to be a code monkey again (as if), most jobs are for Java, C# or PHP with a bit of HTML/CSS & SQL on the side. You can pick any and make a decent buck.
    If you want to simply take up programming again for the fun of it creating or contributing to an int

  • Dude, WTF is that kind of a question? Isn't the answer obvious?

    I don't think I understand your problem.
    Compared to back in the day it's paradise today. We've got bizarely powered hardware that fits in you hands and costs less than a good stereo set. You can get in anywhere and have it up and running in no time. We've got the best publishers competing with each other in writing concise witty indepth books on any IT subject you can think of and we have a very solid open source eco system with all the pickings

  • by MagikSlinger (259969) on Sunday August 01, 2010 @07:11PM (#33104882) Homepage Journal

    There are still plenty of FORTRAN shops out there, or at least legacy FORTRAN applications.

    There is a ton of COBOL apps that need maintaining [computerweekly.com]

    If you are going to learn anything, it should be stuff that makes you more interesting as a FORTRAN and COBOL coder. For example, get comfortable making HTML/CSS pages. A lot of shops are trying to connect COBOL to the web and SOAP [infogoal.com].

    Find a web site or book to learn what relational databases are. Everything is relational these days. The NoSQL crowd think they're post-relational, but they still talk in the relational language.

    That's the other thing you should learn: Oracle PL/SQL and Service Oriented Architecture (SOA). SOA these days means SOAP and message busses. At my place of work, we have a legacy COBOL application that needs to connect to the enterprise's Enterprise Service Bus (ESB). We are struggling to find anyone who can do it inside our company.

    Your future is being the bridge between the past and the future. Learn how to make those old apps do new tricks, and you'll make lots of money.

    Learn Perl. Because Perl is like the swiss-army knife for programmers. You may not write an application with it, but you might use it to make bulk changes to a hundred COBOL or FORTRAN source files.

    • That's the other thing you should learn: Oracle PL/SQL and Service Oriented Architecture (SOA). SOA these days means SOAP and message busses. At my place of work, we have a legacy COBOL application that needs to connect to the enterprise's Enterprise Service Bus (ESB). We are struggling to find anyone who can do it inside our company.

      Depending on what platform your COBOL runs on, you can almost certainly find some way to wrap it in a Java stateless session bean. Turning that into web services is pretty easy these days -- most free IDEs have wizards that will do this for you for the free containers. If you're using IBM stack then WebSphere and Rational are a must.

      Point being: Java and Java Enterprise Edition are also very useful here.

  • The main difference, aside from syntax, between the old way of coding you've done and the new, is objects. You have to learn to think in terms of objects and object modeling. If you can't do that, no amount of rote syntactical education will help you.

    I'm not really a big fan of Java for most things, but hands down the single best, most approachable, most relevant introduction to object oriented program is Kathy Sierra's book "Head First Java". It's one of the only textbook style programming books I've

  • Eric Steven Raymond [catb.org] in his how to be a hacker is a good start, some [af.mil] say a Real Programmer Can Write in Any Language.
  • My wife is an Architect and she has a friend who started in the same business at a time when drafting was done with pencils and rulers. In early middle age he took a comfortable sideways step in the business. Now the work is all high pressure CAD drafting and he can't get back in to work.

    I am 44, I have been working in the transportation field for 22 years. I work for a big engineering firm and the pay isn't fantastic. The advantage is that employees are valued for domain knowledge and the tools you know ar

  • There are build managers, release managers, configuration managers, QA managers, etc. All who need high technical skills, but no need to do heavy duty programming skills. What they need is a technological eye and the ability to solve problems on the fly.

    These positions get paid as much as developers, and are quite technical. And, they tend to be the place where older individuals can really make their mark. You can't out code 20 to 30 year old developers. They grew up in college with this stuff and know it f

  • Interesting. I was in a similar situation. I entered the workfarce in 1980 as grunt, and left it in 2001, as a V&V Architect for a microprocessor company. I was heavy into C and x86, i960, ia64, and other assembly languages. I did BIOS, firmware, etc,, but I had done the higher level languages too in the mid-80's. Now I work, by choice, about 16-20 hours, 3 weeks a month, for about 9 months a year. I'm a real slacker now. I now do LAMP work. Easy to learn. Easy to get work. I have taken two cl
  • by sznupi (719324)

    It's quite alive, if you want to toy around you can start from basic level of "pure" Free Pascal DOS-like IDE, and take it from there with whatever tools and toolkits you like. Or Lazarus. There's still good old Delphi of course. Wikipedia pages and categories are, as usual, a good starting point to finding related projects & communities.

  • Download a Linux distro like Ubuntu and have fun. There is far more free software available today than you can possible consume. Hack on the kernel, set up a web server with LAMP, play with Java, hack on Open Office, use Eclipse for an IDE, etc. Source code for everything is freely available. The world of software has changed immensely from the 1980's.

  • I wouldn't know where to start learning C++, PHP, Java, HTML5, or PERL, much less how to choose one over the other for a particular application.

    Er, same way everyone else does... Take a class or better yet, start Googling.

  • http://www.android.com/ [android.com] -- you learn Java, the projects are small in scope, and you can demo your stuff easily to friends, and it is only getting hotter. :-)

  • by dpbsmith (263124) on Sunday August 01, 2010 @07:36PM (#33105122) Homepage

    Get hired for the skills you currently have, in a company that's small enough that it doesn't have a huge number of software engineers, and one that's a good company to work for and therefore doesn't have too much turnover.

    Do good work and collaborate well with your colleagues. Be constantly on the lookout for any vaguely software-related task that turns up that's sort of a nuisance for them, that nobody has specific expertise in, but is too small to justify a full-time hire.. Don't worry if it's a marketable skill as long as it's a _new_ skill. Companies prefer the devil they know to the devil they don't know, and once they have confidence that you can do the tasks you say you can do, when you say "let me take care of it for you," they'll let you take care of it for them. If you keep acquiring new skills, sooner or later some of those new skills will be marketable skills.

    When you're trying to get a job, it's very hard to get away with saying "Well, I don't know C++ but I'm sure I can pick it up because I know Smalltalk, which is another object-oriented language." When you're inside the company and they trust you, it is much easier to get assignments for which you can make the case that you may not be a perfect fit, but you're close enough.

  • Pick a project (Score:5, Insightful)

    by hedrick (701605) on Sunday August 01, 2010 @07:41PM (#33105162)

    The problem with books is that most people learn by doing, and toy problems don't teach you what a real application is like.

    I'd suggest picking an open-source project and doing something with it. Depending upon the type of programming you want to do, add something to Linux, OpenOffice, or any of the number of Java-based things. (I'm currently working with the Sakai course management system. There are plenty of things that need doing there.)

    The languages aren't any worse than what you're used to. The problem is that real programming these days tends to involve lots of complex libraries and frameworks. Those are hard to learn in the abstract, which is the reason for my advice.

    Whether it make sense for someone to (re)enter programming as a job I can't say. That's a decision for you. There are a lot of problems with the profession. But there's also lots of important things that need to be done, and a lot of the people who think they're programmers aren't up to it. Programming approaches are changing often enough that skills go out of date in a few years. That's both good news and bad news for people like you. Since people have to learn new techniques all the time anyway, it's not like you have to relive the whole last 30 years.

    The language depends upon what you want to do. Systems software and desktop applications typically use C-based stuff (C++ is probably the best place to start, although Objective C and other things have advantages.) Web applications use Java or .NET. I'd probably start with Java. You can find real and interesting applications in just about any language, so you can argue for Python, Ruby, and all sorts of other stuff. But C++ and Java are probably the place to start. I keep hoping that there will be some major new programming technology to use multiple processors / cores well. But there are lots of nice demos, but so far I haven't seen an approach that looks like it's going to really take off. That's really pretty discouraging. I wish things were more different from when you were programming. C++ and Java are only slight improvements on what you're used to. It's really the libraries and frameworks that are new.

    If you're thinking of web-based work, I strongly suggest learning Javascript and at least one major Javascript programming environment (e.g. jquery or one of its competitors). UIs are increasingly moving into Javascript.

  • You have skills.... (Score:5, Interesting)

    by cptdondo (59460) on Sunday August 01, 2010 @07:43PM (#33105178) Journal

    Typically the older coders grew up in a much more structured environment - we were expected to know the theories of programming much more than today's coders. Not a put down for anyone; times have changed.

    The only place I know of for old coders with old skills is in embedded linux. It's much the same attitude - squeeze a lot of performance from a limited box. And GUI skills don't really matter.

    So start with busybox. Tear it apart, put it together, submit some patches. You'll find you're not so rusty.

    Then find an embedded project you want to work on and contribute. Forget about working for someone else; most companies these days don't want anyone over 35.

    Set yourself up as a specialist consultant. Embedded systems, old systems, IBM stuff that's still out there. COBOL is still in demand and coders, good ones, are getting consulting jobs. Not permanent jobs, mind you, consulting jobs.

    Do what you know and build on it.

  • Just be glad we haven't shifted into an entirely different paradigm like functional or quantum. Multi-threading or cluster-computing is about as close as you'll come to weird tricks. Other than that, loops are still loops, conditionals are still conditionals, and functions are functions. You'll figure out the details without issue.
  • Processing.org is a pet-project producing machine, great for easing one into OOP as gently as possible.
  • crank start (Score:5, Insightful)

    by epine (68316) on Sunday August 01, 2010 @09:46PM (#33106024)

    I wouldn't know where to start learning C++, PHP, Java, HTML5, or PERL, much less how to choose one over the other for a particular application.

    There's something a little odd about this question. Mentions the volume of code output from his past life, but not the application domain. Seems to have weak Google skills. Not sure how he managed to post this query to an electronic discussion board. Did he dictate to his grand-nephew?

    Having expertise in an application domain would be a good place to start. Then figure out what languages have remained relevant. But I get the feeling his former application domain is in the same state of decline as his programming skills.

    With that list of former languages, the guy *ought* to have a fairly strong skillset for maintaining write-only Perl scripts (write-only code was a major industry back in the day), and I figure there's some demand for that. It would be a good transition language: old school mindset, old school syntax (uglier than most), but with a post-Algol dynamic execution environment.

    If he can get over the hurdle of the moderately complex program that use to run in 50k now requiring 50M, he'll do OK. If not, he should try his hand at embedded. I've never written a line of code for an AVR that I couldn't have written (conceptually) with a C compiler from 1983. Those early microcomputer C compilers were riddled with trivial bugs. I recall a fairly simple C static variable initialization (more than one nesting level) the compile mis-generated. That wasn't uncommon. It's been a long time since I've had to report a major code generation error in a C compiler. It's the same skill, minus much of the grief.

    The other thing that changed is that I no longer schedule lunch around a global recompile. Certain of the old-school time management skills have gone by the wayside. These days, it's your computer that goes to lunch. Between keystrokes.

    Hey there old guy, while you were cranking out 100,000 lines of code, did you acquire any documentation skills? Those older code bases he's equipped to maintain often go along with old school formal management processes.

    The biggest change from then to now is that you simply don't know what you're doing in most modern development environments, not the way one used to. Competence is a bubble of lantern light you carry on your person as you trudge into dark places, with one screen tethered to the internet. It's humanly impossible to learn PHP without constant recourse to a memory aid, if your memory is filtered on sanity. New kids won't even know what "filtered on sanity" means. It's been way out of style since Microsoft introduced us to the glories of central planning. In the 1980s, I knew *every function* of my favorite program editor. Often I knew every command line switch on the compiler I was using. And every function in the API I was programming against. These days, I don't even know every line in the context menu that comes up on a simple right click in Eclipse.

    The other sea change one has to master is letting your tools do more of the work, whether it's unit testing, make scripts, or an IDE.

    A fairly debilitating liability at the outset is not having a good sense of what is supposed to be painful, and what isn't. The rules on how productivity is gated have changed substantially. Long ago it was possible to put in a super productive week banging out a top notch utility library suited to the compiler and application domain. You'd be hung in the modern workplace for losing a week on an HIH detour.

    If he's a bit more adventuresome, despite not mentioning Forth on his list of skills, he could do a lot worse than buying himself a Lego Mindstorms NXT and a copy of WoW and investing some quality time into Lua. The C side of Lua is anchored in the old-school skills he seems to have in abundance. He won't have a job at the end of play time, but he'd manage to bridge about half his generation gap in the process, and he mig

  • iTunes U (Score:3, Informative)

    by TRRosen (720617) on Monday August 02, 2010 @12:00AM (#33106784)

    As a child of the personal computer revolution I too grew up with procedural programing sinclar basic, apple integer basic, Pascal and Fortran. although I've worked with Java, C+, Obj C Visualbasic and real basic I've allways felt a little uncomfortable because I never had any formal training in any of them. The Stanford CS classes on iTunes U have really helped me fill in the missing pieces. 80% was review for me but the last 20% helped make the first 80% make more sense. Don't be afraid to start right back at the beginning it will really help.

  • Robotics maybe? (Score:3, Insightful)

    by Billy the Mountain (225541) on Monday August 02, 2010 @01:55AM (#33107350) Journal

    Timothy, Hopefully you read Slashdot from the bottom up like I do. A lot better signal to noise ratio that way!

    Consider getting hands on with hardware and robotics and do the programming as well. The robotics field is only going to continue grow. Simple single-purpose robots are common. Think in terms of 3-D printers, Automated labs in a box, Beer brewing machines, CAM robots, etc. All of these are can be controlled by microcontrollers. A microcontroller (mcu) is a true computer on a chip. Even the memory is contained on the single chip CPU. What would be neat about going into this industry is the programming will start out pretty simply--pretty much where you left off in the 80's. This is because the mcu's are still pretty simple (cheap too--you can buy 5 Arduino mcu kits for $50). You can start by building simple robots and go to more complex ones and relearn/transition into the trade as you go. Also as far as programming languages go, you can use BASIC for PIC, C for Arduino and Java is available for some mcu's as well.

    BTM

  • by OrangeTide (124937) on Monday August 02, 2010 @02:06AM (#33107394) Homepage Journal

    I write system software mainly, basically unixy bits for network appliances, enterprise servers and consumer electronics. I tend to read assembly a few times a month. and my idea of graphical programming is how to access the memory mapped registers to program the graphics controller. I also use zero C++, because Linux and the other OSes I work on are very C heavy. For an old school developer I think C is probably going to feel very familiar to things like Pascal and the various system programming languages of the 70s and 80s.

    Picking up Objective-C and writing some iOS apps is pretty straight forward really, and not that hard to pick up. You have to have some talent and artistic flare to be good at it, but it's not that hard to throw up some widgets or draw some OpenGL ES graphics.

  • by lophophore (4087) on Monday August 02, 2010 @07:02AM (#33108434) Homepage

    Leverage your old school skills, and learn mainframe assembler, too.

    Many of the people who knew how to do this are retiring, but the systems and software they built is still running, and requires maintenance. There is going to be a huge skill gap when the rest retire.

  • Windows Message Loop (Score:3, Informative)

    by darkwing_bmf (178021) on Monday August 02, 2010 @12:44PM (#33111894)

    The first thing you should know about Windows programs (and most if not all GUI programming) is that the programs generally run in a loop (even if your programming language of choice hides this from you) and act upon receipt of "messages" from the OS. You have to program, among other things, what happens when you receive the message that says "the user pressed this button you've made" or "the timer you've set up has ticked" or "the user pressed the close window button", etc... Understanding this basic model will help you no matter which language you choose.

The meta-Turing test counts a thing as intelligent if it seeks to devise and apply Turing tests to objects of its own creation. -- Lew Mammel, Jr.

Working...