Ask Slashdot: Am I Too Old To Learn New Programming Languages?
ProgramadorPerdido writes "I have been a developer for 25 years. I learned Basic, VB, C, FoxPro, Cobol, and Assembler, but the languages I used the most were Pascal and Delphi. I then concentrated on a now-non-mainstream language for 11 years, as it was used at work. One day I had the chance to move into Project Management and so I did for the last 2 years. Now, at almost 40 years old, I'm at a crossroad. On one side I realized developing is the thing I like best, while on the other side, the languages I'm most proficient with are not that hot on the market. So I came here looking for any advice on how to advance my career. Should I try to learn web development (html, xhtml, css, php, python, ruby)? Should I learn Java and/or C#? Or am I too old to learn and work a new language? Should I go back to PM work even if I do not like it that much? Any similar experiences?"
I learned Basic, VB, C, FoxPro, Cobol, and Assembler, but the languages I used the most were Pascal and Delphi.
The language is called Assembly, not Assembler. Assembler is used to compile ASM code.
Google+ vs. Facebook, and why Google+ will fail
I'm 55, a programmer, and I've been out of work for two years. I've had plenty of interviews, but no job offers. Here's my take on all of this: I'm too old to be a programmer. I'll put my "management hat" on and tell you why:
1. I'm old. One 5 hour energy drink revvs up your basic 20 year old code monkey all day. I need a saline drip with caffeine in it all day to keep going.
2. I'm expensive. I have 30 years of experience in the 'biz and a masters degree in CS. I'm not cheap. You could hire two 25 year olds for what I'm asking.
3. (and what I consider to be my greatest failing in the corporate world) I've seen all the tricks. I've been exposed to every nasty little mindgame management has at it's disposal. And sometimes I have the bad manners to call people on it. This is called "having a bad attitude".
So when I compete against 20-somethings in the worst economy since 1929 (I hesitate to say the worst economy ever), I lose. I should have made the leap to management when I had the chance, not because I would have loved management (I would have had to manage assholes like me, after all ;), but because at 40 you have TWENTY YEARS LEFT. The years go by really, really fast. You should really start thinking about a soft place to land when you're 60 now, because if you aren't in line to be a VP or a Director you ain't gonna make it at this point.
The suggestion to "Follow Your Bliss" only works in an economy that's not run by sociopaths. Hell, it only works in a country that's not run by sociopaths. Strike one strike two. Tighten your belt, put as much money away as you can, and make sure you keep your health up. Because the era of "company loyalty" is over, COBRA for a family costs as much as your mortgage, and finding a new job is going to be a real challenge.
Other than that, have a nice day! :D
"If god did not exist, it would be necessary to invent him" --Voltaire
Maybe go into something that is part leadership, part technical. Like design or software architecture or system engineering. Use your experience working with software to do high/mid level design work. As you probably know, there are things that never change regardless of what tool stack you are using. Your knowledge in these areas is probably much more valuable than your knowledge of a specific language.
You’ve probably seen a lot of things work and a lot of things fail... and probably know what areas of a system need to be more flexible or more reliable and what approaches will lead to pain. Don’t take for granted that feeling of your hair standing on end when you look at a design... knowing it will be a nightmare to maintain. It takes years to develop that, and it’s valuable.
Be the guy at the end of the chain who reviews the lower level designs and provides the “overall picture”. The guy who reviews the code and makes decisions on what third party tools to use. Let the children play with the actual code/nuts and bolts.
You probably can learn a new language and go back into programming but I would suspect your experience will actually work against you. You know too much to become a newbie again.
I work with a guy who's over 60 and is just now learning Java. He's being paid to do it, to support a scientific instrument.
The determined Real Programmer can write Fortran programs in any language.
Yeah sorry, at 40 your brain basically fossilizes, and becomes a FIFO stack.
If you learn a new programming language, you WILL forget the old ones.
If you're still proficient with COBOL you can give ABAP a try since it's similar. There's a lot of SAP work around and, at least in my experience, the big corporate environment is willing to hire experienced developers.
English is not my first language. Corrections and suggestions are welcome.
https://secure.wikimedia.org/wikipedia/en/wiki/Assembler_%28computer_programming%29#Related_terminology
PocketPermissions Android Permission Guide
... its just many of the more experienced developers don't want to learn.
Iwouldsuggesttryingoutprocessing
http://processing.org/
itisbuiltaroundbasicsoyoushouldhavenoroublepickingitup
Umm, forty isn't too old for anything, man. lol
You know, all those Russian mathematicians and physicists who escaped communism during the 80s, their average age was well over 40, but they mostly retooled as programmers when they weren't even programmers before. A Russian mathematicians is probably a hell of a lot smarter than you, but still.
p.s. C# wtf?!?
I firmly believe you're too old to learn the day you stop learning.
Never ever quite learning the latest and greatest in programming, to do any less is condemning ones own career path.
Having recently joined the ranks of older programmers I still find that I can completely crush the new kids by leveraging that vast experience I already have.
Dust off the learning hat and get back into the fight man, 40 isn't a time to lay down and die... last I heard 30 was the new 20 and 40 was the new 30... and we're all going to be broke in this economy so who cares in the end?
I learned Python at age 57. I'm 62 now and use it all the time (what a productivity booster). Go for it...
I'm about your age. My impression is that new learning is still possible, but it requires more time and effort. So I'd say it partially depends on how motivated you are.
The concepts are what are hard to learn, the syntax is the easy part. So many similar languages may trip you up at time, but if you can work through the syntax differences and keep hacking at it it's not too difficult to learn.
Make some nice chests (not the fake kind). You will have a lot more fun, with projects that can be easily estimated, and once done, THEY ARE FUCKING DONE !! Seriously, doing it for so long I want to kill, Kill, KILL !!
I owned a mortgage company during the last decade and had to shut things down when it all went south. Given that a mortgage broker has such a 'wide range of skills', I found myself with 0 prospects and a hungry family. I had always been interested in programming but never took a single course or had any idea about any language.
During the last 3 years I started learning html/css, then javascript, and now C# and PHP. It's been a battle but now I have found myself a new set of skills and have started getting regular work in my small town. I don't think I'll be programming the next social media platform but my local customers like my work and sleep much better at night.
I turn 42 next month.
Sorry but the question is too inane to take seriously. Best of luck.
I'm 38 and 'still' a programmer, constantly learning new stuff and taking on those hard tasks. I tried management and I didn't like it, so I went back into development and don't ever want to change. As for what to learn, I'd say look at Java and Android (and I say that spending my day on iOS development). The tools are decent and free, and you'll see results pretty quickly.
Can you remember your name and not constantly pissing yourself? then your not too old to learn anything
Simply put, do you want to write software for the rest of your life? You'll constantly have to learn new skills and update and are in danger becoming old hat (languages that are abandoned). You become very specialized and that's dangerous. I personally plan to move toward management at some point. The BEST managers are those that coded for years, know the difference between good logic and bad and can translate this to executives.
That's my goal at least. I'm 35, a senior developer and eventually plan to take a role in management. I have no desire to become an executive, but love directing large projects and making a noticeable difference.
What do you want to do?
If you think you might be too old, then you are.
Ask Slashdot: Am I Too Old To Learn New Programming Languages?
Barring extreme physical exertion and danger, you're never too old for anything. If you're too old to learn something new, you might as well lay down in your grave and wait for death on the grounds that adopting a fatalistic attitude toward new experiences basically ensures you're done with life. That's my opinion anyway. Seriously, if you can't do something new, what exactly are you looking forward to?
I do have an important question though: how did you come to begin programming? I am unfamiliar with what would have been available paths back in those days. Did you get a degree via courses in logic and mathematics? Trade school? Taught yourself? Mentored?
I believe Pascal is closest to a procedural language and Delphi is the object oriented equivalent? So that's a somewhat diverse start. Are you familiar with concepts like (but not limited to): closures, sets, Big O Notation and understand the difference between a framework and a library? These are things that I might not use daily coding Ruby and Java but I remember from school and I feel better prepare me for learning any new (or old) language. If you aren't familiar with these things, it might pay to consider taking refresher courses at a nearby college to brush up on them. I don't know how viable this suggestion is but on the grounds of learning new languages, it has proved invaluable to me in understanding why language creators made the choices they did.
Should I try to learn web development (html, xhtml, css, php, python, ruby)? Should I learn Java and/or C#?
Personally I would suggest Ruby on Rails with CSS for a solid UI. You're going to need to know concepts like RESTful interfaces and it might take some getting used to letting the Rails automagic do things for you but the resources are plentiful and free. It sounds like it will be totally out of your comfort zone and that's probably a good thing if you're up to the challenge.
Should I go back to PM work even if I do not like it that much?
In today's economy? Why not make two resumes: PM and Programmer. If PM skills pay the bills, hop on it and work on programming as a side hobby. If the right Programmer position comes up and the pay is good, consider it but don't set yourself up for failure or take too large a risk if your home/dependents/nestegg are at stake.
My work here is dung.
learning a new programming language is awesome.
however, if swelling persists for more than 4 hours...
Come up with a product idea, find the best language to write it in that you are interested in learning.. then hire one or more cheap programmers on odesk.com to write the software. You follow along, adding code when able, or just work on the user experience and PM.... Ideally you'll have customers in mind before you even start that can help test and refine the product. Roll it out as soon as possible and start charging money for it. (Yes, I've done this.. it works.. and your budget can be very small.)
You're never too old to learn. I'm in a similar situation to you: I learned a number of computer language and now, being almost 40, I don't do any programming at work anymore, I just do fancy diagrams. That doesn't prevent me from maintaining my programming skills in my spare time and learning new stuff. In the past couple of years, I've dabbled in Vala http://live.gnome.org/Vala, Python (to create scripts and desktop apps rather than web apps), re-acquainted myself with ANTLR and played with a number of other languages. If you want to have a go at an interesting variety, get yourself a copy of "Seven Languages in Seven Weeks" by Bruce Tate: http://pragprog.com/book/btlang/seven-languages-in-seven-weeks.
In WW-II Japanese air force promoted their combat aces to ranks so high they out ranked their base commanders. They kept assigning themselves most dangerous and glorious combat missions, eventually all of them died. But Japanese did have a few aces notching up dozens of kills. US, on the other hand, does not have any reaching even 10 kills. The moment a combat pilot notches up 5 and qualifies to be an ace, he is transferred to the training command and is made to teach those skills to a new crop of young pilots. Some of them eventually transferred to NASA test missions and flew research aircraft.
So though you love coding, switch to project management. I am speaking from experience. I loved coding, and stayed in programming for far too long. I am doing project management now. You can always code in your spare time, doing what you like.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
I'm 47 and I split my time between management and software development. Though I strive to always improve, the management aspect of my work is not something I particularly enjoy. My personal view is that my skills as a manager are easy to find in other people. My technical skills not so much. Given that, I feel that letting my technical skills atrophy would be a huge mistake.
Yes, become proficient with web technologies. Learn HTML 5 and how to create rich applications for mobile devices. Create an app for the App Store or Android Marketplace. Get involved with an open source project.
Oh, and grow your hair out. Once you hit 40 you need long hair to be taken seriously as a developer.
I switched from a management role back to a developer/team lead role at 46yo. It has gone well. I work at a company that appreciates me, and I'm doing good work that I enjoy. I also have a couple of other possibilities for jobs, should this one go south. Here are the languages I've learned, at at what age: ;-)
16 - Basic
19 - Fortran
20 - Pascal
29 - C
31 - C++
39 - Java, JavaScript, HTML
46 - C#
I think I'm actually a better programmer now, probably because I can focus better than when I was younger (maybe was ADD-ish).
Also, a mentor of mine is 70+ with quad bypass surgery over a decade ago. He's learned C, C++, C#, and now GPU programming, all past 60yo.
OTOH, if you enjoy PM and are good at it, there's nothing wrong with it. Establish a track record of doing good work and having good relationships with coworkers and managers. You can always take less money, if the alternative is no money.
Trying to bridge the gap between developer and manager for the last years didn't work, you get pulled in too many conflicting directions
Reality of coding versus the imaginary world of management, snr management.
I have a new position (switched companies) where I can leverage my technical knowledge but manage an application, employ other skills too.
Every Java book I have started..I stall at around page 51 - partly just because you need a tutor who can answer all those dumb questions.
I've been coding for 40+ years (I'm in my 50's).
New language intake is a little slower than usual, because the print in the manuals is smaller these days :-)
Seriously, I you can dedicate the same level of time, energy, and curiosity to learning this language as you did when you were younger, you'll do fine.
You'll still need the same intense, distraction-free environment, so you may need to camp out for a week or two.
Whatever the case, it's unlikely this will cause you to forget FoxPro, even if you want to :-)
If you dont mind maintaining legacy code or systems then those skills will always be needed. If you insist on new project development then yeah it's time to either learn what is current or get off the pot.
Either way, good luck
I don't think it is a matter of being able learning a new programming language. An good example would by father-in-law has recently taken up writing programs to generate art. He is 71 and had some programming experience, but was an EE by trade. He learned java, c, and c++ as well as post script. Now as others have mentioned the real problem come with management, the body count, and corporate culture. Why would they want to have you as a programmer when they could have 2 college grads for the same price since according to management people are interchangeable and experience doesn't matter. When I tell management what I think at my job it is usually welcomed as I won't BS them and blow smoke up their ass like a lot of people do. At another company I got fired for "not being a team player" for doing the same thing.
Time to offend someone
It depends on what sort of mental model you built to learn your first languages. If you started with one or two and stuck with them up 'till now, you might be stuck thinking in terms of those syntax/vocabulary models. On the other hand, if you managed to develop a lower (higher?) level mental model with which to contain your acquisitions up to now, learning more languages will be simpler.
I'd say: Give a new language a try. You might be surprised at how easy it is.
And remember: Writing software is like having sex. Make just one mistake and you've got to provide support for a lifetime.
Have gnu, will travel.
I started learning XQuery (for native XML databases) before turning 40, but it was after turning 40 that the whole beauty of the language overtook me.
There still aren't that many XQuery programmers out there, and their demand is on the rise. So learning a new language with a lot of potential and very little current competition may be what you need. Your functional programming skills will be very helpful with XQuery.
For starters, the Open Source eXist DB project is great for getting up and running with a native XML database and using XQuery. There are a lot of tutorials, deep documentation, and a very responsive mailing list.
Really be honest. Were you really good at it? I've worked with far too many people that weren't that good at programming. When they left to do something else it was good for them and everyone. So if you became a project manager because you weren't great a programming I would stay away. If you were really good at it, picking up a new language shouldn't be a problem.
Being "too old to learn" is mostly an excuse. Unless you have a brain injury of some description, or a brain disease, you're never too old to learn anything. It might take slightly longer, then again - it might not.
Nearing 40, I'm learning Verilog which is not merely another language, it's a hardware description language and although the syntax looks familiar to a language you write software with, how you use it is radically different. This has certain challenges, but there is no problem with actually *learning* it, nor some of the very big differences that "writing hardware" so to speak has compared with writing software. Also, while we had a slack period at work I made a start at learning Erlang, which looked like it had some useful applications for what we do, and had no particular problems learning it despite it being a functional language whereas everything I've done to date has been an imperative language.
In fact to learn a new language within the same family (for instance, if I were to learn Python) today I find it much easier and much faster than I did 20 years ago because depth of experience can help avoid the dead-ends, and we have much better tools which can also help us to learn faster.
This, by the way, applies to human languages. "I'm too old to learn a foreign language" is an excuse. "English speakers are bad at learning foreign languages" is an excuse. I started learning Spanish 3 years ago. Today, I'm at an advanced level and have even stood up in public and given talks in Spanish. I can think in Spanish and conduct my entire daily life in that language. I can even laugh at humorous programmes on Spanish TV, which proves that I'm getting to grip with it pretty well. Until 3 years ago I was monolingual so it's not that I'm getting a handy lift-up by knowing some other foreign language.
If you believe you're too old to learn it'll become a self-fulfilling prophecy and your brain will wither away.
Oolite: Elite-like game. For Mac, Linux and Windows
There are solid OO languages behind both.
Both have a web orientation that is current to future leaning.
And both will force you to learn common design patterns of said OO languages.
Best one-stop shopping for an old timer.
Hogwash. I didn't start working as a software developer until I was 50. I learned Java, Perl and PHP in a year or so. I already knew C and FORTRAN at that time. Since then I've taught myself Python, Javascript, Scala and Ruby. I've recently started Erlang.
A year later I taught my father C; he was in his mid 70's and wanted to right some software to do some statistical analysis of stock data.
Don't let these whippersnappers tell you you can't do it. The fact is that is they know it, it's easy. The stuff that is actually hard is the math, and since you went to school more 20-30 years ago you have a far better education in the fundamentals that count than they do.
NOW GET OFF MY LAWN.
What mythical force prevents you from reading and spending time on a new subject? It's like an obese person asking if they're too fat to lose weight. Having said that, C# and Java can be similar to C but they can also be different in large ways. C# has delegates. They're anonymous functions that can be passed around. Java has anonymous classes. They're classes that are defined at runtime that can be passed around. They both make use of generics. You'll need to know about polymorphism to understand that you can pass subclasses as arguments to functions and that you can return the subclass when the function had the return type of the parent class. They both borrow from the functional style and it may be alien from your perspective. But Ruby, Javascript, Python, and Scala are all functional and Python is becoming a fan favourite. The functional style makes for less lines of code to accomplish the same task as the procedural style.
I've been in the biz a long time. My observation is that you probably have to choose between doing what you like and money. If you like money more than personal work satisfaction, pick the management route. It's the better choice for us geezers finance-wise. But if you truly prefer coding, and money is secondary, then go for it. You may have to dumb-down your coding resume a bit, for "experience" works against you, and keep your asking price mellow. Only briefly mention your distant experience on your resume, they don't know or care what a DEC is.
Table-ized A.I.
Just saying.
I'm 51. I'm a C/C++/Java developer. I just learned Python. Well, I'll be really learning Python for a while to come yet, but it didn't take long to find my way around. In years past I've done Assembler, Basic, and Pascal.
And sorry to the 55 year old guy who's been out of work for two years and anyone else who's out of work, but I've only been unemployed for longer than a month one time in my 25+ year career, and that was only because of a dick move by a "friend." Needless to say he's not a friend any more.
You could always start your own company. Use that opportunity to learn hot skills. Like mobile platform programming such as iOS and Android. Start as a consultant so you can keep your day job.
Advantages
1. you keep an income as you develop your career
2. you create your own management position
3. you develop advanced, in-demand skill sets that are only getter hotter
4. if your day job disappears, you can build your moonlighting career
5. if your moonlighting career fails, you have the skills to seek another job
Disadvantages:
1. You gotta be brave and disciplined.
Getting proficient in anything is hard work, but age is only one factor. If you need to make a choice look at all the factors. Research areas you have domain knowledge, what open source applications are used in that area and what languages are those apps written? Leverage everything. What's the dominate languages in your geographic area, python, c#?
I'm nigh on 58 and still a developer. I am content to keep writing code.
I tried being a PM and it amlost drove me into an early grave. It is not for me.
So I went back to developing.
The company where I worked went belly up two years ago. Sure it took me a while to get another job. Not for the reasons stated but many companies couldn't hack the 'I don't want to be a Manager' answer to the where do you see yourself in 5 years question.
Finally I got a job where they were happy with that answer.. sure I could earn a load more if I were willing to commute for 3hrs a day but those days are behind me.
In three or so years I'll call it a day and retire. I will be able to afford to do that because I saved loads in my 20's, 30's & 40's.
to the OP,
Stay with it. There will be a job somewhere for you. Somewhere that will appreciate your experience and honesty.
Good luck
I see this a lot with developers who have worked in one language for a long time (while others are invented/evolved around them).
My Father-in-law was a UNIX C developer for 24 years before being laid off and facing a very soft marketplace. He asked me (a java programmer of about 8 years at the time) if I could give him some pointers on getting started on a more marketable skill.
I said "I can't give you any pointers, but I can pass on a good reference or two" *rimshot*
In all seriousness after about a week he was like "I don't know what I was so afraid of."
Just remember a language does not make you write bad code or good code, the language is just a way to express the concepts that you have down, the conceptualizition of the process is the actual hard part.
I'm 66. In the last few years I've learned enough Python and PHP to do useful work, and learned Linux enough to get an LPI cert. Considering all these things are free to download, there's no barrier preventing you learning, except your own false belief that you are too old.
"Cock Up Your Beaver" does not mean what you think. This sig is intended to clog filters and annoy do-gooders
I'm an over 40 software engineer. I've found that a diversity of skills makes you more flexible in the marketplace. I learn at least one new language a year to stay current. Sometimes I learn more than one. When I change jobs, I try to go to new industries to broaden my exposure. When the economy is good, you can really take advantage of diverse skills to work your way into the up-and-coming industries. In a down economy, your diversity of skills means you've got more options than the one trick pony.
Personally, I never want to move above team leadership. My only alternative is to stay relevant on the technical side. The only way I do that is by constantly learning and being able to show that I constantly learn. I've worked hard at remaining employable and relevant as I age and it's paid off. After getting laid off from a company hemorrhaging money a couple of years ago I have been able to pick my new place of employment from a number of offers.
The only person who can make sure you stay employable is you. The only way you can do that is by staying relevant in the constantly changing marketplace. The only way to make that happen is to keep learning every day.
While experience counts for a lot, managers and employers rarely see it that way. They will see your out-of-date skills and hire that 25-year-old who has all the modern languages on his/her resume.
Want to keep your hand in? A couple of suggestions:
- Even as a PM, you may be able to find an excuse for the odd proof-of-concept or prototype.
- Program in your spare time. If you don't have a family, you have the spare time. If you have a family, take the excuse to learn Scratch, or Python, or some other kid-friendly language - teach your kids to program!
- Teach an evening course in programming.
There is nothing mysterious about the newer languages, but you have to *use* them. Work your way up from simple stuff, Google for answers to the inevitable "stupid questions". Learning a new language, and sometimes a new way of thinking takes time. If it makes you happy, you'll find the time - but likely no longer as part of your career choice.
Enjoy life! This is not a dress rehearsal.
In fact you would probably be better at learning a new language.
The Kruger Dunning explains most post on
As a 37 year old that has programmed 100s of k lines of code in several languages for the last 15 years, I've found that understanding fundamentals is more important. With a language reference handy I can write functional code in a new language immediately, and optimized code that accounts for language peculiarities in a couple months. Mind you I've really only been working with imperative languages mostly, so a different class of language may take more time. Anyway the point is that if you really understand the basic control and data constructs that most languages share, you'll get by fine with a new language. But as others older than I have pointed out, you may want to look at the bigger picture and longer timeframe re: your career. So far I've been getting away with ignoring my age as a numeral and just forging forward to the best of my ability, but life is limited and that strategy probably won't last until the end. In any case, age is just a number, and it has a strong placebo effect, so go with what youve got instead of what you are supposed to have at your age.
LS
There is a fine line between being a cultivated citizen and being someone else's crop. - A. J. Patrick Liszkie
If you have a base its better than starting from 0. Now for my sales pitch:
Check out my site WiBit.net. We offer video computer programming tutorials in a linear and fun way. We break apart everything into 5 minute videos that are focused and comedy infused. You can skip right to things you want to learn, and skip over things you already know. We made it so you can learn if you have no experience, or skip right to what you're trying to figure out if you're experienced.
We have C,C++, and Obj-C for now. Java and C# are coming soon! Out content is free! We only ask that you sign up to download labs material!
End of sales pitch. Thank you for your time and for tolerating my excessive use of exclamation points.
for my employer, on any job I might be project manager, systems architect, developer, sometimes even racker of hardware and cable puller. I still learn a new language now and then, and now and again actually use them at a client.
Have you had much object oriented exposure? if not, get that way of thinking into your skill set with a widely versatile language that is used for command line, web, daemon and applications. I'd suggest Python, learn the basics, then do some web development, then go into a web framework (take your pick) and also learn to call C libraries with python.
http://docs.python.org/index.html
Pfft. I learned in the 70's on BASIC, Pascal and other procedural languages that ruined me for years. Fortran on punch cards? Did it.
Now I have to learn new languages for nearly every new project. It's not so hard. If you have good basic logic skills all languages are pretty easy to learn.
Tip: Become a consultant/contractor when you are old and wise.
Normally, I'd say do what you like the best, but in this case, do what the market wants. At 41, I'm expensive and falling behind in technical skills. I've gone from being a Systems Engineer back to a Systems Administrator with more server room and virtualization experience, and my salary has not changed for the past 4 years. I'm now also a small business owner and a consultant. I'm boning up on my corporate and management skills a lot more than my old technical skills. I'm learning how to attract and land contracts, manage employees and so forth. If I stay strictly technical, my salary and skills will plateau (they already have). No one wants to employ an expensive SysAdmin. They do want to employ cheaper employees on a contract that I manage. So, my strategy is to learn how to get those contracts and then hire the employees myself, earning my company revenue (and thus me, a higher salary).
My advice: learn what the market wants at the price you want to get paid. Go to salary.com or some other service and find out what the average and range of salary are for the job you want to do. If your salary expectations are higher than that job, consider switching to another set of skills that will pay your salary.
...no, you are not too old. Unless your brain is malfunctioning due to age, you should be as able as when you were a kid. It just requires more patience, from what I noticed.
I recommend you pick C# over Java. (I am a Linux user, and yes, I find annoying I can't use WINE to run those, but that's not the point). C# is less portable but is faster. Java is slower, but portable. (And both have a lot of code references).
Also seems there are concerns about Java's future (which I happen to see more realistic than the C# FUD about it being replaced with HTML5+JS, fat chance), which makes me, personally, wary of it.
Basically, if you don't care about annoying Linux users, go with C#. If you are using less common OSs and speed is not a concern, go with Java.
Also just for fun I'd learn Lua or Python. Lua is extremely easy to learn, and a seasoned programmer would master it in seconds. Python is just useful to know IMO.
Although since you list C skills, I'd personally stick to C until the very end. Super fast, super portable, time-proven and still in use (can be a pain to code but I find it way worth it).
At 40 I would have expected the OP to realize that once you learn how to program, everything else in syntax. It sounds like the OP has a robust background in coding, I can't help but wonder why s|he is expressing trepidation on this topic.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
Teaching is a good option. Too many new developers lack a good comprehension of the basics. At the very least it's something worth a try. It'll use the core skills you've learn and the language you are familiar with.
If you really want to do development you can try to learn a new language. It's relatively easy but you'll be up against newer younger models who will be more proficient at it. You can also try to find some one with legacy systems running on the language you are familiar with. They're fairly common in big old business.
Don't. Number6.2 has given you all the good reasons. We all have the same disease, we love coding, but doing it for money is something that is entirely different.
I've been chasing the type of positions which satisfy me intellectually for 10 years now, and I'm almost done with it. It is a very expensive thing to do. With a family to feed, one ends up choosing the position which is slightly or significantly more boring, but pays better.
Once I'm done with the PhD, I'll probably chase an MBA if I can afford it (quite unlikely, since it is very expensive in UK, especially if you're not an EU citizen). Work + PhD is killing me now, but it is kinda my insurance. I'll explain it in a moment. If I've done sales in the last 10 years, I'd be in a much better position in terms of savings and quality of life. IMHO 35 is when you need to start looking for management seats. 40 is latest. Some very lucky people end up in great combinations, where they write very critical code, regardless of age, and they have minions to do the rest of the work. They are the minority.
If you want to do what you're doing to stop your brain from dying, try academia. Enroll to a master's programme or a PhD. That is your intellectual playground, which won't leave you unemployed if you choose to do it. Sure, it'll be hard to find the time, but that is a much lower price to pay. With this economy, unless you can specialize to the extreme in a topic that is hot (financial computing, machine learning etc) you'll just ruin your life by attempting to do what you're thinking about. You'll be too generic at the age of 40.
I'm almost 35, and once I'm done with the PhD, I'll start looking into management positions. If I can get a teaching position in academia, that is also quite good: mental playground with all the fun things, without competition from 20 year olds. But in that case I'd still need a second job, because academia does not pay enough to make a living for a family. Still, safer options than trying to compete with the 20 year old who is hungry and willing to work 12 hours or more, for much less then you and I would demand.
Can you learn a new language - sure. As another poster pointed out - is it worth it? Unless you want to compete in price with a bunch of newbies; probably not.
A development team or shop is like a baseball team
There is the rare superstar that gets top dollar because they can do things nobody else can' which is why they are rare and expensive.
There are a few solid players who have decent careers because they have a good skill set and can be depended on to deliver. they make a decent wage but no where near the superstars. They stick around.
The biggest group is the journeymen players - they hang around a few years but there is always a crop of younger, cheaper players coming up to replace them. they never get serious money. They get churned to control costs.
Then there are the managers and coaches. They are valued for their experience; they know the game, seen all the tricks and can guide a team to victory. The may not make superstar money but they are paid well and they have longevity (as long as they perform) and options to move if they do well. They stay up on the game but don't try to play. Plus they decide who gets to play, where they play and who stays and who leaves.
As others have pointed out, there's always someone whose cheaper or wiling to work for less when it's a pretty generic skill set. I'd use your experiences to move to a place where your knowledge and experience is what is valued; rather than try to build a new skill set. Learn new languages to be able to identify good vs. bad programming; but base your value on being able to identify problems before they hurt you or solve them as they come up.
I can't code a line (unless it is Fortran) but I can manage a team and clients to get the job done on schedule and budget. It can even be fun -I've never believed you need to be a jerk to be a manager.
I'm a consultant - I convert gibberish into cash-flow.
I can't pretend to know enough about this to have any valuable input, but I do have a suggestion. A few years back I worked on a project, and one of the guys on the team with me was in his 40s as well. He knew the language we were using (C#), but he didn't know modern programming theory. Unfortunely, the team lead didn't get a chance to look at his code before he left (he was a contractor), so we ended up having to throw out almost all of his code because none of it was object oriented. All that being said, if you go back to learn a new language, pick up some new programming theory as well. On a closing note, good luck with your decision. Career path decisions are almost never easy (I'm in the process of that right now myself). Best of luck!
Well if you compare it to language learning the old brain apparently can still learn some new tricks:
http://www.newscientist.com/article/mg21128224.000-age-no-excuse-for-failing-to-learn-a-new-language.html
HR wants to have at least a PHD + 2-3 years and after 3-5 years then they will can you.
I'm 34 and learning more and faster than ever before. I pick up new languages and ideas like a fish in water. The more I learn, the easier it is to learn other new things.
I can't believe that 6 more years would see me turn into a turnip.
No, 40 is most definitely NOT too old to learn new tricks. My father think he's too old at almost twice my age, and I don't even agree with that.
"If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
I agree 100% with everything the parent has said.
I'm 46 and unemployable - AND I'm more than willing to work for minimum wage if I have to. No one will even talk to me.
I've tried getting temp jobs as a typist or for anything and everything and nothing - they see a Masters Degree and years of development experience and they wonder why I'm there.
The people that don't know any better won't talk to you because they wonder why you're there, and the other folks won't talk to you because you're not employed.
If you're unemployed and middle aged, you have a very little chance of getting a job - let alone a development job.
I should have made the leap to management when I had the chance ...
I saw the writing on the wall and tried my best - even got a MBA. The biggest waste of time and money ever in my life!
I learned XSLT, css, and C++ after age 40; Perl, Verilog, and VHDL when I was past 45; Tcl and Python after 50, and that doesn't even count miscellaneous libraries, shell languages, and I don't know what-all.
Find something you love, and make yourself the guy who can do it.
I'm 40 myself. I love coding. I had to learn a couple of new languages last year. But I'm finding now that it's a better use of my time to train the new guys to do the job I was doing last year. More work is getting done. The painful lessons I learned last year, I'm teaching to the new guys this year. So instead of one guy doing that job, there are now four guys doing it, and it's getting done faster, and possibly better, because at least a couple of them are smarter than I am (really, that's a low threshold).
Easy Online Role Playing Campaign Management
If you've been around for order 20 years, you've worked through the easy problems. Let the kiddies code new implementations of solutions to those because they don't know the answers and someone will pay them reinvent the wheel. Find the hard problems and work on them, these are the problems the kid and code monkeys don't have the perspective to solve. Picking up a new language is always a good idea -- even if you become a manager -- it's leading by example. Learn more math. I'm 42 and I still try to learn something every day. We have a young guy in the office who is a recent addition. He's a decent coder -- but I was shocked yesterday when some easy-to-me math went right over his head -- math I take for granted and use all day every day.
If you're familiar with Delphi, then C# should take about five minutes to pick up. It was designed by the same architect as Delphi, and you do almost everything in the same way. It just uses C syntax instead of pascal. But ha at being too old, my dad picked up Delphi in his 40s and it's his favorite for RAD. He still uses Delphi 7 (the last good one) for everything, and grumbles about there being no Mac version. "Use Lazarus, it's exactly the same" "No, too hard to use" "It's identical!" "No it's not". Then again, he's probably trolling, he was mocking my use of a smart phone "My phone makes calls and that's all a phone is for!" and then he bought a droid ;)
ASCII stupid question, get a stupid ANSI
Hi ProgramadorPerdido,
It's never too late to learn, but after a lot of time in the software development field as a programmer, you should start thinking about project management, you can still learn some new programming languages, i'll recommend you to learn some python, ruby and perl, the three programming languages that every "modern" programmer should be familiar with (i'm assuming that you already know C/C++ and you said you know assembler).
Why do i tell you that about you starting thinking on manage projects?, because you have a lot of experience on software development and on programming techniques that you can share and teach to your development teams, that means you gain a lot of respect from the developers you're leading and if you already know the programming techniques and logic and learn new programming languages, it will make you a great project manager because you will know how the developers should do things and help them up. That's what my boss does, he's a very good programmer, and if i don't know something, i'm sure he has the answer, but he does not have time to code day by day.
About .NET, i'm 24 years old, about to begin my MsSc in CS studies and i've never done something in .NET, it goes against my principles and values. About Java, it's a really rich and powerful language, you should give it a look, but market tendencies are changing and almost everything it's done "on the cloud" and exposed as web sites and the Java web development frameworks based on servlets are too complicated compared to Rails, Django or Catalyst, even compared to Symfony and Zend on PHP (that are complicated by themselves and because they're coded on PHP pseudo-programming language). Java still very powerful for the web services development and web back-end applications.
You aren't too old, but unfortunately you've used VB.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
get offa my astroturf!
It's improving, but web programming is still primitive and frustrating compared to old school programming with a real IDE. You will long for the days where you had an actual GUI building tool that didn't suck and/or break in multiple ways in different browsers. It is important to realize that web programming was a huge step back in power compared to rich native applications, driven on by the fact that it is more accessible and "secure" running in the sandbox of a web browser. If you want to do web development, focus on back end service stuff that don't require much GUI.
If you could program one language, you can program in any language. It's inherent on the Turing-completeness of programming languages. It's all just a matter of syntax. Sure, mastering a language takes time, but you've probably see already much things and that means you can easily apply what you know to the knew languages.
See, I agree with you 100%, more if I could. In my years developing, most of the languages I now use to program are not the ones I was employed to do, but ones where I've been dropped into a project, had to hit the ground running and learn on the fly. It's not difficult, once you know the concepts of *how* to program.
But. Try going in to a job interview and saying "No, I don't have 5 years of this language, but give me a week, some small changes to work on and access to google and I'll be able to program it as well as most of your other developers". It may be true, but it doesn't wash with HR people or project managers. They have a ticksheet of skills and levels and they don't care a damn how easily transferrable any of them are - if you don't have it exact, tough.
-Never argue with an idiot. They drag you down to their level, then beat you with experience-
If you understand the concepts of programming, then the knowledge is transferable. I will grant to anyone that it is difficult to go from procedural to object oriented languages, but in the end, it is all "yet another way of telling the computer what you want it to do."
What's great is that with few exceptions, it has all been done before a thousand times by many people who document themselves on the public internet. So if you are armed with a good, strong, general understanding of programming and a strong understanding of what you want to accomplish using another programming language, there is much you can learn "on the fly" without making too many mistakes along the way.
Good programming practices are fairly universal, after all. Knowing the intricacies of a language is also important but can be learned as you go as well. (you know, details like limits on the size of memory elements such as integers, floats, arrays and the like, the effects of dynamics such as what happens to an integer, signed or unsigned when you decrement past zero and so on...)
But without a purpose of a goal, even a fake one, it is pretty difficult to learn anything. Most books which teach programming, do so by use of examples so that you can have a feel for the practical application of some aspect of the language.
But really, the question of "am I too old?" Age is not the issue. I am convinced it has everything to do with the health of the person in question. As you get older, it is easier to loose parts of your mind from time to time, but I have found that if you watch your diet, you can keep your mind more clear and ordered and prepared to accept and process new information and knowledge. I have also found that when I eat badly, my mind works BADLY. For example, low-carb with lots of vegetables and roughage style eating gives me optimal mental performance. But when, on occasion, I eat those burgers and fries... or worse? (I love'm okay?) Well, the impact on my mind and even on my vision is quite profound... and I regret having done so almost every time.
So as you get older, take more time to prepare yourself and your environment for absorbing new things. Eat things that you know are good for you instead of things you want (unless they are one and the same). Clean your environment! Clear away interruptions. Put on some classical music (that really helps). Plan your path. Imagine starting, working and completing. Then do it.
Hell I did some of my best programming/system design when I was 40! But I do find it odd that you would be asking about learning a new language... that's something you should have been doing all along. Part of the challenge of being a good developer is staying on top of the latest trends and development environments. In fact, some days, the only thing that keeps going/motivated is knowing that there is always an opportunity to learn new things.
Wanted: witty unique signature. Must be willing to relocate.
I'm past 50 and am a professional software engineer. I know several other programmers over 40. I started out with FORTRAN and Pascal, and during my career I took night classes to learn C, C++ and Java. I taught myself how to write Perl and Python on the job.
If your skills are outdated and you're serious about programming, you have to start learning pronto. Your question has both technical and professional aspects. No one can tell you what you will be successful doing. Is age a factor? Certainly, but it's not something you can control. Take care of everything else you can besides your age! Focus on your technical and communications skills, your appearance, your resume and CV, your level of optimism and enthusiasm.
Prepare relentlessly, then go forth and compete! It's the only way.
I'm in a similar age category. And some things are harder for me to pick up these days. But other things aren't.
I'm not really trying to learn new languages at this point, over the last 15 years I've surveyed at least 150, and trying out small projects with at least 10 of the best ones.
Right now I'm going "back to school". Studying AI http://www.ai-class.com/, and Algorithms http://mitpress.mit.edu/algorithms/. I briefly toyed with the idea of studying Knuth, but it didn't seem practical for what I want to accomplish.
Why not work on some FOSS projects? Even fixing bugs can help keep the old gears turning. Better yet, start your own fun project.
Well if your breathing and coherent your young enough to learn. You may not learn quite as fast as you did at 20, but your past experience will help you to know what is most important to learn. If you have curiosity, energy, and excitement you'll be able to learn. You've said you like development and that's a good sign that you can learn anything you need to.
Look for positions you'd like to have and fit yourself to it! If you have some latitude in the tools you use at work then try small projects using different languages. If not then start you own projects at home. There are lots of free IDEs and compilers out there.
Don't listen to those who say you can't learn because your 40: it's a falsehood! Perhaps they are covering up some other reason they cannot learn and are out of jobs. Like lack of energy because they don't take care of themselves physically, not just exercise but diet. Or perhaps they were never good at developing in the first place. Or they are lazy and have given up all hope.
Since you've done Delphi and Pascal I'd go with c#. You'll find it very comfortable in many ways (as the leader for c# development is the same guy who designed Delphi). It also happens to be a rather popular language and is used everywhere from the web to desktop applications.
Good luck!
Age has little to do with it, save young programmers may have more energy and no social life. Too many hours is sign of a poorly designed project and management inexperience.
... that's not really new but may be to you is Object-Oriented Design/Programming. I think an easy way to get into how that works is to use one of the modern IDEs that have intellisense-like tips that actually help guide you through the possibilities of what's possible (nice phrase, eh?). Those of you familiar with Visual Studio, etc. may be able to word this better. I think once you actually start writing code in one of these advanced IDEs (in this case, "copying code" will not help you learn) it helps you understand how the Object-oriented paradigm works. Then, moving on to the other web-based languages that also implement classes and objects (but don't come with a built-in hand-holding IDE may be easier. I think diving into OO without Intellisense is too much like just reading a textbook. Ya gotta get yer hands dirty.
I'm a 40 year old history professor, but I've lurked at Slashdot for years on account of my hidden/closeted geek side.
I've just now started to learn Arabic and Mandarin Chinese. Back in college I studied Russian, and mastered it quite quickly. I am progressing nicely in Mandarin and Arabic, but by no means am I mastering them at the same pace I mastered Russian 20 years ago.
Though some here are denying it, yes, as you get older it does become more difficult to learn. Not impossible, just more difficult. We now have wives, kids, job, mortgages, and home repairs to occupy our time, so of course making time to learn new languages is difficult. But it's more than that. Our brains simply aren't the same as they were 20 years ago. I'm no MD, but this is simply a function of the evil which is "aging."
I'm 45 now and I'm learning python and honing my Java skills after being a C/C++ and Assembly programmer for years.
Never too old. Never stop learning - NEVER
last year i was at a scientific workshop. one participant was above 80 and a lifelong c coder. i explained him python an how a webframework works. no problems on his side.
I too come from a (mostly) Delphi/Pascal background and switched to C#.NET about a year ago. It's amazing what you can do in C# and the learning curve for Delphi veterans is not too steep. Trust me, choose C#, you will not regret it.
Ditto. The #1 advantage to age is domain knowledge. You need to play this up.
Code monkeys are cheap, but a guy who knows his algorithms and has good domain knowledge is cheaper. Code monkeys will cut and paste, do naive things or write unmaintainable code. According to Alan Kay, on average, 80% of the cost of software development is after the software has been released. This means that in order to beat those odds, good code needs to be written from the start. You should make this case in your job interviews.
For anyone out there doing hiring, here's a tip for spotting good programmers: they tend to work on paper first. Give them a practice problem and see if they can decompose it without a computer. No code needs to be written, just watch the process unfold. Any competent programmer, or one who dares to call himself an 'engineer' should be able to do this in front of you.
I'm 50 and have been in this career for 30 years. Throughout my work life I've had to adapt to the changes in the industry, from Mainframes to minis, to PC, and now the mobile device. It can be done and I think you give to much power to inexperienced developers, not enough credit to managers.
I can agree that cost, in this market, can be a factor, but then how much are you willing to cut. I dropped 15% to get my current job, but it was still within my budget and I get to work in a growing company. Are you willing to move? I did to keep working.
Learning a new language at this point is not an issue of a fossilized mind (like another poster quipped), but that you have more distractions in life in general. In my 20's, the level of responsibility around me was limited. No wife, kid, house, or major debt. Over time my focus and time got more diffuse, and the work environment restricted my ability to "experiment" with new technologies. If you want to learn something new you'll need to set aside time to work and research. You will also need something that interests you, to drive you along. Right now I'm writing an application to scrape data off a website, integrate the data into google maps API and store it off to a MySql/PostGreSQL database. Its fun, but I don't get to work on it all the time. IT's not for my job, but it is something I can talk about in an interview.
What I feel is this, it is not so much a situation of young or old, it is about attitude. Don't stress the brain thinking you can't compete, you can, but you need to express it. You may cost more, but you save them more, you show them you can adapt, learn, you show them you can mentor, yet be open to instruction. Today's world requires flexibility first and people's perception is that "older" folks are stuck in their ways ('Get off my lawn kid"). Show them you are not and it will go a long way to securing a job.
One thing I'll say to hiring IT managers, get off the "What language do you know" path. You want to hire a quality developer? Then don't quiz them about details of c# or ASP or PHP or Java or what ever the hell is the language of the day. Google negates the need to memorize details, the languages are just too damn complex these days to be an expert in everything. You want to know how they think, how they solve problems, how they design/create. Syntax can be taught/learned, but good critical thinking, that comes from experience. Code monkeys will cost you more in the long run then one or two creative minds. Creativity is ageless. The best shops are those with mixed teams.
Life is a great ride, the vehicle doesn't matter
I started on .net languages when I was 44. Now they are what I do all day long (Admittedly, .net makes things significantly easier than they used to.) I just bought an android with the specific intention of writing some real-estate apps.
Non-programming skill sets enhance your employability as well. These days, in addition to programming in .net, I design automated testing system frameworks and the VMWare virtual machine environments in which the system runs. One day, I'm coding. The next, I'm tearing down and rebuilding a server. After that, I'm developing and testing a virtual machine configuration for cloning and making sure the Oracle database is configured correctly. The day after that, I'm documenting some portion of the system and preparing a powerpoint presentation explaining the changes after doing the diagrams in Visio.
One of these days, I'll take a programming course. I promise.
So yes, you can learn, if you have the skill of self-teaching.
The only thing that might cause you a problem is physical. If you're older AND obese, have frequent insomnia, or chronically use medications with a cognitive hit (prescribed or not), you might as well find something else to do.
Please do not read this sig. Thank you.
I work with a bunch of developers in their 40s, some in their 50s, and all are willing to pickup new languages when appropriate. The problem is not your age. The problem is your attitude.
I am early 50s, coding for almost 40 years. Still employed but worried about the next job (taking a pay cut and/or competing against clueless but cheap weenies). The fact you went into PM tells me you went to the dark side. I don't generally see people come back from that. At least stay abreast of trends and development environments that have traction. Perhaps start focusing on Android. I feel safer having coding skills than management skills. In a downturn you need to retain the "doers" not the PMs. All our PMs were let go in the last round of layoffs. All us 40+ year old coders are still working. My friend retired from his programming job last year at the age of 79. Still had calls asking him to do some contract work.
I'm 36. I grew up on BASIC. Now I prefer C++. Two days ago someone asked me to write a web-app in PHP. I had never used it before, but I said "no problem". About 500 Google searches later, I'm a PHP expert and I'm just putting the finishing touches on my web-app. If you can't learn any more, you're not a programmer any more.
Just do what you like. If you like to learn a new language then go for it, regardless of your age.
Stop nagging.
Sorry I just had to say this.
should help you work your way through college. I suggest you go back to school and learn Naval Architecture, Marine biology, History or something totally different. For two reasons:
When it comes to programming you've seen it and done it, time to move on.
Nullius in verba
I'll be 61 in December. I've been a developer since 74. I've learned and been paid for producing code in Cobol, Assembly, C++, Java, and C#, HTML, javascript, servlets, ejbs, MySQL, and Oracle working on Windows and Linux.
First off let me address the whole "whoa is me" b.s. others have responded to your post with. Learn a new language and write code. Lot's of code. You're never to old, if you really want to do it. These people who write that they've been unemployed for years and can't find a job haven't exerted enough concentrated time and energy developing DEMONSTRATIVE skills that organizations need and will pay for. It's that simple.
As to your specific needs I would advise starting to work hard learning an OO language. Java or dot.net/C# is your best bet in the current market, as a cursory examination of the TIOBE website and doing a language search on Dice will show. Java is free.
Also study, not just read, study Design Patterns by Gama et. al.
This is assuming you want to be mainly a server side developer. After these steps you'll need to learn the server technologies.
Tomcat is free and you can install it and learn servlets. This is a start.
If you want to do web development you'll need at a minimum HTML, JavaScript, and CSS.
Staying gainfully employed is your responsibiliy and no one else's. You either do what's necessary to succeed or not. It's your choice.
It's not easy. It takes strong commitment and desire and continual hard work. But so does anything worthwhile in life.
Good Luck
I once set out to learn Java after years with a "legacy" stack. What I found is that the Java libraries made no sense to me such that I couldn't figure out how to use them in a timely matter for things that were a sinch in other languages.
It's like you have to connect a Flig to a Snerg, and the Snerg to the FloogManager before even simple things worked, and none if it made logical sense to me. I have to know "why" to think about how to do things; it's just the way I am wired. Until "why" clicks in , I'm a fish out of water.
The libraries seemed like arbitrary, random bureaucracies created purely for job security of Java programmers and builders. Maybe there is a rhyme or reason for the whacky maze, but I'd probably die of a heart attack before discovering it. I abandoned Java like the plague and focused on scripting languages instead, but they pay less. Java 1, me 0.
Table-ized A.I.
You're never too old to learn a new [programming] language. You know the fundamentals of development, which don't change between languages. But don't waste your time with Java. Learn C and C++ if you don't already know them. Any company doing useful work can use programmers who are proficient at C++.
That is all.
I'm 60 years old and... what was the question again? Damn! I'm pretty sure I had a great reply.
I'd say that since you aren't dead yet (no check for zombie) then the very notion of 'too late' goes right the hell out the window. Find a project that interests you; implement it in the 'new' language and see what happens. If you and the language don't 'click', pick another language. Lots of languages, lots of projects---shouldn't be a problem; good luck :)
I was similar to you then at 40 decided to learn genetics (genetics is just programming right? :) . Turns out high-end biology is full of enormous data analysis and management problems, and now I mostly do coding and stuff, with a little project management thrown in, but in a more varied and interesting domain than billing systems I specialised in before. I picked up perl, bits of python, java, javascript along the way, and moved from the propriatory monolith databases to the open ones. You have a wealth of valuable skills already, and are not too old to learn something new. Be prepared to do it for less income, If money is your main motivator, stay where you are but switch to managing something bigger in a different organisation, that seems to be the best way to keep fresh and keep working up the ladder if you don't want to start something completely new.
Korma: Good
programmers.stackexchange.com
I'm in my mid 50s. Not all that long ago, I had to look for a new job when the corruption of upper management at my old job finally exploded (and, as usual, the people who do the work suffered and the management got off scot-free).
Yes, I encountered age discrimination and all the "you old people want too much money and can't learn anything" from snot-nosed Gen-X brats.
Yet, in less than 3 months, I had a new job with better pay and working conditions. Since then, I've learned two new (to me) programming languages in the course of our projects and wrote a substantial amount of code in those languages. Not only do we use that code in our product, but it's also used as examples to train new employees on "how to do things properly".
I'm not a code monkey. I write good, efficient code designed for other people to understand, maintain, and extend. I help other people learn not to be code monkeys, and instead be software engineers.
I've developed a reputation for finishing my tasks ahead of schedule and being relentless in hunting down and fixing bugs. I've discovered numerous critical bugs and got them fixed before our customers found out. I am often asked to help out a teammate (all much younger) who is having trouble on a task.
Nor am in the way of any teammate's advancement. I don't climb the corporate ladder any more. I steady it for others now. I'm history in 5 to 10 years.
So much for an "old man who wants too much money and can't learn anything."
To learn one computer language isn't just learning the language, but learning how to learn languages; each additional one you pick up should be that much easier. It's not effortless, but it's doable. FURTHER; while less popular languages don't have as much of a calling, they often do end up being legacy code that some employers becoming increasingly more desperate to have maintained, adjusted, et cetera... so maintaining a working relationship with an 'old' language may make you a rare commodity later (and thus worth more.) It's something to keep in mind, if not bet the bank on.
I suggest you to study python because I like it and believe in me this is not only web language and C# because it is widely used.
Sounds like you have become too afraid to take risks, not that you're too old to learn something. If you really believe that this is the worst economy in our lifetime (which it is) your chance of finding a stable job with a pension is essentially equivalent to the chance that you can start a company, raise funds and successfully innovate with your own ideas (and I know which one I'd be more fulfilled in doing). Coding is a skill that is basically free to learn, something that 15 year-olds all across the country teach themselves and within a few years are as proficient as older guys are. Your real marketable skills, hopefully, come from your ability to recognize needs in the workplace and understand the scope of the solutions required to solve them. What sets you apart from young guys is perspective. If you don't leverage your experience, you might as well be a 15 year old coder and will get paid like it.
I strongly believe that for this country to get back on track our generation needs to not be like the baby boomers and stop expecting things. Go out there and earn it. Stop expecting other people to give you money for sitting in a cubicle. Go online, learn how to write apps and compete in the most free, accessible marketplace ever created for coders. Remember shareware? Not such a good model. If your app doesn't sell well, learn how to better market it, or hire someone to spiff up the graphics. If it still doesn't sell, do better market research and write a new one. Angry Birds wasn't a random development - they identified trends and engineered the game.
Good luck, sack up, and listen to Alex Jones at www.infowars.com for real perspective on this economy and where we are headed.
Ron Paul 2012!
and you've never heard of such men as Richard Bong or David McCampbell. Given that, your assertions about the Japanese are also suspect.
Hail Eris, full of mischief...
E pluribus sanguinem
I love JBOSS with redhat. Using an MVC style development you can utilize JSP, Java, Rich Faces, and CSS. The best part...it's open source with a great community for support
If there is no God then free will is an illusion.
If you can tie the story together and make it intersting for non-CS types I'd buy it. (think Richard Marcinco "Red Cell" style of writing). Each chapter could be something you learned from situations at company...
For the sake of learning the languages, given your background, in your position I would pick up C++, Java, and C# in that order. (That path will provide the quickest learning curve given your experience.) After or concurrent to those, you should also learn PHP. The basics are not that much different from C or Basic, and the object oriented extensions are most similar to C++ and Java. The reason I suggest PHP is that it is not just useful as a web programming language, but is also very useful in backend scripting when used in console mode. However, for the sake of career advancement, continuing with Project Management is the best route to take. You might enjoy a position as a development team manager, where you can still take an active role in programming, for the sake of constructing overall architecture, and then delegate building specific modules to the rest of your team.
I started with FORTRAN and Autocoder, and have continued to learn languages over the years. Now most new languages are trivial to pick up (tho I get a lot of syntax errors that need correcting). Algorithms carry between languages well.
There are some languages that were exceptions. Prolog, APL, Lisp, and unlambda all required learning new ways of thinking that had some value later on. It was amusing to see roots from some of those in other languages like lisp as the basis of Tandem's TACL scripting.
As other posters have mentioned, sharing your experience pays better than writing code for a living. That works better if you know the language in use. You can guide, debug, and supply core algorithms if you don't want the headaches of management per se. Management usually pays better though, if you need the money. Code as a hobby, get your money elsewhere. You won't find anyone to pay you to write unlambda code;-)
All these new languages will still understand you, give or take bit of punctuation.
Korma: Good
You're 39? You're just getting started. You have another 30 years of employment to go. Don't quit now.
When planning your future, you should ask yourself two questions: 1) What kind of job do I want? And 2) what kind of work is plausible for me, given the state of the industry, my age, my skills, my location... and most of all,
my attitude. Do I still want to kick ass or not? If not, that's your real problem.
Professionally, learning yet another programming language won't mean much unless you can also show meaningful experience using the language to build something of value.
More importantly, it's not proficiency in a language that will open doors at your age. It's the ability to deliver solutions -- on time, on budget, that work. If you've been a 'principal scientist', or 'software architect', or 'lead programmer', then you can turn your experience into an asset. These roles are out of reach for kids right out of school. But if you can talk a good game, show that you know how to design, coordinate, and integrate the many components needed to deliver a new software service to your employer (or a client company), then you're a rare asset and you possess skills that are far more valuable than being conversant in yet another programming language.
BTW, I'm 53 and since I was your age, I've developed proficiency in several languages (high performance computing, image processing, matlab, R, perl, java, C*). But what I value more (and I think future employers will too) is 1) my ability to take a leadership role in driving a project to a successful conclusion. And 2), I'm willing and able to learn. I've completed several advanced courses part-time (3 grad CS/EE classes in the past 3 years). In doing this, I've shown that I can adapt to changes in the workplace, and reinvent myself as the work changed.
Strategically, I'd suggest that you adopt a 'leader/innovator' attitude in your current workplace and in future interviews. If you look like someone with ability, a 'can do' attitude, and impress others as being engaged, inventive, and innovative, you can break down the negative stereotypes that often beset older techies. At least that's worked for me so far.
A final word of advice. Do NOT express your opinion (*especially* negative ones) on any technology or business philosophy, and don't disparage the quality of your technical skills. DO emphasize that you have learned how to get things done, and have a track record of doing just that, ideally by understanding the business, anticipating needs, inventing and delivering solutions, ideally by leading others.
Good luck.
... and the probability exists (because of your nickname), know that the other day a 104-year old woman (in the Northeast corner) set out to learn to read.
If you happen to live as much, you didn't reach half of your lifetime. Ok, things might go wrong, but someone got to live that much to fuel the statistics...
I would keep learning. I've been in the Industry about 20 years. I started with Cobol, then RPG, then C, then C++, then Java, and now I'm doing some Groovy and Ruby and lots of SQL. Also, Its funny, I still work a lot with C and there is still a lot of C code out there.
In my humble opinion, you would probably get the best results learning Java, Groovy, and Ruby. And of course keep your SQL skills strong.
I would also stay away from PM work. I have done some Project Management and some Business Analysis. I hardly ever get recruiters asking me about PM jobs or Business Analyst jobs.
On the other hand, regardless of what anyone tells me about outsourcing, etc, recruiters still call me and email me about coding jobs all the time. I'm a US Citizen, 40 something years old, and I haven't been out of work more than 2 weeks in 20 years by staying technical and coding.
Good luck...
At this point in your career you know enough about PROGRAMMING to mentor the next generation. No matter what language a team is using, there are best practices that should be followed. Developing software involves a lot more than just writing code. Companies need people who have been through the entire development life cycle to mentor those who haven't. Make the move into management and help the next generation. Extricate yourself from the minutiae of the code itself and focus on everything else that goes into developing software.
I am at a similar point in my career, although I am a sysadmin. I'm getting tired of keeping up with having to learn new interfaces and new tools. The basics are all the same. Keep the systems online, keep them backed up, make sure they are redundant, keep the data safe, etc. I've done the work for the last fifteen years and I understand it well enough to mentor people who are doing the grunt work, hacking at the configs, racking the gear, etc.
Oh wait...
I've been product managing and architecting for a years and now I'm out of work at age 52 with no obvious prospects for re-employment. I decided the developers were always having more fun than the managers. So I took my first course in c++ last month at a local community college (2nd quarter CS.... objects, linked lists, pointers, etc.). It was hard, but not impossible.
I have the same questions. Objectively, the idea of becoming a developer in your 50s is ridiculous, absurd, silly. But here's another thing that's even more ridiculous. - Getting up in the morning and having to do things that you don't give a damn about. So with my unemployment checks and savings I'm back to school to see how far I can go in the art of coding.
Will this enable me to support my family? I have serious doubts about it. On the other hand, it's not like there are other options falling out of the trees. It will take a least a year or two before I can even walk in the door and say "Hey I'm an old guy with some new skills... (and a lot of experience around software development)... what terms are you willing to hire me on?" If I do this thing, I'll do it the honest way, not pretending to be a 20 year old developer, and not asking for the salary of the experienced 50 year old project manager that I am.
Will it work? Will anyone bite? Hell if I know. But I do like playing with code, so I'm taking baby steps down that road and we'll see where it leads.
I'm a hiring manager. Many, many times I have hired people because they are smart, despite the fact that they have no experience in the particular programming language in use at my company. For the right people, learning a new language is easy.
There are many things to consider here, OS, Language, Environment, UI, Hardware - all of these things are important to a successful developer, and the choice about which to focus on can be intimidating.
I like Linux as a hosting platform over Windows, while I've architected solutions on both platforms, I've had greater success and stability overall with Linux servers.
For Linux hosting, the main web technologies are Java, PHP and Python. Of those three, PHP is (by far) the most prevalent.
I'll take some time to run down some pros/cons of each language and describe some of the most popular frameworks for each.
Java:
This is the mainstay of enterprise development, for web development the most popular and current platform is called Spring. Struts is also popular, and many folks use a combination of Struts and Spring (though this is becoming less common as people migrate more towards 100% Spring based). Java runs under a servelet container, there are several of these available (both commercial and free) but many people chose to just go with the Tomcat servelet container from the Apache project. These frameworks are MVC (Model-View-Controller) frameworks, which is a technological abstraction which can be a useful paradigm for larger applications.
Pros: Java is great for enterprise development where you have "waterfall" SDLC and strict requirements. It's is great when you need rigid B2B interfaces/services and critical, formally modeled infrastructure. There is also a massive developer pool available for Java development.
Cons: The language is becoming outdated, as both Sun and now Oracle have failed to effectively update it. Spring makes Java web development possible, but it is not nearly as capable as some other frameworks. Time to market is slower, as Java requires much more code and "plumbing" to get up and running. Java/Spring aren't as flexible as some other technologies, and don't lend themselves as well to rapid, agile, iterative development.
PHP:
PHP can be considered the "grandfather" of the internet. It was the first very popular server-side language after the CGI days, and to date, most web sites on the internet are still running PHP. While early versions of PHP suffered from major security concerns, this is no longer the case, and PHP has evolved into a first class language with very moderns features such as OOP and Functional (map/reduce/inline anonymous fuctions/closures/etc...) features. There are several great frameworks available for PHP, two of the most popular are CakePHP and Symfony (yes, the spelling is correct). PHP apps can have great performance, I've developed some very large and demanding high volume sites with PHP, and they've handled the load with no problems.
Pros: Great language, easy to deploy, reasonable developer pool, good framework availability, dynamic language that lends itself well to agile/iterative/flexible development. Great library support, probably better than any other web language due to its maturity.
Cons: If not designed properly PHP applications can become a huge mess. The MVC frameworks available for PHP are good, but they aren't the best of the options I've seen. PHP works great with MySQL (LAMP is very common) but is not as tightly integrated with other backends. Due to the architecture of PHP, the framework overhead can be a significant performance bottleneck. This can be mitigated by effective use of FastCGI or WSGI servers, but then you're moving away from the simplicity of mod_php in apache, and that's really where PHP shines (simplicity of deployment). Overall, I generally recommend PHP for smaller applications that need a quick turnaround, but I generally look elsewhere for larger, more complex applications. While the PHP community is still vibrant, many people are migrating over to Python.
Python:
Python is a very popular general purpose language, but has only really become popular for web development fairly recently (last five years).
Drinking habits can be dangerous. You can choke on the cloth and the nuns will wonder where their clothes are.
I'm 27, and I just started learning Python (via http://learnpythonthehardway.org/book/). It took me 2 days to get the feel of it. So, I'd say you're never too old. If you know the basic concepts of programming (which you obviously do) then you can pick up a new language's syntax & nuances pretty quick.
Your are too old, but only because you have decided to label yourself that way. I'm 46. I've learned Scala this year and will be learning ruby this month. I mainly use Java. You are only as old as you feel. I am a much more productive coder than when I was younger, not because I code all night hyped up on red bull like the kids do, but because I use my experience to help this kids be more productive. I mentor newer developers, they do some work for me, and gratefully benefit from my knowledge and skills. Its a win win.
Good lord. I'm 41 and I feel like I learn a new language every other week. If you're too old at "almost 40" then *you're doing it wrong.*
Effin excellent answer. Isn't it depressing. Go for the dough! ...but turn your garage into a hobby shop with old chipsets and show the grandkiddies how it's done. (Like mine did with ham radio)
Age is not important. The fact that you have to ask this question puts you in the old dog category. Your experience with other languages ought to give you a head start in learning new languages, and your knowledge of programming paradigms should carry over immediately. Somebody with your skill shouldn't be asking such a question, but just doing it.
C++ and Qt4, and used them for the next five years to program in-house client-server applications for the state agency I worked for. Qt4 was used to replace Visual Fox Pro 5 apps, which I had learned to use several years before, at 56. The year before I retired I picked up Oracle's APEX and programmed a web based payroll package for that state agency. Since I began programming professionally 40 years ago, beginning with Fortran IV and COBAL, I have learned over a dozen languages and RAD tools. All of them were fun to learn and to use, except for APEX, which is like programming with a mental straight-jacket on, because it requires that you bend your problem to fit the tool in ways no previous tool I have used ever did.
Of all those languages my favorite is FORTH.
Running with Linux for over 20 years!
The real question isn't if you are too old to learn a new programming language, but are you to "set in your ways" ( programmers of all ages have this problem ) to learn to think in a new way?
Anyone can learn new terms and new APIs, but many refuse -or- miss learning to think in new ways.
I've met plenty of people older than you who got a book or went to a "cram until your drop" corporate training course to pick up Java.
They learned APIs, but they didn't learn how to think in OO or even in terms of modularization.
The results is a lot crappy code where you get JSPs with a solid wall of code or functions that go on for pages.
If you learn an OO language, make sure you learn AND APPLY the OO philosophy.
Good luck, IMHO experience counts in programming and as an older person you have a lot more to offer than some young dude without experience, sloppy habits and is inexperienced enough to think s/he is hot shit on a stick.
For most people anyway.
However, if you have to ask - then yes no matter what your actual age is you are too old.
Yes
"You can hire two 25 year old for your rate, but are you twice at productive?"
As an almost-25-year-old, I'm learning to appreciate what people can learn in decades of programming. Some of my professors are terrible, but some have a lot of depth of understanding of things like C and C++ which would be extremely valuable in a real project. You'll be many years beyond making a lot of the classic, simple mistakes, and you'll at least be at the point where you'll see flaws in a design (from experience seeing similar designs fail) that others won't.
You won't be twice as productive in the measurable ways, like SLOC or issues closed per day or whatever, but those were never really measuring anything useful anyway. The more meaningful things are hard to measure -- how often does your code produce obscure bugs which will be discovered months later and take days to fix? How often will you design something in a way which is so rigid you practically need a rewrite to make a needed change -- or so much the other way that you spend more time writing the "flexible" version than it'd take to write several versions of the hardcoded version? Finding that balance is tricky.
On top of all that, you also don't have the additional communication overhead of those two 25 year olds.
The problem is, how do you actually sell that? How many companies actually understand that? It seems like ageism goes the other way -- I'm more likely to get a job than you simply because of my age, even if we were asking the same price. And that sucks -- I've definitely been on teams where we needed experience.
So, if the choice is between "have no income at all" and "do web development at the rates of an inexperienced programmer", I'll take the second one... However, if the choice is between "have a well paid job which I don't really like but allows me to live life comfortably" and "do web development, which I like, but barely be able to pull my family through", I know what I choose. It won't be the web development.
I think the idea here is that web development is supposedly easy enough that anyone can pick it up, whereas, say, mainframe assembly or COBOL is obscure enough that you might be hired for having the skill alone. The idea is that if you have the experience with a particular legacy system, that's worth far more than trying to train a 25-year-old, and they'll all be looking for fun stuff like web development.
Then again, I don't know if those pay better, and I do find the attitude a bit frustrating -- old programmers are only useful for old (legacy) systems? I imagine the demand might be higher there, but we need you in web development, too.
Don't thank God, thank a doctor!
The question I think isn't whether you can or can't (or should or shouldn't) learn new programming languages. Bottom line, as a professional software engineer, you should be spending significant non-billable time on expanding your skills anyway. The real question here is related to how you manage your career as you get older.
Can you be a programmer as you get older? Absolutely you can. But you can't remain an entry-level to mid-level developer. If you're going to continue to be a developer, you'll need to manage your career just as everybody else does. You need to pay attention to the market, and keep your skills aligned - not just development skills, but you need to be able to put your rich experience to work for you and your client or employer. You must network and attend conferences. You need to think about how you present yourself - nobody will be impressed with by a schlub wearing a clip on tie with a short-sleeve shirt. Your field has specific expectations as to appearance, whether admitted or not, and you need to align with them at the level you expect to work. Software development is no different.
Why can't you work as a mid-level dev if you ask for a mid-level salary? I mean, you're qualified, right? Well, that's true, but keep in mind that the hiring company is investing the same $$ into you as they would a younger employee, but the younger employee is going to be regarded as a better investment because of an inaccurate but widely held perception that they will stick around longer. Furthermore, if you're not performing at a senior level when as you age, people will unfairly wonder why. These two perceptions give you a distinct disadvantage.
So yes, you should be actively learning no programming languages and ways of doing things. And you need to be doing lots of other stuff too.
Just some thoughts, YMMV.
I'm not bitter and I really don't want to rub it in, but...
I stayed in programming until I retired a couple of months ago. Fortunately I 'm a habitual saver and did OK even though my investment choices weren't stellar. Also, I got lucky twenty years ago and was hired by a company that did extremely well and was generous with employee stock options during the 90's. A few years ago I was working for an egotistical manager who's goal was to move up the corporate ladder. I was pissed and ready to quit. So, rather irrationally I went down the hall to the investor relations people and said "Sell all my stock." I was fully prepared to quit at the end of the month when, much to my surprise, my manager was fired! But when the check arrived for the stock sale I realized that if I lost my job I'd might have to find another eventually, but had the resources to take my time.
It was a great day. From then on I was a manager's worst nightmare. Not that I didn't do good work, but I realized that I was in a rather secure position in the company, having essential historical knowledge of corporate products, and was no longer afraid of being laid off or outright fired. Stay late every night for weeks to meet an unreasonable deadline set by managers trying to look good? Nope, poor planning on your part does not create an emergency for me. Sweat small stuff and management shuffles? Nope! Worry about taking a day off now and then? Gee, Boss, I've got all this personal time built up and they just put a cap on it, so now I have to take every Friday off just to stay below the cap at the rate I'm accumulating it. I hate that the schedule didn't allow for that but..you know...it's corporate policy that I have to use my time. Can you get the policy changed? Maybe I should just take a few weeks off and spend down that time; would that be better for you?
Good luck to you all. I welcome my new Social Security overlords.
Settle down, Arlo.
I've been learning computer languages since 1961. I definitely gets harder. The first time I noticed it I was in my late 50's and was learning Web develeopment (SQL Server, ADO, html, Javascript). When I was younger I could read a manual, remember it, and get to work. With the Web stuff I was working with a circle of books on the floor around my chair. Now I don't use books any more, just Google. Part of the problem is getting older and not remembering details so well. Part of the problem is that there is SO much more to remember. Fortran had a dozen or so constructs to learn. Modern Web systems have thousands. My opinion is that modern programming systems would be unworkable without Google. Even the young people couldn't remember it all. Would I hesitate to learn a new language now? Probably not. I just did some work with Camel for the first time; it was slow but I got through it. So, all the advice about career paths is probably good, but if you like to code, I'd say you can still do it.
I'm 49 and was a "programmer/analyst" for 10 years, went into project management (hated it) for 5 years, and have also worked as a consultant..which usually meant I was a contract programmer. However, there were those rare consulting assignments where the client was actually looking to "consult" with me about what they wanted to do and how to do it. Those were the best and helped me make the decision to GET OUT OF IT entirely. I didn't get a lot of joy out of the jobs that we consider to be IT. Who says you have to be in IT in order to program? I love to design systems and to code. Now I'm in Marketing and I work with customers to understand their needs/wants and create a solution/product for them. On the "IT" side, I'll design a db schema, write use cases, and prototype some UX elements. That's the fun part anyway. IT can use some of what I do directly and some of it is "directional". I've learned CSS, Javascript/HTML, XML/XSLT, JSON, Ajax, etc. over the last few years. I'm currently learning Objective-C and the Apple API's so I can jump on that rocket.
If a company sees you as "equivalent" to what they can get out of a 25 year old, then they are not valuing your skills appropriately and that is your fault. Management, as long as they see you as a "programmer", will consider you a commodity and you'll be at risk to cheaper resources. As long as you consider yourself a "programmer", you leave yourself at risk. Show your company you bring value to them beyond knowing how to code. Have some ideas. Sell yourself and your ideas.
As long as you take some joy from learning a new coding language and like doing things with it.
Read radical news here
Good programmers are rare enough that good programmers at any age can make good money.
Are you familiar with the phrase Turing Tarpit?
Language X and Y both being Turing Complete doesn't mean shit when it comes to practical use and the level of abstraction you can achieve. For example, I'm about 10-100x more productive in Haskell than I am in Java simply because I'm working at a much higher level of abstraction.
HAND.
Here is why:
A Programming language is just that. It is a way to express a concept so that a computer can understand and interpret. But when you are building enterprise level systems, the language is very insignificant. What is more important is the development frameworks that you can use. For example: If you are building a J2ee application, you most likely need to know, Spring & Hibernate. If you are on the frontend, you need to know javascript, html/css.
If you are in the .NET world, you may need to know LINQ, WCF etc.
I think syntax is something that you can learn in couple of days, but these other things are the ones that make it complex. Today's applications are lot more complex than in the world of Client-Server applications.
Kill yourself. Kill yourself now. If you aren't under 40, golden brown, and work for peanuts, then nobody wants you.
15 years ago I left development, to take an offer to become an (Oracle) DBA. Intelligent employers, while hard to find, recognize that DBA's with dev background bring a wealth of knowledge about what works and what doesn't. And the specialized skills of DBA's can demand a premium in the job market.
Walking away from development and into production-side database work was probably the best career move I've made in 30 years.
And there are still opportunities to get your hands dirty. I'm constantly creating Perl scripts for monitoring...coworker DBA's set up web pages...some DBA's do hardware configuration (servers, SANs)...
I've picked up several new languages in the last 15 years or so. It's amazing what still applies, for example, if you understand IMS databases then XPath is just a simple step away. C++, C#, Java and JavaScript can all trace their roots back to the original C of Unix fame. Why don't you download Microsoft's free Express editions of their development tools and play?
I developed with Delphi and Interbase for about ten years and then moved to C# and SQL Server for new development. The transition was not hard at all, as Object Pascal and C# are very similar.
As to project management vs development, one solution may be to give yourself a TINY non-critical piece of coding work to yourself for your project. I say tiny because I have worked on teams where the PM fancied himself a developer and gave himself critical chunks of the work, but he was so busy interfacing with higher-ups that he blew the same deadlines he complained to us about missing.
I think the above may satisfy the enjoyment of developing while keeping the age issues consistent with reality in the workforce. I don't like those facts either.
I don't know whether they've been jaded by the industry or their own failings, but here's my take:
I'm 46 now. I have pretty much run my own business for most of my career, so I've been able to pick and choose jobs based on my own personal desires and needs, rather than being forced to "take what I can get" from the "industry". I have pretty much "done it all", when it comes to various categories of IT, but I prefer programming the most, since I started out in it. I have a number of specialties that people depend on me for, and they are very happy with what I have done for them. I also am a Delphi/Pascal primary language developer, and I still do a lot of my development in that language. I also have developed in C/C++/C#, BASIC/VB, about 10 different kinds of Assembler, Java, and a number of scripting languages. Of those, I still prefer Delphi/Pascal. I've been learning Python and Ruby on an as-needed basis as well.
Being on my own all this time, the most important thing I have learned is how to learn, and to never stop learning something new. I figure I will be in the middle of learning something new when I keel over dead at the keyboard. I love IT and have done little else but study and work in this field.
In the last few years, I have been changing my career focus a bit from industrial and scientific projects over to entertainment. Even at this stage, I plan to develop some really fun games, leveraging my knowledge and experience from other areas as much as possible. I may never make anything that is a "hit", but that's not why I am doing it. I'm doing it because it is what I want to do, and where I want to be. I want to make something fun that *I* want to play; if someone else also likes it, then bonus!
At my age, I may not be the fastest coder in the world, and I have my share of personal demons (most of them not age-related) that I have to fight in order to get things done, but I would put my work product up against anyone's. I also know and accept that there will be age-related decline from here on out, but I don't care. I will keep doing my best until I can't do anything anymore (because I am dead). It is all I know how to do (well, anyway) and all I love to do, so that's what I will do.
Now, as for your questions:
"Should I try to learn web development (html, xhtml, css, php, python, ruby)? Should I learn Java and/or C#?"
If you want to do something in those languages, or are just curious, sure! Why not?
"Or am I too old to learn and work a new language?"
You're never simply "too old" to learn anything. It may take you longer, and you might not ever get as good at it as someone who cut their teeth on it when they were in their teens, but that won't stop you from being functionally literate enough in it to be useful.
One thing I should point out right now is that, by mastering one of the more complex "mainstream" languages, learning any other programming language is ten times easier, simply because there are few fundamental differences between programming languages besides syntax and API, and both of those are easy to pick up or just keep a "pocket" reference handy. After you have learned to become proficient in several modern/complex languages, you've pretty much been exposed to the gamut of paradigms across pretty much every language out there. Picking up new ones after that point is little more than learning a new paint coating technique; building the rest of the car is still pretty much the same -- engine, drive train, etc.
"Should I go back to PM work even if I do not like it that much?"
Well, my current situation doesn't lend well to this suggestion, since you're likely going to be working for someone else, rather than yourself, but my suggestion is to do the greatest combination of 1) what you like the most, and 2) what you feel you are best at doing for the people writing your paycheck. If those two are in conflict, my suggestion is to change the situation surrounding the latter, because you aren't likely to be able to change the former. In addition, doing something you hate just for a paycheck probably means that you won't do a very good job of it in the long run, and in that case, you aren't serving anyone's best interests, including especially your own.
-SS "Teach the ignorant, care for the dumb, and punish the stupid."
I've been professionally programming for just over 30 years. I love development and knew I wouldn't enjoy management or even project management. So, I refused to make the switch. (Not needing to earn more money certainly helped.) Five years ago I took a job at a university. Universities happily employ the same person for decades. Nobody gets a raise for laying people off. The school president still publicly apologies for laying off a handful of people when the economy crashed. Three years later and that pain is not forgotten. Universities are like still all companies were back when I started working.
Universities are way to expensive and hard times may await. Maybe I don't get pound out code for them for the next 15 years after all. If nothing else, I'm in an organization that really wants to be kind, do good, live up to some noble ideas and is the least attractive place in the world to ruthless people. Its an option that you should consider. We're even hiring.
Seriously, if you are asking the question, then you need to take a shovel and dig yourself a nice lil' hole and go for a dirt nap. I'm a practical idealist. Sounds like an oxymoron, I know, but yeah, I'm 45 yrs old and I keep learning new stuff everything. I'm a developer, an instructor and I do believe that the day I stop learning, the day I think I know enough, that's the day I should just kill myself. Do you like programming? do you like a challenge? That's what you should be asking yourself. You claim to have 25 yrs of experience, have you not learned anything yet? what's so freakin' challenging about a new programming language when you got all of the other ones under your belt? I have a basic, c, c++ and assembler background. You seem to have a similar one, with even more including cobol. What's out there that you wouldn't be able to conquer? So, it's not if you are too old, but rather, do you give a crap. If you do, go for it, it's always useful and it won't be a waste of time especially\ if it's a hot commodity to learn. Unless you are kinda mediocre as a programmer to begin with, but hey, that's a story between you and your previous projects/employer. And yeah, there are a lot of young ones out there in the market and they don't charge as much or work twice or three times the amount of hours to get it done. I laugh my ass off when I see that. Because for me, I can get the job done in half the time, and it's done right. Why? it's called experience. Every project I've ever done has been a lesson learned in trial and errors. Even in success, I learned that it could have been done better and basically applied this knowledge to my future projects. By now, having myself 20+ yrs of experience in the field, I've yet seen anything which doesn't relate in some ways to something I've done in the past. How you sell yourself is how you define the relevancy of you as a person, a resource and then skills you have to offer. Keeping with the current trends and lingo of the industry is all about learning, nothing different than learning a new programming language. So, do you give a crap? do this industry still make you excited? Those are the questions you need to ask and you are the only one to provide the answer. Cheers! Claude
I am older and more experienced than you are. The only thing that stops me from learning new languages every year is the fact that I am learning and doing other programming and application related stuff. New languages are not the only thing, it's new methodologies. Extreme Programming is well worth checking out, even if we are too old to say "Xtreme" and not make people laugh. Functional programming has a lot to say for it. Learning a new language because it's fun is the best reason. Look at other application areas, I completely switching application area (from system to scientific programming) at around your age. I mentor younger people, take on problems where I don't have a clue. Sometimes I fail. The great thing about software is that it moves fast, you can always be learning and adapting. Any week I don't both learning something new and discover 10 things I don't know is a bad week. Go for it, if one thing you try doesn't seem to be what you want, you still learned something, try something different. The only way I will not be learning a programming techniques and languages when I hit 85 is if I am dead or have Alzheimer's; in which case it will not matter.
"Basic, VB, C, FoxPro, Cobol, and Assembler, but the languages I used the most were Pascal and Delphi."
It's almost like you've gone out of your way to avoid every popular language (C being the one exception). You're in a more difficult position than most because you don't have much experience in any of the top languages employers are looking for (those being C++, C, Java, PHP, Perl, C#, Python according to most studies). How did you let this happen would be my first question. It seems hard to believe someone who takes their career seriously would manage to avoid experience with all the things employers want.
-Lod
Programming is not the major item on my position description but I do a lot of it, usually in spurts separated by programming inactivity. Last year my boss wanted me to learn Java since our contract engineer knew Java but not C/C++ so I've been sporadically attempting to learn it, and Eclipse, and ...
I've done pretty well at teaching it to my self using a couple of books, Google searches, and attempting small programs related to what I'm going to need to do when I get more proficient. It's harder than it was 20 years ago when I was 50.
I can't advise you that you should attempt the learning for your work, though, that's beyond me, but continual learning appears to keep the mind active longer. I can't remember where I read that.
Nate
As always, if you think you're too old to learn, you're right. But until then, learn Scala.
There's been a lot of good advice and interesting thoughts in this discussion.
Quick summary:
No, you sure as hell aren't too old to learn a new programming language. If you really want to get back in the coding game, pick something you'll both enjoy and be able to get work doing, and do it. But be aware of career choices you make and the consequences. You pays your money and takes your chances.
But one more thing...
I'm gonna pimp slap you for suggesting that late 30s is decrepit and aged. Logan's Run is fiction, youngster.
WALSTIB!
Buddy, I'm almost 42, and I feel like I'm just getting started...
If you think you are old at almost 40, you should find some professional help. Seriously.
As for your programming skills, what's exactly the problem with learning a new language?
With your experience, you should be able to pick up any new language in a few hours, especially if it's something like python or ruby.
As for what to learn now, I would say loud and clear: JAVASCRIPT.
Internet is the platform, and javascript is its language. Period.
You can choose some other language for the server side (python is my choice), but nowadays you can also use javascript there, so if you have to pick one, and only one language, it should be javascript.
And if you miss the beautiful, flexible, powerful and succinct syntax of more modern languages such as python or ruby, you can choose its CoffeeScript flavor.
Regarding C# and .NET: My advice is steer away from there... .NET is a death end. Microsoft is leaving its developers in the dust, now that it decided that Windows 8 will be all about HTML5 and javascript.
Silverlight developers are cutting their veins with a knife... All their hardly learned skills will get useless soon.
In few words: Choose open standards, concentrate in internet, learn its language (javascript) and, of course, try to learn html5 and css3.
Good luck and cheer up! You are just a kid... ;-)
Of course you're not too old to pick up new programming skills, and it's worth doing. The hard part is deciding on a specialty, then getting into it enough to be an expert. Six years ago when I was 48 I took a leap to specialize in Java, and started work on a series of extension courses. It's worked for me just fine, since I'm still in demand as a Java/Spring engineer who's allergic to being a manager. Now I'm still studying, learning Scala, Hadoop, and a touch of Python and Javascript. I do best in a structured learning environment with exercises, but they can be expensive. If you're self-motivated and have some projects to get into, you can get the skills cheaply now.
I think it is impossible to be absolutely unable to learn new things. But it is not so much about a language, it is usually about the experience with a particular platform (and the language(s) it typically uses). Learning Ruby won't immediately put you on par with anyone who did 2 years or Ruby development. And anyone faces this problem - not only older people. However, there is a perception that younger people learn faster and they become useful contributors to the projects. Sometimes this is true, sometimes it is not.
I think you have to decide for yourself which career path do you want to take. Being a manager, an architect, a team lead, a consultant, evangelist, generalist...Generally, I think the age kind of filters the software engineering crowd and separates the real specialists from others (who quickly become managers etc ;) ). And usually there are challenging and rewarding jobs for these real specialists out there - irregardless of their age.
I'm middle-aged and teaching myself Python. Pyhon rox! Python is hawt! I feel younger already.
"Crude and slow, clansman. Your attack was no better than that of a clumsy child."
http://www.youtube.com/view_play_list?p=EE0530175276C4A0
I hear they're teaching python now in this course. What guile!
Verbum caro factum est
I recently interviewed a programmer who was around 60. The average age of interviewers/candidates was about 36. This guy knew everything, but when we gave him problems he would take the wrong branch and stick to it, in spite of attempts to bring him back towards the solution. We felt he would start wrong and waste too much time before someone could correct his course.
If he had been able to shift gears like the other candidates, we would have hired him -- white hair, wrinkles, liver spots and all.
I'm a 48-year-old dev-turned-manager-turned-dev who started a C# career a year ago at a competitive wage thanks to someone who reported to me 15 years ago and to whom I now report.
I'm older than you. And still learning new languages and new electronics, these days I'm building robots. My neighbor down the street is old enough that when he was a teenager, he had a television *that* *he* *built* *himself* *from* *scratch* because that is the only way you could get a television. There was one station in Philadelphia that he could watch that broadcasted 2 1/2 hours a week. Later, he was one of the designers of the ENIAC. Go to his house today, and you will find a Windows box, a Mac, and a Linux box running Ubuntu. He is still hacking -- this is a guy who was already a working engineer when WW II broke out.
I am shocked that you are asking the question. You have an attitude problem, not an age problem. I hope they pull the plug on my life support before I ever ask if I am too old to learn something new.
It's hard to decide what you want to do, both have their pro's and con's.
But to answer your question on programming languages, a loop is a loop, a conditional statement is a conditional statement and that's never going to change. All the other stuff is syntactical stuff which you can easy look up on the web. If you know that there is function or syntax in one language, most often, you can find in another language. It may be hard at first but you write a program one line at a time.
If you have been proficient in at least 3 programming languages, you are never too old to learn another one. You already know how languages are the same and how they differ.
I started with Fortran II, Fortran IV, and the original BASIC. At the same time, I learned assembly languages for the IBM 7090/7094 and the IBM 1401. (That was in the early 1960s, before Noah and the Flood.) Later, I learned JOVIAL 4 and then REXX. In my 50s, I taught myself UNIX (both C and Korn). When I finally bought myself a PC (at age 55 after some 33 years as a programmer and software test engineer), I taught myself DOS, how to create Word and Excel macros, and how to create Web pages with hand-coded HTML and CSS. I still do DOS scripts for Windows XP; and I now have well over 300 Web pages on my site, some of which use UNIX scripts as server-side includes.
The only languages in which I had formal classes were COBOL and Pascal. I used COBOL for a few months, but that was a project to convert a legacy main-frame system in COBOL into a client-server system in C++. I never used Pascal.
You heard it here first - okay, early...
oh noooo ...Almost 40.. I'm 41 and I pretty much use a completely different technology stack than I did 3 years ago. I switched from down in the bones Embedded real time to the goulash of frameworks that in Java back end coding. :)\
Almost 40 is not even close.
You're an idiot for calling assembly "assembler".
Too old to learn something new?
Not really. At age 71 and retired several years now, I still try to keep up with changes in the IT field. I run several different Linux variations in a virtual machine, and keep a current Microsoft Visual Studio Express installation on another system. And just for the hell of it, I created and submitted an app for Windows Phone 7.
Having too much fun outdoors during the summer, but will try to dream up something new to submit this winter.
If I hire someone who costs 2x what a 25 year old costs, they should be bringing something to the table that is worth it. If someone is telling you that you're too expensive you are probably applying for the wrong job. They aren't going to pay you senior pay to do a junior job.
IMO, most professional programmers today should be familiar with something like C#, Java, or some of the other modern languages like Ruby or Python. It really depends on the kinds of things you'd think you're going to write. Even if you don't end up using these languages in your day-to-day work; concepts from modern languages are creeping back into older languages. C# and Java arrive with excellent garbage collection; and then "smart pointers" start showing up in C++. Likewise, C# arrives "foreach," then an equivalent shows up in Java and C++.
No, I will not work for your startup
and in the last couple of months I learnt how to program GPUs with CUDA. And had to learn C first in order to do that. I didn't find it any more difficult than when I was younger. I do have to look stuff up when I switch between R and python etc but I think thats what happens when you know a lot of languages. Also, looking stuff up doesn't slow you down that much. I'm in a job where I'm forced to learn things all the time and I think I'm just as capable as learning new things as I ever was. My advice would be to go for it and just leave the negative thinking behind. Age isn't a problem - its the negative preconceptions that are the problem.
I enjoyed programming too much to take care of my body, so started getting carpal tunnel and neck issues. So I moved to product management. At our company, that includes a significant amount of technical involvement, both the end users' physics/chemistry/engineering technicalities, and our software's algorithmic/data model/hardware technicalities. Tying the two areas together and seeing the plan executed is satisfying. My winning personality (non-bad attitude) was important in getting the position. I miss coding regularly to some extent, but don't miss the real low-level parts. I don't need to ever type another iteration loop, for example.
Ok full disclaimer, I'll turn 33 this weekend and despite all the trappings of adulthood (house, husband, kid, 11-year career), I hardly feel old and am constantly learning new things (including programming languages, even though I'm not a professional developer). But if you're really concerned that late 30's is way worse or something, consider this.
My dad died several years ago and left my mom with no income. His small business supported our household and for the previous few decades she had helped him run that business. Due to various boring details I won't get into, she had to sell the business when he died, and was left with no job and no marketable skills. She was 49.
She spent the next few years trying her hand at various things before settling into her current job. In the years between 49 and 60 (her current age), she learned: how to clean a house professionally (totally different than cleaning your own house), how to provide technical support answers for model-making tools and equipment (meaning she had to learn how they all worked), office management for two completely different industries, and finally library science. She is now head of circulation at her library and poised to potentially become director of the library someday.
So, age has nothing to do with it. Your brain is completely capable of learning new things at any age - in fact, constant learning can help stave off dementia when you actually do get old. But even if age had something to do with it, you are clearly not old. In other posts I've recommended various career moves instead of going back to programming, but if your actual question is "can I learn a new language despite my age", the answer is of course you can.
Don't use your age as an excuse. I'm old enough to be your father and I picked up PL/SQL this decade. Stop making excuses, get off your ass, and hop to it. Decide what type of development you want to do, and then pick the most popular language in that field and LEARN it.
And get off my lawn.
Grumble.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
A good programmer can be good in any language.
However the same is not true for someone who just knows a language - that doesn't mean he can be a good programmer in another language.
So, for instance, you might consider yourself to have mastered the English language. Does that mean you are a good poet? However a good poet could probably write good poetry in any language he chooses to learn.
Of course, this is all irrelevant because at 40 (and I'm right there with you) you need to be thinking about some kind of management, or being an entrepreneur or something. Just being a great programmer is probably not going to cut it much longer.
-- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
I'm 63. Since 1978, my primary language has been C or C++. In the last four years, I've learned (well enough to write at least one application in the language that saw distribution) Python and Java. If you're not totally brain-damaged from being a manager, you should be able to pick up a new language -- especially if you have to.
You know, I first got started programming when I happened upon a left hand basic cartridge with an Atari 400 for $5 at a garage sale. It came with an attachable floppy disk drive that was DOA. Countless hours would be spent with a small black and white TV with me writing procedures. Should the power turn off, all that work was lost.
... and I would not automatically assume that my four year degree at the University of Minnesota would make me a better programmer than yourself or anyone who taught themselves to code. But the important point of this is that when I interview (and I've held interviews for programmers to come onto my team many times) the interviewer is looking for you to prove that you will be a self motivated asset to the team. If you can put MIT or some prestigious school, they often lower their required threshold of proof. If you put U of MN there is still proof required -- after all there are some ~50k students at the U of MN and as such it would be entirely possible for some idiot to be herded through with the other cattle. So they just need to make sure I am not this idiot -- or at least not in the area they need me for. Now, when you have institution to back up your claim of skills, the proof requirement quickly becomes insurmountable.
Despite growing up below the poverty line working on farms, I was able to go to college with enough grants based on need. This is where our paths diverge
So I will issue you a challenge and I will target the Ruby language and Rails framework. This probably isn't the best option for a job seeker (I think some Java with maybe Spring Framework would be better suited for a position) but this could result in proof. If you want reading material for any of these steps, I recommend the Pragmatic Programmer series on Ruby and Ruby on Rails (used it is quite cheap but here is a free alternative).
Step One: Learn Ruby. Ruby is a functional language that is very simple and easy to learn but difficult to completely master. The flexibility of the language seems to continually leave me with more and more options at my disposal. From mixins to domain specific languages, it just keeps on giving. I'm guessing with your background you're going to notice that some things in Ruby are slow. This is okay. As computers have gotten beefier, programmers have sacrificed performance and (to a large degree) memory in order to make code easier to maintain and write.
Step Two: Learn Rails. Rails is a very extensive framework that is again easy to learn. That tutorial should show you how to master concepts like quickly creating a CRUD (Create, Read, Update, Delete) application for a blog or recipes (I forget). From here you have to use your imagination. Make something that is CRUD or some mutation of CRUD to demonstrate that you know how to utilize and extend this concept. You might use census data and experiment with new UI toys like Processing or HTML5's Canvas element. I think if you have access to some mildly interesting data that building a site you'd like to share would be a great idea (even if it is just in CRUD format). But get it to a state where you're proud of it.
Step Three: Github. Put your source on Github.
Step Four: Host your project on Heroku. You might buy a domain name if you're open to $12/year. I don't know how far you want to take this part. But get it so that people can access it.
Now once you've iterated over that a bunch
My work here is dung.
It takes no more than 2 weeks to learn the syntax of a new language, and no more than a couple of months to get pretty proficient with it if you are actually using it for anything more than a toy project. It's the rare project that doesn't require a developer to learn a new language or framework if it does anything interesting. I'm 39 and have no trouble picking up new skills. It's simply a matter of implementing something of significance with that technology - either self-assigned purely for tutorial reasons or as part of the work project. Frankly, most coding is pretty boring, but learning new technologies, and building prototypes to determine whether something works as anticipated in that new technology, is where most of the fun lies. The rest of my job satisfaction comes from mentoring more junior developers and passing along my 2 decades of accumulated experience and knowledge. The day to day of writing a function to parse this or output that is much better left to far more junior engineers. Sure, you could do it faster and probably write cleaner code as well, but it is still wasteful to have 20 years of experience devoted to such tasks. The experienced devs should be dealing with higher level architecture, systems, and prototyping concepts that can then be fleshed out by the guys who are fresh out of school. 20 years into a career as a developer, you should also have DBA level knowledge of at least one relational DBMS, be as good a sysadmin as anyone that is getting paid to do the job, be a competent IP network architect, and be able to write excellent code in every language in widespread use today. If you can't make those claims, then you offer little to justify the expense of hiring so much experience. With those skills in your toolbox, you are positioned to be a Systems or software architect and act as engineering lead for a large group of less experienced engineers. You don't have to go the full management path to remain relevant, but you do have to offer something that someone 10+ years younger than you with a more nimble mind and greater curiousity can offer an employer.
Can you design every aspect of a software project - including configurability/release ops, runtime monitoring, networking, persistence, scalability, disaster recovery, and software architecture? If so, no engineer fresh out of school can come close to replacing you. Engineers with that kind of big picture knowledge are very hard to come by. And that kind of big picture knowledge is very much a moving target that will require a lot of learning to stay on top of, as available technologies and best practices are constantly evolving. Those of us who have been around for a long time have a distinct advantage, as we've been witness to the changes of recent decades on an evolutionary basis. We don't have to learn the last 20 years of technological innovation before we can even get started on pushing new boundaries. The pace of innovation has increased massively in the last 15 years, and it is still accelerating. A lot of what we might consider fundamentals is largely glossed over for freshly minted software engineers - many of whom have never had to write anything of significance in assembler or had to deal with a severely resource constrained software project that actually requires paying real attention to efficiency - yet those skills are very much applicable to building large scale systems today. Sure, computer speeds today mean that fitting a unit of work into 10ms is that much easier, but doing thousands or millions of those units of work in parallel without spending a fortune on hardware and energy, in a manner that is fault tolerant and easy to administer, is still a difficult problem to solve, and our experience working under much tighter constraints gives us a huge leg up there.
I've only gotten better. Shit, I've forgotten more that most know.
As far as learning goes, I find myself in many jobs doing stuff I don't have any background in what so ever. However, I know that given time and effort I will figure it out. I've worked around the world and when this gig runs out, I'll go anywhere for work. I don't worry about the future. I look forward to it.
I'm 57 and just spent the last six months learning my first Object Oriented Language—Objective C. My first app was accepted in the Apple Store on Tuesday and I've already sold some. My second app will be ready in the next month or so.
Once you wrap your head around how a language thinks, and learn how to Google the right questions, you can program in anything. I can't program for long stretches like I could when I was younger, but I'm not making the same mistakes as I did then, so I think I'm being at least as productive.
Dude, I out rank you by several years. You mind is flexible. It can be retrained to function in ways you have never dreamed before... at any age. It takes a willingness to attack the inflexibility with novel approaches. Listen to different types of music. Work on making music. If you aren't a math wiz dive into Khan Academy and stretch an analytic approach to thinking (go from basic to advanced math as fast as you can.) Run your life different. Start writing books for fun. Learn a new language. (Chinese is a great brain jump starter!)
The point is, you have to choose the level of flexibility for your brain. Remapping patterns (thinking behaviors and assumptions), on a regular basis, teaches your neural network flexibility. It changes the wiring of the neural pathways from "think as a coder" to "think as a learner/creator". Even within the narrow confines of "being a programmer", moving from OOP/imperative programming to functional programming, requires a great deal of brain flexibility. Once you start opening up your ability to learn in new ways, however, you will find that you are no longer limited to a programming (or development manager) career path.
You may be 40 but you are probably not even half over with your life. Keep you brain (and body) active and changing. It will insure an interesting LIFE instead of a limited CAREER.
Gook luck grasshopper.
In times before high speed internet and online streaming, learning new languages or anything new required you to take classes or read a tonne. Don't you think learning from so much online content isn't as hard as before?
No, you're never too old to learn - anything!
I'm 43 myself, and I never considered myself old for anything. I know for a fact that I'm smarter than the average joes out there, (hint...when everything you do, everything you attempt...becomes easier for you than your peers, stakes are...that you really ARE smarter than your peers).
Recently, I decided to revert my os to Linux Slackware 13.37 (gotta love the title), and it went down with me like a sinch, ubuntu 11.04 sucked donkeys balls, why? Unity ...and tablets that is... people wants to be idiots, and treated as such. Now I'm going Linux from scratch, do ya wanna fight about it? No...
In my 12'th of age...I programmed assembly, so what of it...now I'm 43, I'm not anyone famous, not anyone YOU lot know...I'm just a lonely bastard living it out in some swedish forest as a loner...a tech freak for sure, but I never stopped believing in myself, neither should you. I can do anything - can you?
What this world is coming to - is for you and me to decide.
There are still a lot of things to learn besides programming !
I'm 46 and I earned my life coding since I was 20, so I have more than 25 years of experience (mostly in game programming). Plenty of Asm/C/C++/C#/VB.Net, etc...
Nowadays, I find coding boring, since it's mostly like building with Lego.
I have decided to change career, so I started practicing agility.
I have been a public speaker a few times in agile conventions, because I have a lot of terrible experience (in game companies !), and I naturally know how to motivate a team (that is: not by using money).
I'm currently self-learning NLP and TA and all possible psychological tools, which are very easy to understand for me because when you code, you know how to be methodical.
My goal is to become an agile coach.
So my advices: ...)
1) learn psychology, you'll discover that it's fun ! (read about Agile, Scrum, XP, NLP, TA, GTD,
2) try to practice psychology whenever you can
3) use your experience to help teams as a coach (don't hesitate to accept a lower salary to build your experience)
It's never too late to learn !
If you want links, just ask me.
I'm just over 40 and to be honest, I find the question somewhat absurd. d00d, seriously? There are people changing careers in their sixties and seventies.
You are as limited in your capabilities as your perception of your self is. I had a lifting coach who was in his sixties, 5' 2", maybe 140+ lbs and he was deadlifting between 550-600 lbs. A friend's mom is over 60 and has done several iron man competitions.
If your brain isn't working as well as it used to, there's a good chance your diet and fitness regime or lack of, is catching up to you. Stop whining, cut out the doritos, get off the BarcaLounger and go learn something!
You already have the answer: You aren't willing to learn anything else, so that means either you adjust your attitude to the "learn new tricks thrice a year" mindset, or try your luck without learning anything else.
If you have to ask, then yes, you're too old. On the other hand, I have ten years on you, and in that ten years, I have learned most of the programming languages I know. You're mistake is asking.
I have been programming for 30 years, and I am still learning, and if you are as you say you are a developer of 25 years then no language should be too complex or different from everything else you have learned.
Come on its just syntax to achieve the same results.
Does not matter how many languages you might have learned, you can always learn more. The question becomes how hungry are you, how much cash do you have to go back to school, how many opportunities are at your location and for which language. I would do it in a heart beat if it raised my salary by 10k+...remember...you need to stay relevant, so if by doing so, you also get an increase in pay...why not?
I was over 40 when Windows 2.0 hit the streets. Currently I'm getting up to speed with WCF, WPF, and C#. If I didn't keep leaning on the job, I'd still be using FORTRAN IV.
No!
You are certainly not too old to learn new languages. I would recommend you towards languages like C# or Java (C# is my personal favorite) since they are more similar to the languages you know and are more useful towards more powerful coding. The other thing you might want to consider if you don't like being away from code completely and like design would be the possibility of going in to software architecture. It's probably more in line with your experience level and is less dependent on knowing a specific language in detail and more based around coming up with overall system designs to have developers implement. It maintains the technical work while letting you leverage your management experience and also mitigates your lack of coding experience in the most modern languages.
As long as you are familiar with the concept of how to organize code in an object oriented manner, not a whole lot has changed in terms of how code is written at it's most basic level. The only real changes are the shortcuts that have been introduced to simplify implementation.
AJ Henderson
If you can't learn to apply your programming skills to a new language, you are a terrible programmer.
You too old, guy, give it up. Go join Mitt Romney's campaign......
I'm a 61-year old software engineer. I learn new technologies every week. A few years ago I taught myself Java in 3 days. I am respected by my colleagues, many of whom are young enough to be my grandchildren. The only thing holding you back is your attitude.
40 years old? Get off my lawn and off your ass and go learn something new.
No sig? Sigh...
I'm 62. Learning languages is fairly easy. They're almost all like C except maybe LISP and a couple others. Someone mentioned PL/SQL which is straightforward and based on Ada. C is currently the most widely used language with Java losing market share and Objective-C skyrocketing (Mac, iPhone, iPad). Bjarne Stroustrup said he's he's sorry he developed C++ ("C lets you shoot yourself in the foot. C++ makes it harder but if you do you blow your whole leg off"). With multi-core processors and stagnant clock speeds, nothing runs any faster unless you code you code for multi-core. This is not easy. I've been using the Intel compilers & Intel Parallel Studio which integrates with Visual Studio on Windows and Eclipse on Linux. Learning this will give you a leg up over guys who continue to churn out sequential code as 4 -processor/10-core servers hit the market. Also, take a look at NVidia's Parallel NSight for CUDA programming (Massively Parallel Programming). The fastest supercomputer in the world uses multicore Intel & NVidia Fermi processors (as do several others in the top ten). Security is fascinating! Read about hacking, kernel exploits, web application obfuscation, cryptovirology, rootkits, social engineering and everything else you can get your hands on. Learn Metasploit. Most companies are incredibly vulnerable and don't know it. Using CUDA (above) you can access any hashed password system in a few days - max. You can become a wizard. But none of this will guarantee you a job if you're 60 and not a sniveling corporate weasel. If you're lucky, some startup will realize your worth. Or go into business for yourself.
No, you're not too old. We have just hired a software engineer in his 70s. He hit the ground running, and is continually kicking ass and taking names. It took him right around two weeks to become productive in Scala (which is not an easy language to learn). Granted, he's an outlier, but it certainly can be done.
I'm 48
I spent over 25 years being a foxplus/foxpro developer.
I currently am a PHP/MySql developer. I took a pay cut to make the transition happen. IMO that was the trade off to get experience in the new skill set. In a few years I'll have experience as a programmer and experience as a PHP/WEB developer with all kinds of opportunities open to me.
Don't be afraid to make a leap and take a pay cut for the job you want.
You can try therapy and psychotropics, like a large number do and probably need, or you can grab hold of yourself and have a heart to heart. Reinvent yourself. Discover your strengths, work on your weaknesses. Look into why you are asking this question and what is it really masking. Old age and cunning has advantages over youth and vigor -- paraphrased from somewhere.
Courage, perseverance and planning.
Here is my $.02. If you don't stay current with languages, you may be able to find niche employment, but at some point, your fun will most likely end. Some languages are, of course, timeless (C++), but nobody in their right mind would choose to use VB or Delphi over .NET these days. My advice on languages is always the same: learn C++ first, then any C like language is in your reach. Learn C# or Java next, and JavaScript. With the three of these, you can do anything. Programmers who know C/C++ will always have an advantage over the new kids that started with Java/.NET. Any time something cannot be done easily in managed code (C#/Java), you will become indispensable (trust me).
Keeping a broad base of familiar languages can be a serious boon. At a single company, I have written things in C, C++, Java, VB, Delphi, C#, Ruby, JavaScript, Flex, Silverlight, Perl, Python, PHP, and old style ASP. You never know what will be thrown on your desk from new technology, or even (the Taliban ninja) acquisitions of other companies/technology. That is job security.
You sir, deserve all the mod points that I don't have to offer.
I'm 50 and you hit every point and more that I could have stated. There is so much more to building computer technology systems than learning a new programming language.
This nails it "...understanding the business, anticipating needs, inventing and delivering solutions, ideally by leading others."
Well... at 46 yo, I've learned probably about a dozen new programming languages since I was a spry 40 yo. OK, a number of those I've "learned" relatively superficially... I wish I had more opportunities to get my hands dirtier on a daily basis with all the languages I've only played with a little in the last few years, but I get paid quite a bit to do relatively few things.
Actually, over the last few years, I've *written* at least two languages. Not quite programming languages, but one markup language and one, well "annotated grammar description" I guess you'd call it. Yes, I know that NIH syndrome is a bad thing, but there's a reason why I wrote what I did (trust me). On the shelves near me I have books on about a dozen PLs that I either haven't worked with at all, or have touched passingly; it wouldn't be true to say I'm actively reading all of those books, but I certainly glance at them.
Buy Text Processing in Python
I'm 47 and doing fine. I've done C++, Delphi, C#, Java, Flex, SQL. The last time I had to look for a job (six months ago) it was a feeding frenzy. I think the key is to be flexible and to have a good coverage of what businesses want and need. As you get older, you have the opportunity to have adapted to a lot of different scenarios, so when you go in for an interview you are more likely to have done the very thing they are looking for. In addition, you have to make your resume showcase the things businesses are looking for. As an older programmer you have a lot of experience in full lifecycle development. Being a part of an award-winning product makes a difference. Having actually delivered on a full piece of software is more valuable to businesses than whether or not you just got your Master's Degree in CS.
The market seems divided into two groups, those that hire mostly senior developers and those that simply get kids out of school. I've worked at several places where there was more white hair than anything else. On the other hand, I've interviewed at places where I would have been the oldest by far, and knew I wasn't going to get a call back. Sometimes you never know until you are there for the interview.
If you're a good programmer you can learn a new language. Age has nothing to do with it. I'm in my 50's and turning in new directions.
It all depends on how much you want it, what you're willing to devote to it, and how smart you really are. You not only have the ability to pick up new languages, you have the experience to avoid the Young Gun syndrome of creating reams of crap just because you can.
I'm 58. Am I'm still learning "new" languages. In college, many years ago, I learned COBOL, Fortran, PL/I, S/370 assembler, APL, and SNOBOL. Over the years, I've added BASH shell scripting, Python, PHP, Java, JavaScript, ICON, Delphi, Turbo Pascal, Modula II, Erlang, Haskell. I'm not even bothering to mention Groovy and Scala as they are just basically Java variants. If I can learn new stuff, you can too. The hard part of programming is figuring out what is really required and attention to detail.
Use your C background and start building iPhone and iPad applications. This is the hot market to be in. If you are really good and can build apps that people want then you can also make some cash selling them in iTunes and you don't need to be employed by anyone.
I am ok with the agism in the industry, because I will never get old. Also, being a programmer means I will make enough to retire by the time I am 40.
Right? Right???
I'm 43 and do PM, Management, and Programming as parts of my everyday work. Plus Sysadmin, DBA, etc. I recently started on Erlang and love it. Put down your purse and try a bit harder.
Find a technology that is in demand but few people want to touch, like ABAP (which was mentioned in this thread), Pike/Roxen, Multi-Value databases, etc. I'm surprised with a FoxBase/FoxPro background you can't write your own ticket, actually, with people wanting to support crufty old FoxPro applications that run their business.
The key is - find a specialization that is in demand, but not many people are working in. C# programmers are a dime a dozen. But if you know some technology that people have built a business around in the past and need to support it, they won't care about your age or anything.
The parent made excellent points. Long story short: follow his advice, stay put.
That said, depending on who you work for now and later, a 40 y.o. doesn't have 20 years left, they've got 25 or 30. You and I are in a bit of a quandary. On the one hand, because of increasing life span and concentration of wealth, having most working people retire at 60 doesn't make economic sense, and odds are that you need to spend the extra 5 to 10 years stashing cash. On the other hand, most high-value added employers don't want to hire people near what used to be typical retirement ages, and you can't time when or how the next two or three recessions are going to affect your career.
So, listen to the parent. But, you've got more working years ahead of you than he states.
Luke, help me take this mask off
In fact, you are not old at all (you can't be old: you're younger than I am).
You are over thirty, though, so your brain is fully mature.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
Asking such a question about anything shows that you are too old. Whether you are 12 or 52, you are too old when you ask such a question.
Do I want to learn a new and for what reason?
That is the question.
... to do something you don't like. If you're happiest coding then code and keep learning new skills
Make the leap to Consultant. Consultant is just another word for "continuous, steep learning curve". At 30 it's a setup for failure. At 50 it's just right. Am on my 8th year, strictly corp-to-corp (including via regular recruiters) and it pays incredibly well. Corporations just want solutions. You just want to code. Perfect!
You'll lose.
Become an expert in something the young do not know. That will give you more value.
Web development is the worst idea you could have. Everyone does it and it could be done by anyone.
Better make yourself irreplaceable by going for a niche.
It has been really hard to learn languages like lua, python and java.
The hardest part is programming elaborate workarounds to not having pointers.
These youngsters dont know what their missing!
Seriously - Yoga.
I'm only 29 but I'm obsessed with the concept of getting older and losing my razor sharp skillz :)
So I do Yoga, stretch, relax, read, talk, play. If you fully enjoy life you'll find that technology is just a tool. Your brain will be flexible and fresh enough to adapt to any situation. At least that's what I tell myself.
I've worked in enough environments to know how different they can be from each other. Yes, I spent a few years in a large company just like you describe. Everything was about politics. Management was incompetent, doing anything about it was impossible, trying to convince them they were making bad decisions just got you cited for your "bad attitude", and everyone's main goal was to keep their head down, protect their turf, and try to move up the ladder.
I've also worked in fantastic environments were everyone was competent, everyone respected each other, and we were all working together for common goals. If your workplace isn't like that, find another one. Don't make excuses for it or say, "That's just how things are," because that's not how things are everywhere. It took me a year and a half of being miserable before I made the decision to leave my large company, but I'm so glad I did. I now look back on those years like a bad dream from which I've since awakened.
And if you're in management, remember that you are responsible for shaping your company's culture. If everyone under you seems negative, if they're just interested in telling you things can't be done or have to be done differently, don't blame them; blame yourself. People act that way when they're in an environment that encourages them to behave that way. As a manager, you have enormous power to shape that environment. I've seen time and again how much difference a manager can make. When employees question their manager's decisions, a good manager sees this as a sign of involved employees who care about the direction of the business. A bad manager sees it as a sign of bad morale. The good manager engages the employees in responding to the criticisms, which leads to good morale. The bad manager blows them off, or worse, faults them for speaking up, which leads to genuine bad morale.
"I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
Since 40 I've learned several new languages and a couple of new database environments. GUIs and have come and gone. Web apps have become standard. I've changed employers. I've had a few more kids. I've also seen technology get really cool and incredibly cheap. Buy some toys and play with them. Agreed, it is easier to learn new things when you're younger. So, big deal! Work a little harder/longer/smarter to make up for that. The skills of algorithms, data storage, debugging and understanding the problem domain are always useful.
At work I have the best of both worlds, 1/4th manager and 3/4ths programmer. The bottom line is you are most valuable if you can solve problems for people and deliver solutions that work. You have to figure out what they need even if they're not sure. Be a teammate and coach for younger staff. Work with the business units to solve their problems. After all, 99% of IS departments are cost centers, not profit centers. You exist to help the rest of the company do their job, which is make/save money (and jobs) for all of you.
There is a ton of work available in C++ where I am. I've worked in C++ for about 8 years, having come from the Java world, and routinely worked with coworkers nearing retirement. Even better, many of the skills and good habits you may have acquired in more functional and finicky languages can prove useful.
If you want to pick up something cutting-edge and fresh, I'd highly recommend generic GPU programming. Highly sought after by computer vision and scientific computation, it feels like assembly and writes like C on LSD. There also just aren't all that many people in the field yet, so it's still at the point where writing a frame differencing algorithm on your home machine can be a foot in the door.
I hire experienced coders who know what I'm talking about and what I want. They are twice as expensive as the kids who are fresh out of college, but they are many more times as productive because they don't make the mistakes kids will make. An experienced programmer is worth his weight in platinum.
But I will add one caveat: if I detect rote thinking, a world-weary mien, or an inflexible attitude it instantly disqualifies a candidate. Ornery is fine, even good. But inflexible? Nah, that knocks 'em right out of the running. Why would I want to hire someone who cranked out the same piece of code for their corporate master for 20 years and who's going to be constantly snorting and pshawing every time I try to push the envelope?
So I'd say, learn the new language, pick up some nontraditional platforms like a smartphone or tablet, start hacking, and rekindle your excitement about technology. Be ready to haul out an iPad that you hacked during an interview and beam with your love of doing cool things with tech. Instant hire.
If you don't want to do that, probably better to stay in Project Management.
Do what you can, with what you have, where you are.
If it's too loud, you're too old.
These are my friends, See how they glisten. See this one shine, how he smiles in the light.
There are many good programming tutorials here:
http://www.thenewboston.com/
Java, Objective C etc..
I'm 55, a programmer, and I've been out of work for two years.
I'm a 58-year old Perl programmer and system administrator enjoying my challenging work.
1. I'm old. One 5 hour energy drink revvs up your basic 20 year old code monkey all day. I need a saline drip with caffeine in it all day to keep going.
I ride my bicycle 160 km each week, and have more energy than many younger programmers.
2. I'm expensive. I have 30 years of experience in the 'biz and a masters degree in CS. I'm not cheap. You could hire two 25 year olds for what I'm asking.
I am productive, have good control in deciding what I do, and enjoy a mentoring role.
3. I've been exposed to every nasty little mindgame management has at it's disposal. And sometimes I have the bad manners to call people on it. This is called "having a bad attitude".
I understand what pressures people are under, and get along well with my work mates and managers.
You are too old if you think you are. Otherwise, you can learn a great deal every day up to the day you die.
30 somethings are hired for their technical knowledge. 40+ are kept for their domain expertise. That's the only justification for the salary differential between a fetal developer and a silverback. In most companies programmers are a commodity, and management is a resource. You buy commodities by price and expiration date.
If you want to start over, salary wise, andyou can learn a new language - but realize age discrimination is real, and unless you undercut the salary demands of new grads, you'll probably be passed over - you're "over qualified"
Even if you are willing to move backwards in your career (salary and responsibility) many companies are not going to let you. If you are willing to take a substantial pay cut, you'll look like damaged goods. Hiring is largely controlled by superstitious, ill informed HR drones, who mostly want to hire already employed people, because if your unemployed there must be a reason.
Sometimes its easier to take a new path instead of going backwards. Have you considered IT Security?
And, I just picked up on JAVA (for few years now) & Python, & let me tell you what - YOU WILL TAKE TO THEM LIKE A DUCK TO WATER, guaranteed!
It seems that you're overlooking the fact that with all the languages you noted, you have the FUNDAMENTALS DOWN PAT BY NOW - that's the hardest part!
I.E.-> You know what questions to ask, you have done pretty much what you'll be doing in new languages already also...
Trust me - you can DO this, & far easier than some rookie/noob can, because YOU HAVE BEEN THERE/DONE THAT, before! If I can, & I am no "genius" (130-135 typically scored on IQ tests for whatever that's worth to give you an idea here)? You can too...
APK
P.S.=>
"I learned Basic, VB, C, FoxPro, Cobol, and Assembler, but the languages I used the most were Pascal and Delphi" -
I feel like I am reading what I would have written, & what I wrote above? I meant it... every word. If I can do it, so can you my man, so can you, & FAR easier than you think (heck - Python for example? VB EASY & has a tremendous wealth of information/help online too... JAVA?? Pretty much JUST LIKE C++ (except that everything needs to be done as an object with a "new" instance thereof etc./et al)...
Note that I specifically noted JAVA & PyThon because of MULTI-PLATFORM capabilities? That's right... this, imo @ least, IS THE FUTURE (& it broadens your marketability too, keep that in mind)
So, come on man - value your experience! It's your "ace in the hole" here... it really is.
Take heart - you can do this, & far easier than you imagine - plus, I noted you said you realize WHAT YOU LIKE MOST, & that is coding...
So since you seem unconfident? Hey - DON'T BE, my friend, because you will & can do this, value your experience (it's what makes you be able to pick up on new languages far easier than you think!)...
... apk
It's an occupational hazard of indoor manager/coder types.
http://www.vitamindcouncil.org/about-vitamin-d/how-to-get-your-vitamin-d/vitamin-d-supplementation/
Vegetable deficiency disease (in part from stress) is a killer too.
http://www.drfuhrman.com/library/foodpyramid.aspx
http://drfuhrman.com/library/article16.aspx
http://www.drfuhrman.com/library/PCI_angioplasty_article.aspx
Fixing both of those issues in my own life has led to more energy and mental clarity for learning new things.
Otherwise, code monkeys are at big risk of more than bad management from eating chips, drinking soda, and working indoors, which curtails the time for learning on this plane of existence:
"Code Monkey"
http://www.youtube.com/watch?v=v4Wy7gRGgeA
Exercise, good sleep, and other lifestyle issues can also contribute to having more energy and more mental capacity.
http://www.bluezones.com/
Also, there is a lot to be done for improving software projects beside code, so you might be able to push your project management skills in new directions, like discussed by David Eaves here for FOSS projects:
http://www.slideshare.net/david_a_eaves/community-management-presentation/
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
I'm approaching mid-40s. I learned Cobol and Pascal in college on a VAX11. I programmed in Foxbase, then FoxPro when Microsoft acquired Fox Software. I learned HTML, CSS, Javascript pretty early on. Then went on to PHP and MySQL. I've been hiring PHP developers for the past year and am shocked at how much mediocre developers are asking. Ones that don't know databases or front-ends. You could learn PHP easily and be proficient within a month. Not that it's "better" than other languages, it's not. But it's in demand. Javascript is a very powerful language and ties nicely with HTML and CSS. The LAMP stack is probably the easiest one to learn and wouldn't take long.
You can learn a new language. I don't know if you can get a job, but that's not necessarily your fault. I would say there is definitely a bias against older developers. A real mistake, IMO, but ... I really think that knowing assembler of any kind gives any programmer a 'leg up', especially if significant assembler coding has been done (PIC, ARM, Arduino, etc.). Especially today with new CPUs, portable devices and the explosion of embedded CPUs in practically everything. It depends on what you want to do, and whether you really like doing it enough to follow through, even for no return.
Even though I am post 60, I am still actively working as a software developer. Attempts have been made to move me into management, but I don't want to manage. I also plan to keep doing it until I drop dead. I want to design and develop software. This is what I like to do. If I left/lost my job, I would have a hard time finding another, I'm sure. So, I would probably try cell phone apps or something like that. I do keep current, but work mostly in C/C++, PHP and SQL doing 'back-end' development, but I can handle HTML, Javascript, XML and the like when needed. I have even done an app or two with Java MIDP which is still used on many cellphones.
I do it because I like it. It's what I want to do. What do you want to do?
I'm also currently in the process of learning VHDL, which is sort of a programming language too (even though it ultimately gets translated into hardware). So no, IMO you're not too old. But also keep in mind what the guy who posted the first reply said.
At this point, I figure switching jobs may be difficult given the economy and my age. I'm hoping to hang on to the day job for now, but get back into doing a little consulting on the side. If the consulting market really heats up, I may consider going back to doing that full-time (which is what I did until about 6 years ago).
My father is over 70, not a programmer by trade, and is still learning new languages (Lua & Python).
The issue, I think, is motivation. Despite all the criticism he has for every non-C++ language ("leave my memory be!"), he has fun learning them -- and applies them successfully to his research projects.
Unless you're a .net programmer. Then it's not really a matter of age. It's a matter of IQ.
If you are a 40 year old programmer and you're worried about which programming language to use then You are missing some critical expertise in your portfolio. Programming languages are nothing, they are zilch. Programming syntax you can pickup in a book on a weekend or as you go. Familiarity with libraries in a few days.
If you've missed the basics of algorithms, concurrency, memory management, and other critical thinking skills. THIS should worry you.
if you have to ask, you've lost your edge. I'd focus on flipping burgers.
there are 3 kinds of people:
* those who can count
* those who can't
"Dr. Lixia Yang (above) and her co-author, Ralf Krampe of the Max Planck Institute for Human Development, Germany, found that seniors were able to retain 50 per cent of concepts they learned almost a year before."
You're not too old to learn new languages. You're learning them for different reasons. I'm 41, been coding since junior high. I've been in game development for 20 years and while I know several languages, my workhorse has been C++ and little languages like LUA.
Now I find myself working on more and more web apps. I don't like web programming. I find it clunky and tedious and subject to too many platform configuration issues. And don't get me started on PHP.
Consequently, I'm not learning these technologies as quickly as I picked up my others because they don't do what I'm interested in doing. It's a professional obligation, not an inherent interest.
Other coding projects that have required me to learn new languages or understand complex mathematical models that have grabbed my interest have been more fruitful. Can I code like I did in my 20s? No. But looking back on it, I was exhausted through most of my 20s. I value sleep now.
But I highly recommend looking for the same passion that you had when you got into computing. The game industry has changed radically from what it was when I get started (back in the days of sprite-based games and DOS extenders.) It's not surprising to find oneself no longer enjoying an industry that has undergone massive change from the time one entered it.
Try getting into app development. C++ is a very popular language, and it's growing in numbers. Give this a try.
If you are having to ask the question, like you need permission, perhaps you are too old. Don't go gabbing to a bunch of people with nothing better to do than scan comments and comment on comments on old articles and re-hashes of re-posts. Go study your new language, instead. I was 35 when I quit my job as a Java web developer and started medical school. I'm going to finish in May of 2012. If I had asked others if I could do it, I wouldn't've gotten up and gotten it done. They would have told me I was at a comfortable job, making a comfortable living. Why would I do any such thing that might impact my family? My family managed. I'm still happily married. We haven't starved yet or had to live on the street. It's working out. Go. Learn your new language. Do not ask other people if you can or cannot do something new. The only person in the galaxy that can actually answer that question is you. You are welcome.
I'm a 37-years old hardware architect/system engineer/logic designer; worked in a several start-ups and large companies. In the last couple of years I published a few well-read articles and a 478-page book on FPGA design. Will see where it leads.
Say it out loud a couple of times.
I've been offered management many times. But it's a different skill set and, frankly, so boring I'd rather gnaw my own leg off. My productivity in management would be close to zero.
If you are a tech through and through then keep coding and take the consequences. I earn less money than I could by staying 100% technical, but in return I enjoy getting out of bed in the morning knowing my work day will be interesting.
Interesting thread. I am an engineer turned programmer due to a combination of job-market and my interest and abilities in programming and algorithms, and I am up there in age (56). I enjoy solving problems and working technically and so never tried to move into any kind of management. And I also have this fear that one day I no longer will be considered for a new job (if I need one) because I have gotten too expensive. However, due to company finances, I have had to change jobs a number of times over the last decade, and each time, despite receiving a depressingly large number of rejections, I have managed to land something. The reason? Not because I am an expert in any particular language or technology (I have no formal software development education, and have programmed a little in just about everything including APL, Fortran, PHP, Java, C++ etc. etc.) and I am at least factor two more expensive than most of my colleagues. It has been explained to me that I have been hired each time because there was a need for someone with more experience in general, and with a more general broad experience in various aspects of IT technology. Programming APL after having knowledge of C# code architecture makes one a better APL programmer. Likewise, programming Java having algorithmic experiences from more engineering type jobs working with Fortran and Pascal makes one a better Java programmer. Not every company, but many have so far been willing to pay my salary instead of hiring another far cheaper, perhaps more formerly educated in some language but less experienced colleague. In short, there is still a vast need for non-managerial highly technical employees with a large experience base (either broad like mine or focused in a particular technology). It is just a matter of finding the enlightened employer needing such a person.
Two major points:
1) Why pick *A* language? One more little skill isn't going to cut it for you. If you want to learn, learn several languages. How? By doing. There's *lots* of open-source projects out there just dying for love. You want to learn a language? Build with it.
2) You're 40. I'm 46. Trust me: you go into an interview saying how you're going to program the socks off any two 20 somethings, they'll very dutifully give you an interview, give you a coffee, thank you as you walk out the door, and you'll never hear back. Let the projects you've worked on above talk for you.
Best of luck!
-Ken
P.S. Oh, and /don't/ quit the day job until you've got another (hopefully better) offer!
Well, I wouldn't say you're too old to learn, but it only depends on you.
I've been programming the last 25 years of my life and as I'm reaching 55, and after starting with the Z80 Assembler and Pascal, continued with C for 10 years and for another 12 with Java + SQL, I'm now learning Python :D
I think the real question is: "Do you really want to learn another language?"
If you have to ask you haven't the self-confidence to dive in a do. 40 is still a comparative youngster, kid. Keep learning. It helps keep your mind young and flexible. Normally speaking that keeps you alive and well fed in the process. When you give up learning, you're into decline and have a foot in the "why am I alive" grave. At around 40 I picked up three assembler languages and one high level language. Admittedly, it's a little harder to do that at nearly 70.
{^_^}
(it rates no caps), you are already worthless. go do something you enjoy, regardless of income.
Considering the economic climate outside of IT anyone with programming skills is in a solid position. I would recommend anyone currently looking at where to point their programming talents to look at Health Care. The skills that are high value are both coding and database management. Their are simply not enough skilled programmers in the U.S. nor the developers to provide platforms - for the hundreds of thousands of clinics, hospitals, and health service companies that must move all hard copy record processing to digital by 2012. This opens up a massive opportunity in one industry alone. I see more and more private practices, large clinics, in all areas of health care services - grappling around trying to replace legacy systems. The combination of Project Management, HIPAA rules, and programming skills seems like a great combination. You already got the programming skills - picking up another programming skill is not going to be starting over at this point - specifically learning SQL and scripting. You can get HIPAA certifications with a few weeks of study and a single weekend course. Just look at how much spending will be put in Health Care over the next 10 years! So much spend that the U.S. will actually have to raise taxes to payback the forty years of raiding Social Security and Medicare surpluses! So go after it!
I'm 48 and taught myself Objective C/Cocoa in order to implement a friend's game as an iPad app (Numbers League). I think I would have learned it a bit quicker in my twenties, but I don't believe I would have enjoyed it as much. Dive in!
I'm a 64, well almost 65, year old database designer and developer for Siemens. Started out as did most 30+ years ago in Assembler, Cobol, Fortran and have learned that every technology was relatable in some way to a previous. From hierarchical, to event driven, to set based languages, the motivation for me was the enjoyment and challenges of learning. But, most of all it was the input from fellow employees. I like to say the first 15 years I learned from those dinosaurs and now that I'm a dinosaur I am learning from the current younger and very bright set of developers. (I've also mentored many along the way)
Gleen the advice from this thread; the young and not-so-young have a lot of valuable input to give.
Good luck.
I'm 58 and still do a lot of programming. It is in the nature of the job to keep learning. I teach CS at a a university and learn new things regularly. I dove into shader languages and the new style of GL programming this spring. I think I can learn fairly readily, though I do get a little tired of looking up things I already know perfectly well how to do in C/C++. I assume this comes with experience more than simply age. 40 is fairly young for thinking you might be a little old for learning new things. I hope to remain capable of learning new things until I die. Having my brain start to malfunction is not a happy thought.
Some of the posts mention that experienced programmers can bring better solutions to the the table. This is true for those who work and study. It is not a natural result of aging or of continuing to program the same type of application over and over again. This kind of thinking usually results from having worked on a variety of project requiring different solution techniques.
Programming was simpler when I started in 1976. On my first job I recall reading the ANSI standard manual for Fortran 77. It was short enough that I knew essentially the whole language. C++ is probably about 10 times more language to learn than Fortran 77 and I don't think I have it all memorized. Added to that is the enormity of libraries available. Any libraries I used on the first job were locally developed and extremely small (16 bit computers with 64KB program size). Today the library possibilities are endless. No one can be an expert in all the libraries available for C++. The essential requirement for success in programming (other than programming skill) is the willingness to learn.
I seriously doubt that most people with 35 years programming experience would be much better than 25 year olds with 10 years experience. I think I am pretty good, but the best of the graduates from our program are probably pretty close to equal in skill by 25. Age may bring wisdom, but not even that is guaranteed.
Ray Seyfarth, ray.seyfarth@gmail.com, http://rayseyfarth.blogspot.com
Here's my story maybe it will help inspire you.
I'm 38 so it sounds like we're about the same age. I got my feet wet in programming back in the 80's on a TI 99/4a, and later a Commodore 64 programming in basic.
I continued to use basic on the PC and eventually visual basic.
A few years ago I finally got around to going to a local community college and while I was there took some classes in C++. I took to it pretty well.
through the school I was able to get a paid internship, with no end-date, from a local company that's a subsidiary of Lockheed Martin.
The first thing they wanted me to do was to take on the development if a Silverlight / C# application, a language I had never used before. Worse yet there was no spec, they didn't really know what they wanted, and I had absolutely no one else on my team. I was a one man band. A new-hire, intern given full responsibility of a product which was due by the end of the summer.
To make matters worse I really only had Google to help me. Most of the people working in the company weren't developers and the ones that were didn't seem to have any answers to my questions.
Nevertheless my years of programming in basic, plus my exposure to completely different languages (c++ and even some java that I was taking along side during this whole time) helped me grasp the c# language, and after a few weeks things were starting to come together.
The application was completed ahead of schedule and actually surpassed what anyone had expected.
The point is, if you have experience programming at all, regardless of the language, then you know how to abstract away complex problems, you know how to structure data, you know how to build algorithms, debug, and test.
The syntax isn't important, you can pick that up easily by looking at other people's code and by searching the internet. It's about knowing what you want the program to do, not in the details of how to make it do it.
Personally I think that if I had gone to college in my 20's and this whole scenario played out then I would have failed miserably. You're thinking you're too old, but you have experience. Albeit in languages that aren't used much anymore, but that's not important.
I'm not an Apple fanboy but, if I were confronting learning a new language right now, I'd learn Objective C and focus on iPad development. Then I'd focus on whatever language and framework serves it's biggest competitor best. right now Android is looking good but you've got at least 2 years before you should even think about anything other than Objective C.
WHY, Objective C? Why iPad development? Well, it looks like your accustomed to DECENTLY DOCUMENTED LANGUAGES AND FRAMEWORKS. iPad developers enjoy the best documentation in the industry. You're first task is to update the markets you serve - iPads cover the mobile and tablet markets. Your next task is to become platform agnostic after proving your value in iPad development.
Old, experienced guys are turned to every time the enterprise transitions a technology from the exciting PR move to the mission critical line of business. If I were you I'd take a PM role once every 4 years or so to keep that option open and do what you love enough to excel at. (Yeah, I dangled a preposition)
Every rule has more than one consequence.
If you don't want to switch to a completely different kind of language, like a hardware description language, a very low or very high level language, you can understand the code and write the syntax in a few hours or days.
IMHO the real problem is the library API. Getting used to the c# or Qt MVC framework is a pain. Understanding Servlets and Spring is really not easy and knowing all possible animations of Flash's MXML needs some time. Every time I want to code something in Python, I'm looking in the language documentation or google some example code.
But learning something new is always some kind of fun!
In other words, start a company. If you're not inspired, find someone who is -- you'll need a team anyway. There's no security, no health care - wait, that's pretty much of jobs. Especially if you lose a job. Some may call it a bubble, but however long it lasts, right now there's plenty of money chasing social media plays, and a few other techie kinds of things. Take it and you may succeed. If not, you're actually better off than you were before, because now you have startup experience, and are more likely to be hired into another startup.
Michael Odza, Digital Media Strategist
I am 23, and at the starting point of my career - and im already worried about 'burning out' and it was good to read your post and all the comments. Although some are a little morbid.
I am already striving to try and get into the management side of things (I have good social skills for a software engineer :P) - and I am doing this basically because I am worried about being surpassed, this insight comes even though I have the highest KPI/work output in the company.
it all comes back to me being able to program the VCR when my parents couldn't - the generation that is now around 10-12 years old is showing all the problem solving and analytical skills that will perhaps put me out of a job one day... The only thing we have going for us when we get older is wisdom and we must hope that this gives us an edge over the intelligence, sharpness and knowledge of the younger generation...
I guarantee I learned more when doing my degree then someone would have doing the same degree 6 years ago.
I'm 72 and I can assure you you're never too old to learn a new programming language, provided you never stop for too long, I'd say more than a couple years. I practiced countless crazy languages: basic as well as 6502 assembly,pascal ... and most recently objective-C after php and flash. I can't imagine having more fun than looking at a new language's set of instructions and guessing what you can do with it. I hope to go on for ever.
I just turned 40 and am now learning another language too (and the implementation behind it). There isn't really that much difference between languages anyway, the syntax practically always looks like something you've seen before (usually C), but usually nowadays with a VM, garbage collection, JIT, etc. Same old stuff with minor improvements. If you think the latest language is hard to learn, something is wrong. Or you know, if management is really your thing, at least it's a job. But we've got 25 or 30 years left until retirement unless we get rich before then. It's hard for me to believe that management is going to be the only option anytime soon, because there's no point in having more chiefs than Indians. So I'm hoping to stay sharp enough to be competitive with the younger generation, although I do wonder if that is still going to be possible at 55 or 60. If my hireability starts to go down, there's always entrepreneurship I guess. ;-)
Learn Lisp. Not Scheme, Qi, Arc, Clojure, or any of the others, but Common Lisp.
After that, learn Prolog.
These are adult languages, for mature audiences. And you're not too old to learn them.
creativity, ingenuity and energy are the domain of the young. responsibility is the domain of the experienced. but... the more skills you have the more valuable you are. even weasly execs that have been butt fucked up the chain of command can be in the firing line at a moments notice. the old "its not what you know its who you know" is mostly true, but in this economic climate, "money talks and bullshit walks" is much more valid. you can bullshit your way to the top, but chances are everyone knows thats how you got there, including your boss. many people also get pushed up the chain of command to keep them from getting in the way of real work (the Dilbert principle). if you find your job easy, you're in the wrong job. if you're not fucking up occasionally or getting stressed, you're in the wrong job. if you're a programmer, learn a new language (if you're not familiar with web languages like php then that would be an excellent place to start - mysql & php for dummies originally got me going). the more you can offer your employer, the more expensive it becomes for them to replace you. also, don't be a pain in the arse but don't be one of those quiet ones that it takes a week to notice that you've had a heart attack and died at your desk; be a little assertive and make the odd suggestion that you can back up. some companies make it hard and some bosses are just morons so in that case i feel sorry for you and you should keep flicking out resumes if you hate your job. at the end of the day as an old fart, while you may think you're worth more, your best bargaining chip (if you can afford it) is that you can always accept less than what you're worth, and if the alternative is a pension then you might want to consider lowering your expectations to compete in a dog eat dog world. everyone wants to make more money, but if you're in an industry where your abilities are shared by 20-something year olds, then you're kinda limited to competing with them (even in management you face the same prospect). a career path where experience does count for a lot is engineering (and i'm talking about real nuts and bolts engineering as opposed to "software engineers"); graduate engineers will never match their experienced counterparts because engineering is about judgement and that ability can only be gained through experience (ability to look at a bridge design and know if its strong enough). but there are also other careers where experience is worth a lot, such as airline pilots; basically any job where fuckups can kill a lot of people. while there are plenty of programming jobs where fuckups can kill (such as programming avionics gear), there wouldn't be too many run of the mill web app or windows programmers in that position. judgement is made in programming; for example experienced programmers can probably come up with something more effective, but managers know that if you throw enough cheap young energy at a programming problem you'll eventually get there by brute force, and companies aren't interested in good quality software; they just want something they can sell for a profit (and if there is prospect for support and customers having to pay for upgrades and bug fixes thats even better).
I think by the time you get to be around your late 30's or early 40's, you have two choices:
1) Become a manager
2) Become an architect
Unfortunately, the easiest route is to become a manager. Not that there is anything wrong with that, but I think for someone who codes and loves coding it is a huge letdown. Architects, while they don't necessarily code, are the more interesting options for our field. The problems is they tend to be very few and far between because of the amount of raw talent they need. However, if you are one of the few who can become an architect, it is a great career move, as you will be almost as untouchable as a tenured professor at a major university. The pay is also nothing to sneeze at either...
If unfortunately *you* found yourself out of a job, I don't know if any CEO would hire you. You've basically said that at under 50 you've already checked out. You're only willing to give the company only 8 or 9 hours a day, never on weekends. You have a very bad opinion of many of the people who work for you, thinking you know their job better than they do. You may believe you're better at hiding those opinions than the programmer who's out of work, but really it doesn't fool anybody after awhile. It doesn't sound like you are a very enthusiastic supporter of your CEO. Given the attitudes in your post, what CEO knowing about them would hire you for a VP position? In short, I really don't think you're any better than the poor guy that started this thread, just luckier.