Ask Slashdot: Best Approach To Reenergize an Old Programmer?
StonyCreekBare writes "I started out programming in Z80 assembler in the 1970s. Then I programmed in Pascal. Then x86 Assembler in the early '90s. Over time I did a smattering of C, Basic, Visual C++, Visual Basic, and even played at Smalltalk. Most recently I settled on Perl, and Perl/Tk as the favorite 'Swiss army Chainsaw' tool set, and modestly consider myself reasonably competent with that. But suddenly, in this tight financial environment I need to find a way to get paid for programming, and perl seems so 'yesterday.' The two hot areas I see are iOS programming and Python, perhaps to a lesser extent, Java. I need to modernize my skill-set and make myself attractive to employers. I recently started the CS193P Stanford course on iTunesU to learn iPad programming, but am finding it tough going. I think I can crack it, but it will take some time, and I need a paycheck sooner rather than later. What does the Slashdot crowd see as the best path to fame, wealth and full employment for gray-haired old coots who love to program?"
Seriously, stop laughing. It's a niche language, but is used in a lot of places you wouldn't expect, and there aren't tons of developers. Bad for the language, but good for the developers. And the best part? It's easy to learn.
I wonder what it'll feel like when I'm 50, or 60.
I would take a strong look at Ruby. There are a lot of Ruby jobs available these days.
"To those who are overly cautious, everything is impossible. "
You have tons of experience. If you're any good at all, you don't need a class, in fact a class will go far too slow. You need to get your hands dirty. Just pick something that you think would be fun, pick an existing app for it, and copy it. You learn more by doing than reading.
I still have more fans than freaks. WTF is wrong with you people?
If the primary motivation is getting a job I'd probably stick to Java and C#/.NET. Not the sexiest technologies but ubiquitous. Neither is going to be replaced anytime soon and even if they are they'll turn into what COBOL was with people working on legacy systems well past the host languages shelf-life. Given what you've said I'd probably focus on Java since you already have experience there. Another plus with Java is that you can still focus on mobile development with the Android platform if that's what's exciting you.
Or you can take the badass Paul Graham approach and create the next big thing in Common Lisp and ride that wave to YCombinator-esque superstardom! This is the more exciting/perilous route.
If you're better at smaller focused tasks, learn Android development, and team up with someone with good graphics skills.
If you're better at the big picture, learn 0MQ and sell yourself as an architect.
My blog
No one wants to tell you to take up JavaScript, or .NET, or drive through IOS, but the money is there.
SQL and VB will complement some of those skill sets.
deleting the extra space after periods so i can stay relevant, yeah.
Why, you lonely?
I think you just need to add a modern stack to your resume and put out an example project on github, you'll be ready to find work. The stacks that people are hiring for right now:
A solid web application based on bootstrap.js in any of the first four frameworks will get you an interview. A sample application for IOS should as well, at probably any one of your local agencies / design firms / app shops.
If I were in your shoes, I'd skip the big enterprise languages, like Java / C# -- if you like Perl, you're going to hate working in those languages, and much of the work in those languages sucks, to be honest.
My money-shot idea: learn kdb+ and q and go pull in $250k a year working for a hedge fund / investment bank. Also, it's fun and brain-bending.
...and perl seems so "yesterday".
Ya. It's not.
I'm a 49, with only a BS in CS, am fully-employed (though I often choose to work less than 40/week) and I use Perl every day for production projects. Yes, I also use about 9 other programming languages on both Unix/Linux and Windows (sigh), but when the shit is approaching the fan, Perl usually saves the day. Having a breadth of experience and knowledge is what makes one really useful. Knowing a little (sometimes more) about a lot of things, knowing what you don't know, and how to research what you don't know, is better than knowing a lot about a few things. It's also a damn-sight better than pretending to know thing you don't know.
I've been a systems programmer / administrator on just about every Unix platform there is and specialize in automating things. That experience also helps me on Windows (again, sigh). I'm the one that gets asked to do the "impossible" things because I figure out how to get them done.
As for fame and wealth... Be good and generous with people, especially the ones you love, pay off all your bills promptly and don't buy shit you don't really need. I'm debt-free and - actually - don't have to work ever again - though, I'd be bored (okay, more bored).
Oh, and don't be a dick, unless absolutely necessary. Then...
It must have been something you assimilated. . . .
I find myself in a somewhat similar situation, except that I started with IBM 650 machine language, then the SOAP assembler, back in the later fifties, then for a while was a wiz in FORTRAN, so have been programming for 54 years now. I found that same natural evolutionary path through Perl a pleasant adventure. Forget the money. Forget the fame. Take that early retirement at 60 to collect the government pension, minimize the lifestyle if you have to, and just enjoy programming as a recreation. Then help others.
Always wanted to learn Python, but never really had the compelling need for it. Now amusing myself taking the Edx.org/MIT introductory course in Python. I'm at the stage of wondering if as a language, it starts out trying too hard to be easy, and ends up being just as complex and un-intuitive as brain teasers in C or Perl except a bit less possibility of really dense code. Even Cobol used to get that way. Anyway since the EDx course is graded, it gives one a nice challenge to test oneself against. 'Course it's easy for me to learn one more language, after the first 49, another one isn't hard. I feel for the kids trying it for their first introduction to programming. Some of them stumble so badly, and maybe forget that Google is their friend, so they find it even a bit scary. In the old days we never had Google. Ah for the days of McKracken, or Kernahan and Ritchie, when explanations were so crystal clear. Good luck!
C/C++ is very relevant today, and will be just as relevant tomorrow.
Not necessarily conflicting, but definitely mixed. I picture a 2 circle Venn diagram. One is "enjoy my job", and the other is "get paid". You'd like to be in the middle overlapping bit.
I have no idea how to tell you how to enjoy your job. Only you know what you like. As for the language? Completely irrelevant. Any decent coder can learn a new language. If you've gone from Z80 to Perl, then you already know this and you are most likely the right sort.
But only you can know what you would enjoy. What would energize you and make you happy. So here is a strategy for you to find jobs in that middle area.
Look at job postings like you are looking for a job. Check the job resources you like in the way that you normally would. Now print out and save the jobs you think you would enjoy. Look at their requirements. If you do this for a few months you'll see patterns emerging. I want to be a _____________, and every job posted for those kinds of positions has __________ as a requirement.
Keep notes. Eventually you'll see what you need to learn. Then go learn it.
Then if you can, hook up with a temp agency. Tell them you are looking for temporary work doing _________. Do that for a while and do it well. Be sure you impress at least one person at each assignment. Get their names and numbers. When you are done ask them if they would not mind being a reference for you.
Then when you are ready for your salaried position above, mark that time on your resume as consulting (because temp agencies on your resume aren't desirable). Then send out those resumes.
And from one greybeard to another, best of luck!
Weaselmancer
rediculous.
Seriously. Learn ARM assembly, practice hitting the bare metal in an Android phone, and get a job working for someone like Nvidia, Qualcomm, Broadcom, Samsung, HTC, or someone comparable. You have a skill almost nobody does anymore, and you know how much more fun assembly is. Screw Java and boring corporate productivity apps. You can have more fun with assembly writing drivers, and make more money while you're at it. :-)
C++ is still big, and the jobs that require it pay really well. C++ is an incredibly hard language to learn properly, and most of the Java/C# generation can't quite do it due to all the little gotchas of the language. If you've got the experience and skills then you should be able to earn big bucks doing C++. And if you decide you prefer Java, the step from C++ to Java is an easy one (much less so the other way around).
Also the embedded world still has strong demand for programmers, and pays well. It sounds like you've got experience with two different assembly languages and C, which is plenty.
iOS is cool and fun but IMO the market is saturated. If you get into it, not only will you have to start from scratch, but you'll be competing with low-paid graduate programmers. If you're finding it "tough going", then not only will you not be able to compete, but you'll be putting in a high amount of effort for relatively low pay.
(bah, rick, you beat me to it. ; ) )
For mentioning TK, Visual C++ & Visual Basic, the basic assumption is that you look for something related to GUI applications.
In this case, IMHO:
In any case, the (formerly future, now) present is still the web. Whereas the future is difficult to predict.
Good luck!
You may wonder, and worry that you don't belong to the younger generation of programmers - usually preferred by employers. Don't. You belong to the pioneering team of programmers which knowledge didn't come from a school, it came from passion and challenge because, at the time, we had to learn by ourselves and to make efficient programs one had to master assembly - voluntarily (nowadays, assembly is a mandatory (and feared) subject taught in computer science schools to force students to get a clue about what usually does a cpu, and how a system works internally). This is an invaluable plus. So you may want to try web sites development - like 80% of programmers and "programmers" - in PHP or Java, or iOS for the fun, but you may also want to give another try to the C / robotics / devices programming etc... areas, where you could fit surprisingly well.
Slashdot, fix the reply notifications... You won't get away with it...
If the primary motivation is getting a job I'd probably stick to Java and C#/.NET
I would agree with you, for someone looking to leave college in a year or two...
But for someone looking to make money sooner I'd say it would be difficult to land a Java/C# job without some practical on the job experience in those languages.
As unfair as that may be with his diverse background, it's simply the case that most companies are going to have a number of candidates to look at with a few years of Java or C# and it's going to be hard for him to get a job going that path. Longer term it may still be good to study though.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
It's not your ability to program. Lots of people can program and to a first approximation, most programmers are expected to be able to adapt to a new language or environment.
What makes you distinct is the contextual skills you bring. E.G. 802 or LTE protocols, HIPPA rules, industrial process control, DECT, pig farming automation, Point of Sale. There are thousands of different skill areas that a random programmer off the street won't know, but somebody needs.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
What have you actually made?
That is the question.
Software experience isn't a collection of language names matched with years.
As a graying 60 plus who also started with Z80 assembler then progressed through Forth, Fortran, Lisp and 7 other languages, I have considerable feel for your situation. However, having endured lots of online discussion about today's 'real programming jobs' being for younger folk, I regret to suggest that full employment is an unlikely outcome (if a nice dream) in the tight financial environment we have all been living through. But I have found personal renewal and significant career and financial payoff in iOS app development for publication, then cross-development for Android, although the iOS payoff has been nearly 10x greater than for a similar Android product. And as one of my renowned neuroscience mentors taught, learning difficult new skills is the best way to keep an aging brain healthy... Fortunately, programming isn't my main career, but my downsized programmer brother (over 10 years my junior) has also had significant recent success learning to program mobile apps (Android) bringing in new income and job prospects. We both started out trying to tap the still hot market for mobile devices, and it would seem a shame to ignore higher-level independent mobile developer prospects if you couldn't land a rare ARM assembly coding job with a commercial firm. But with about 90% of the current coding on my day job being for multi-device web applications (in a world where 20- and 30- something web designers are 'a dime a dozen'), staying flexible and diversified, finding a niche and evolving new applications for new technology seem to have been the most important strategies for long term survival as a programmer.
)
Sigh...
"I've got more toys than Teruhisa Kitahara."
Oh, come on. Comparing PHP to PCP is a bit harsh. I mean, one is dangerous and can lead to violent behavior and suicide and the other doesn't have a function called mysqli_real_escape_string().
USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
But suddenly, in this tight financial environment I need to find a way to get paid for programming, and perl seems so "yesterday".
To me this suggests that the poster has NOT been working as a programmer for the last 50 years, but has been working doing something else. Does this change or influence what helpful answers might be?
Lets face it, your old, fat and ugly and if you sit in the interview chair, you overflow and make the property value shed 10% of its value.
So, what can you do to make yourself attractive to the lead developer who is probably younger then you and convinced that anyone older is senile?
Well, how about this:
I know how to debug and love solving problems in an application, I really get a kick out of digging out obscure errors from customer tickets and fix them.
---
Suddenly, your salary and other requirements will seem insignificant if the person interviewing you has spent ANY time in development. There are plenty of hotshot kiddies around who want and can program the next big thing but try to get them to fix an issue that is having the customer treatening to leave and they can't/won't want to do it.
Sure debugging sucks and it ensures the remainder of your life is a joyless misery stretched out for... well lets face it, at your age, next week when you will die of a heart attack on the toilet and the paramedics will make fun of your penis.
Reality check is in order, age discrimination exists in IT so make it work in your favor. Old farts are not hip with the on thing dog (see how hip I am?) but young whipper snappers don't know about quality or getting things done or security or stability... so sell yourself on your perceived strengths. Make that young dynamic team think you are going to help them be more professional and NOT hitting the 20th something boss with your cane telling him to speak up.
I would stay away from stuff like iOS, you can't sell the benefit of your experience and the patience of old age to an industry that thinks long term planning is thinking what to do for lunch at 11:00am. None of the languages you have used have gone out of use but focusing on language is the wrong thing, there is always a kid with a longer list. He can't do shit in it but the list is there. Instead, focus on core experience, on understanding of the industry on acquired wisdom...
That is... if you acquired any.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
Say you've worked for 5-10 years already. You've got WORK experience. You've got OFFICE experience. Why not do something new?
So brush up your CV and try to convey what is your experience, what is your positive personal traits.
Get a job as consultant through a consultant company. You'll get your toes into many more opportunities and meet more people.
Consider other roles. There are TONS and TONS of different roles in the jobmarket. Investigate and apply for them!
Take every opportunity to sell yourself, honestly.
With a bit of a confidence you may find there are more opportunities out there than the box you've let yourself get stuck in.
Don't let ANYBODY ELSE define YOUR LIFE. Break out of it once in a while. We're all breaking out sooner or later anyways. Nothing is worth to be miserable for, not even a comfortable salary.
Catcha: certify
I work in a team of 7. We're a mixed bag of software, hardware, and systems engineering types, but we all have to do some programming as our primary function. When a team member leaves, the replacement gets all the lovely FNG assignments as their secondary role. That is, documentation, testing, and/or QA.
I got shoved into software QA when I arrived on the team. I joke about how I hate it and how my teammates hate me in that role, but I secretly relish it and my team mates know it has to be done.
Ask yourself these questions:
- Do you love processes?
- Do you find code reviews interesting?
- Do you like tearing into others' designs and implementation?
- Does it really jack your nads when the documentation doesn't jive with the implementation?
- Do you like audits?
- Do you like meetings?
- Do you like ISO 9001?
- Don't you just hate having to reverse-engineer a product because someone was lazy with the documentation?
- Do you like making/maintaining support tools?
Then Software QA is the move for you!
It is also a skill you can shop around regardless of the development environment (although some environments lend themselves to QA better than others).
Those who never held a real specialist job when they got into management are simply incapable to make technology decisions. All they can do is to apply their el-stupido methods which openly ridicule expertise in anything. They can talk nicely and make pretty powerpoints. But that is it.
Look at HP Co. - they thought that MBAers were the future. Fiveteen years later they are firmly in the crapper, while companies such as Google thrive on deep technology expertise. Google explicitly requires deep tech expertise when they hire people and they give $hit about your "soft skills". They hire quite old people with more than two decades of software engineering under their belt.
If someone does not like the grunt work of software engineering, he or she has to make a change - no doubt. But that does not mean you cannot have a great career until 65 (or 70) in software engineering. Just don't think software engineering is all about a specific technology; it is about a solid understanding of concepts, complexity analysis, lots of experience in making systems, being able to write white papers for other technologists and of course the mastery of at least one development environment and things like business process analysis (and transformation into technology solutions to aid these processes).
Read a .Net Unleashed book and you are already more qualified than 70% of the crap C#ers out there. Companies will be fighting over you if you can solve a few Fizzbuzz problems in C# at the interview, which should be trivial for you with that sort of experience. No, it will not be sexy, but that is what allows you to get your foot in the door. .Net is pretty nice too. The downsides to C# and .Net have all to do with the mostly lackluster community and almost nothing to do with the tech. I got out of .Net for that reason (working in node.js now), but C# still is actually my favorite language I have ever worked with. Linq alone is one of the best language features out there. Seriously though, most .Net developers just write CRUD apps hooking up forms with SQL and Crystal Reports, so the barrier to entry is extremely low.
If you come to Detroit (don't knock it 'till you've been here - and Michigan is beautiful) you can use your existing C and Perl skills in-or-near the auto industry. Having used a micro controller or two is a big plus (makes a job almost a sure thing). You will probably need to do some contract work for a year because you lack the "automotive background". Once you understand how the CAN bus and associated tools are used in cars, you can get work for the rest of your life. C, Perl, CAN - you're in. Experience debugging vehicle level issues - your an expert.
Another way in with PC programming skills is to work for the tool vendors (CAN tools, or micros) which have a path to lower level stuff if you want to go there..
At least do the job search and see what's available. Unfortunately job postings have become buzzword mania and companies will "require" everything from driver development to CEO. Obviously a given position doesn't require all that. C and Perl together will likely get you a job somewhere here - there are several people with that pair of skills down the aisle from me who are gaining other experience on the job.
mandatory xkcd: http://xkcd.com/297/
I'm part of that new generation, so don't you dare dis LISP or I'll mod you down!
Oh, wait I posted. I can't do that anymore.
AccountKiller