Ask HN: Been writing code for 40 years and can't get hired
I would like to ask the advice of those who have possibly been in my situation:
I am over 50, and have been developing software since the late 70’s. Over the years I switched from being a full timer at Hughes Aircraft in LA to a part time consultant in Hawaii. Things went pretty well for decades, but after a family loss I lost interest in work for several years.
Since then, and after my skills no doubt became somewhat outdated, it is absolutely impossible to find work. The continuous news articles about the “great quit” where many folks are leaving work, as well as the claims that hirers are having great difficulty finding employees seem to be fictional from my POV.
Over the past few years I have been only interviewed once or twice a year by anyone who seemed interested, most notably Google and Facebook, but neither decided I was a worthy hire. At this point it seems impossible to get even a junior developer job! The only interest I ever see is from recruiters overseas, who seem to be matching my resume up with job listings by keyword only.
Does anyone have any advice for a developer who has been writing (and delivering) code for over four decades on how to find a job? How do I make someone believe they are hiring a developer who can deliver? I know it sounds ridiculous, but that’s the situation I am in!
189 comments
[ 6.4 ms ] story [ 177 ms ] threadWhat has changed and resulted in contracting jobs no longer being an option?
Personally I prefer to bypass recruiters and pitch to those with a compelling need for what I can deliver. Requires more up-front research but once you demonstrate your track record in delivering results the hiring process becomes smoother.
Also, contracting, as suggested before.
My “real world” resume i.e. "what have you done for me lately?" can be seen on the app store (iOS)
again thanks for the inputAs an example, when I was trying to make the transition from C and Python to C++, I wrote a moderately sized interactive, real time, visual programming language. I didn’t ever show it to anyone, but I went back and looked at it a year later: I totally facepalmed because it was filled with glaring indications that I totally wasn’t a C++ programmer. For example, I often accessed an object’s members with “this->bar” (like in Python, where you use “self.bar”).
I certainly learned a lot, so it wasn’t a waste of time (and it was a fun project for me anyway). If I had a really good friend or mentor who would have been willing to invest the time to do an extensive code review first, then it might have been a useful demo. But at the time, I had no idea just how little I knew!
huedoku.com (and the app on itunes)
oogiecam (on itunes)
thanks!
Huedoko is fun for the first few plays anyway. I love the clever name. Being 4 years old and never updated may not “read” the greatest evidence that you’re actively developing.
The core gameplay is alright. It’s not going to be a game that I’ll find addictive, but the core gameplay was interesting and different in a generally good way.
What was missing was some of the challenge/fun elements of modern puzzle games. A timer, a target number of moves, maybe locking in the squares that were already correct. (Why would it move them anyway once I knew they were correct?)
It was also missing some polish. On an XS Max, it didn’t fill the screen. Every so often, I would end up with a solid red screen that I had to click on to proceed.
In your shoes, I’d consider using that app as the basis to rewrite it in React Native. That will give you a game where you know the core dynamics and gameplay, a modern platform that’s highly relevant and well-understood by recruiters.
For oogieCam, I got nothing at all useful until I realized I had to turn off the hardware mute button on my phone (which generally lives engaged but if you can find in software the fact that it’s set, you could give the user a hint). This one’s much more on me than you/the app, but a recruiter or hiring manager is going to be making a 5 minute judgment, so maximize your chances.
Best of luck!
In addition, you must reboot your interviewing skills. I've been a professional software interviewer (600+ interviews) and have seen most very experienced software developers do quite poorly during interviews. The interview skills required for FAANG-like companies and startups alike are very different from the skills required to work as a typical software engineer.
The interview is the gateway to getting the job. As such, good or great interview skills (i.e. algorithms, data structures, time & space complexity) are a pre-requisite to getting a job.
I hope that the above advice is useful and helpful.
It really doesn't take much effort. Non compliance to this kind of interview BS would make at of these unfair practices go away.
Only counting those where i got all the way to the final rounds, my sample size is roughly 15-20. Not even once have I encountered anything even remotely similar to the Criteria Cognitive Aptitude test, and neither have I heard of it from friends of mine who were interviewing as well. I had a couple “take home programming challenge” things as a filter before the initial interview, but they were either leetcode-like or project-based, not some diet coke version of IQ testing.
With that in mind, it seems blatantly wrong to say that “this is everywhere these days”. Out of curiosity, what type of companies did you encounter that tested you with a cognitive aptitude test? No need for company names if you arent comfortable sharing, just curious about what type of companies those were (e.g., small startups or big tech or non-tech big companies or etc.).
If you are searching for your next position out of need, then you are not special. The employees who can afford to have egos are those who are being recruited.
So... you've 1) realized you're dealing with experienced people and 2) yet discarded them based on irrelevant "interview skills"?
How does this serve the company trying to hire someone?
FWIW, the couple of times I've interviewed someone -- I've always given the guy a 2nd chance if I've seen he's obviously nervous or just not on a good day, but has the material. Even an autistic nerd like myself can spot that and have the common decency to look past trivial human weaknesses.
Besides, I'd rather pick a genuine human being as a colleague rather than some overbearing, over-social, potentially arrogant prick whose competitive urges are liable to disrupt technical decision making down the line. Those types belong in the suite & tie department, not in tech.
Part of the reason is standardisation. There is lots of training given to avoid bias. I think you’ve misunderstood what the parent meant by interview skills. The criteria don’t select for social skills (beyond the basic), but rather for algorithmic skill. However, most day-to-day development will not require as much of it, which is the parent’s point.
I think most people are aware that the system is not perfect, but the process of determining the metrics (as far as I understand it; I’m a fairly new interviewer) is pretty data based. It’s been optimised to hire people without relying heavily on the interviewers all being very experienced (because that doesn’t scale enough for FAANG).
The metrics are known. However, their weights may be unknown.
What is missing from the interview process is actionable feedback.
Some firms provide practice interviews (for pay) with detailed feedback.
The interviews are designed to evaluate algorithm & data structure knowledge and proficiency. Most experienced software engineers have not kept up to speed with such knowledge since they were in school. It is not their fault, as most jobs/projects don't require maintaining such knowledge in order to be effective on a day-to-day basis.
N.B. The interview firm I worked provided the option for a second interview if the candidate believed that the first interview did not provide an accurate assessment of their skills.
In any STEM profession, one's academic knowledge "expires" in 5 years or so. Continual learning & practice (incl. interviewing skills) is a requirement to maintain employability in a field.
> most jobs/projects don't require maintaining such knowledge in order to be effective on a day-to-day basis.
This is common knowledge to any developer - you really don't need the academic angle most of the time.
So... how does rejecting on that basis serve the company trying to hire someone?
One way to describe the rationale is that the hiring firm is hiring for 2-sigma capabilities versus 0-sigma or 1-sigma capabilities.
The ability of a software engineer to "shift gears" to the 2-sigma skill set when outlier conditions (e.g. debugging rare events, performance issues et cetera) occur is a form of insurance against having to contract outside resources.
N.B. I am one of those outside resources that gets called in when none of the FTE staff can resolve a difficult (aka "burning platform") problem.
What are those start up skills?
Understanding the problem
Stating one's assumptions
Verifying one's assumptions
Selecting a data structure appropriate for the problem
Selecting or describing an algorithm appropriate for the problem
Selecting test cases appropriate for the problem
Writing the code
Verifying the correctness of the code
Understanding & communicating the time & space complexity of your solution
N.B. IMO, the best programming language for technical interviews is Python. It provides many built-in data structures and methods that make one's solutions brief and eliminate the need to write a lot of boilerplate code.
>It provides many built-in data structures and methods that make one's solutions brief and eliminate the need to write a lot of boilerplate code.
Could you name some? the most important / handy in your opinion?
vector/list
dictionary/hashmap/hash table
queue
priority queue
heap
Methods/Algorithms:
min/max
insert/delete
contains key
list comprehension
N.B. I've done most of my interviews in C and watching me code has been referred as "watching paint dry" because of all of the boilerplate code that I have to write.
C# has all of this + LINQ (very handy list comprehension?)
Java probably too + it has streams
Idk about other
Many do. However, ease of use is an issue.
Some interviews don't allow you to look up the names of types & methods nor use IDEs that provide pop-up lists of types & method names.
You have to everything in a basic editor w/o IDE support.
Those two algorithms are the workhorses of graph algorithms.
Advanced graph algorithms include Dijkstra's algorithm, Minimum Spanning Tree, Strongly Connected Components, among others.
In addition, dynamic programming (DP) also shows up as a more advanced algorithm/technique in high-level interviews.
This is so wrong. Headhunters are acting like typical bureaucrats and instead of adapting their approach to make it better at finding the actual talent (the whole point of their job), they push for developers to fit their stereotype tests better.
Just like back in the school when we had to learn what professors want to see in essays, instead of learning to actually write better...
Some firms provide take-home problems/projects - typically with a time limit. Their objective is to provide a more realistic scenario for writing code while evaluating the candidates technical skills.
The interview requirements & assessments are driven by the hiring companies and not the headhunters.
Scaling technical interviews of this kind has created $1 billion companies recently.
Technology employers want an unbiased assessment of a candidates skills - like any other firm.
And it's exactly what drives the bureaucracy, the transfer of responsibility. All you need to do is blindly follow the request in the most defensive possible way and no one will ever be able to accuse you of screwing it up. So you have headhunters who just follow the clients' briefs, client's HR follows their playbooks to cover their asses, and as long as they all get paid in the end of the month, who cares if you miss to hire some really talented people. It's developer's mistake, they should have prepared better for the test.
And I'm not trying to accuse anyone here of being guilty in particular, just to point that the whole process of hiring is deeply flowed by the very design. On the brighter note, it motivates a lot of really smart people to stay out of big corp world and go indie, which is actually great...
Unbiased assessment of candidates for "apples to apples" comparisons
See if the candidate has skills deeper than typical day-today skills that can called on if needed
Demonstrate an understanding of performance trade-offs that have profound economic impact on the delivered solution(s)
Demonstrate the ability to create solutions beyond "textbook" solutions when required
Screen out quickly candidates who lie about their technical capabilities on their resume
I hope the above list is useful and/or helpful.
It seems that -- to use some old AI jargon -- the difference is between "forward chaining" vs "backward chaining". Forward chaining is all about the set of tools and techniques to work towards a variety of problems. Backward chaining is all about starting from a specific problem and and curating the best tools and techniques.
Very experienced programmers will have spent most of their time Backward Chaining. New programmers will have spent most of their time focused on Forward Chaining.
Here is where I see the disconnect: it may take days to learn a new tool or technique. However, it can take years to learn how to curate the best tool or technique. Long term thinking is undervalued.
CS 9: Problem-Solving for the CS Technical Interview
https://web.stanford.edu/class/cs9/
I went in-person, but remote learning could work. I highly recommend choosing somewhere where there is code peer-reviews and instructor reviews. Self-learning is harder than it looks when you have a family.
When I recently was hired, I noted they specifically wanted cloud programmers, not local desktop programmers. Therefore, make sure you choose a bootcamp that works with Heroku or AWS or Vultr, etc, to get that exposure.
Also, consider going to local meetups that focus on coding (meetup.com or other channels). Listen to what they're talking about and what the latest trends are. Some even offer mentorships.
You can do it. (And after you've done it, help others.)
I don't see how you can have a mere two job interviews (that likely have many applicants each) and then arrive at this conclusion.
How many jobs have you applied to? What are you doing to stay up-to-date or get back up to speed?
Apply to some places you wouldn’t necessarily even want to work at, because they might surprise you by being better than expected, or meeting someone you think would be a great manager or colleague.
Also, message a lot of recruiters, both independent and those at specific companies. Recruiters move around a lot and may refer you to places you’d never think of, and jobs that aren’t well publicized.
Good luck! Please post an update here in a few months.
Ever since then, even after getting a job as a program manager at Microsoft in the mid-1990s, I have continued until this day to assume that I would be fired and would have to find another job. Which means that I have studied every day for almost 40 years because I knew someday I would get old and less easy to hire. For the last two decades, I ran an extremely lucrative business, yet continue to keep my skills up.
But I haven’t heard from you is that you have tried to adjust to the market. The simple fact is, if you want to get paid what programmers get paid these days, you need to know what programmers know these days. After all, you made a good living in the 1970s because you had a special set of skills for that era. The easiest thing for you to learn at this point would be database backed web development, perhaps in python or (my favorite), Go. You could learn what you need to learn part time in about a year.
I have always studied for one career path, and a backup. The thought about the backup was that if I couldn’t get what I wanted most, I would still have something I enjoyed. So I keep up on C but specialize in Go, which was a bit risky 10 years ago.
Another tip is that I have chosen areas that I like, but that are also somewhat challenging. For example, when I started out the first thing I did was learn assembly language because I knew it scared other programmers. Because I didn’t have a degree, I wanted to choose something that would make me irresistible to hire without a degree.
Finally, I thought for myself. When Microsoft called to hire me 25 years ago their own people were fleeing like rats from a sinking ship, because it appeared from the press at the time that Microsoft was losing the Internet wars. My own coworkers were selling their stock like crazy when I joined, and they said the good all days were gone. When I left four years later, my stock options had appreciated 1300%. It wasn’t that I was blindly supporting Microsoft, it was that I chose to believe my own eyes as opposed to what people who had nothing to do with the company were reporting about it.
When I left Microsoft it was during the dot com crash. I bought a small company that provided a service to eBay users and it made in the two digit millions over the next 20 years. My former friends and Microsoft were polite but uncomprehending when I did it, because there just wasn’t any concept of charging for websites at the time. I risk a small part of my retirement fund to buy the company, but not enough that it would’ve hurt the family drastically if I failed. Measured risk.
Modern market seems to ask from programmers something other than programming. Peter Norvig in the interview to Lex Fridman mentioned that today software is made of building blocks from Internet, not designed from requirements as it used to. For some reasons companies prefer to endlessly lose in dependencies wars rather than have good arguments for why something is developed and something is taken from outside.
The OP problem is rather pervasive, there are some pretty good specialists who can't find a position in months and years because market requirements seems to be rather odd. People who obviously can program and have experience solving problems for business find themselves expected to know technologies du jour when those could be some questionable rehashes of ideas of previous years.
> if you want to get paid what programmers get paid these days
The problem is today's programmers are paid for knowing - preferably early - the hot technologies instead of analyzing and solving the problems with good tools. If a person has enough experience, he may understandably question the kind of a hamster race, so these modern technologies look poor for him.
Also, I chose some hot technologies that I could tolerate because I understood that’s just where it is. I also learned algorithms on my own and understood when to apply them. If the market asked for hot technologies, you shouldn’t have to adapt. Otherwise you should accept a lower paying job.
Yes, and that's the problem for programmers - those who'd prefer to solve problems better in the long run, which costs more in the short run.
In other words, there are programmers, who don't see a point in learning something which isn't really novel and isn't really progressive, but which is required to get a job. Some go for lower salaries, those are sometimes much lower - that's why people with high salaries e.g. from FAANG can be seen as delusional about their actual skills when compared with someone 1/5 of their salaries and stronger design abilities.
The problem - and the associated question - is what to do in the long-irrational market. One answer is known :) but it's not a particularly good one. Hope there are better ones -
> I chose some hot technologies that I could tolerate because I understood that’s just where it is
Sometimes market wants more than you could tolerate - emphasis on the last word.
But then the interviewer hit me with a topic i didnt cover. wups!
True with most of the top paying companies. I’d suggest doing a 100 problems on LC (try the subject study guides first) before interviewing again.
Doesn’t sound fun but that’s how it is now. The bar is high for all candidates - at least for top paying companies. Haven’t seen one yet that lets you skip the bs unless you know someone high up.
LC is https://leetcode.com/
There are other similar websites for practicing interview questions. The important thing is to use at least one of them.
I think OP is expecting a level of competence from interviewers that simply doesn’t exist anymore. He’s from a time when the initial conversation would be engineers only and absolutely focused on past projects.
No. OP has not realized that the job market has plenty of charlatans who can talk well, but can't do the job.
There is plenty of evidence that this just isn't true.
Fortunately, that hasn’t always been the case, otherwise I wouldn’t be in the job I am today. But that does seem to be the exception rather than the rule.
This actually makes the problem much worse because the only people who are acing these tests are people who are investing their time in acing these tests and not people who are actually good at their jobs. If you found a job there is little incentive to do any thing at work, and you are just better off continuing to practice interviewing further, so that you can quit to grab another 50% raise in 6 months.
Ironically these kind of people are considered to be in high demand. Most of them haven't done one single turn key project their whole lives, and wouldn't know or even stay to do one if needed. The real ones who have proven track records of delivering projects aren't even considered hiring because they don't know a dozen ways of inverting a tree.
The world is an unfair place, most companies with these hiring processes, have moats which are pretty much an infinite gravy train, so its ok to do all this. This is the game, We just have to deal with this as we go.
Just recently two of my friends switched their jobs. They may have spend maximum of 30 mins to prepare for their interviews in total. One is a manager and other is recruiter. Their interviews were quick and didn't take more than 3-4 hours each. Not only that they claim they enjoyed the interview process.
Our interviews are so grueling, we need to spend hours preparing for our interviews. We are treated like liars and need to proof that we are not lying. I don't know why we take this abuse and how we can fight it. It has been really frustrating for me lately.
I'm not trying to sound like a smartass. This is a real problem. I've been bitten before by candidates with big stories to tell about their past deliverables, but were a fountain of bugs once they were hired. Sometimes it's easy to tell, sometimes candidates background is a bit different than yours so you can't easily judge if them writing three customized discombobulators for flux capacitance use cases is something challenging or not. What is more, barely anyone writes alone. We almost all work in teams, and it's easy to claim N% of contribution to the code the team has written. In many cases you will be able to somewhat confidently speak about other people's code since you've been reading and reviewing it.
At AWS, however, it’s important to look at the well-roundedness of the candidate. It doesn’t matter how much code you’ve delivered if you’re an asshole in meetings.
Being a self-starter, earning the trust of your peers, and being highly-focused on customer experience are all soft skills, but are critical to ensuring success in the role. Hiring the wrong person is costly, and even then, many people at AWS wash-out in the first 2 years.
Soft skills and collaborative working habits are MORE important than writing code. Code can be taught. Being collaborative and thinking-like-an-owner is much harder to teach.
1. Don't focus on frontend work. There are large numbers of young people going through development bootcamps and there specializing in front end work.
2. Maybe focus on devops. Right now, in New York City, the top devops people are charging between $200 and $300 an hour. And, in my experience (and with some notable exceptions) devops people tend to be older. But this strategy would require you to push yourself very hard to come up to speed on modern devops, which is a vast subject. It really depends on your own self-discipline. If you don't know much about this topic, you'll need to study 12 hours a day for 6 months to come up to speed. But presumably you already know some of the languages that play a large role. Ideally, you already know Python, as Ansible still plays a large role in devops.
Personally, if I was presented with a leetcode interview (I was interviewing a few months ago), I bowed out pretty damned quickly.
You really need to catch up on the tech. In addition to what the other comments are saying, look into contributing: https://github.com/MunGell/awesome-for-beginners
Obviously, FAANG is for some people. You seriously need to have a very hard think if that is you.
Some roles at Amazon fit that model. But most roles at bigcorps are where you go to coast, vs startups where you have to actually show results and put in a full 40 (at least) hours a week.
Maybe I’m lucky, but the hiring process is actually quite involved from what I’ve seen, and they have some very specific processes that they go through to try and make sure you’re a good fit for the team and will likely be able to do the job well.
Maybe some of the more dev-focused jobs do have a shared coding environment that they want you to use for the examples they will want you to go through, but they also tell you in advance what that environment is so that you can play around with it before the interview and so that it won’t be totally alien to you.
Don’t overthink this and don’t think like a technologist. If you can write small declarative code islands to put text into a browser you can get hired for six figures. You have to be willing to be trendy and preference tools over code while working with people in their lower 20s who may or may not value programming experience.
With one group you may be a specialist now while with the other they may always have a proof you are not a true scottsmann if staying a scottsmann is their full-time job.
Bias - unconscious or otherwise - is real. It sucks but you may need to try to work around it and play the games. Don't lie, just don't mention it or bring it up.
Good luck.
It isn't necessarily bias against age; it's bias against "overwhelming experience" that scares hiring off, for various reasons. But the result is the same.
This seems like the obvious problem here. You need to make sure that you have skills that are relevant for the current job market. If you're an experienced developer then it shouldn't take you very long to get up to speed, but you can't expect to just not learn anything new and walk into a job.
I would recommend picking a technology, spending 4-6 weeks learning it (in this time you can also produce some sample project code that you can use to convince potential employers of your skill), then start applying for jobs.
I suggest looking at startups as I imagine the number of applicants is much less and interviews are less "leetcode"-oriented. Also as someone else suggested, you can look for consulting work, then if you want to transition to full-time you will have up-to-date experience.
Do you have anything you want focus on or do you pride yourself on being a generalist?
Architect, team lead, or pure development of a system from day to day?
And business domains that you’re especially familiar with or interested in? E-commerce, SaaS, aerospace, business systems, data engineering, etc.
Give us a little more and someone here might take an interest and be able to help directly. The start of the year generally sees an uptick in hiring due to some pent-up demand from the previously 30-45 days when a lot of business processes slow down.
also can help in most multimedia projects involving studio equipment, audio sampling, video processing, MIDI software, and old-school graphics.
The second suggestion is present yourself as a solution to an employer's diversity issue. You would have to lean very hard on this diversity angle to get past the recruiter and the HR office. Once you reach the actual decision maker switch to the benefits offered by a long and diverse career.
Good luck
My last experience was Facebook contacted me a few times, which I blew off because I knew they would never hire me. Finally I told them "You know I'm over 60, right?" and they got off the phone and never called back.
I'm thinking about doing some part time programming on one of the job sites. I'm not thrilled with throwing PHP together, so I haven't tried yet, and program for fun now. In the last couple of pandemic years I've learned Rust, Flutter and lately Blazor, which I just gave up on today. I installed Nodejs to learn React this afternoon. I'm looking for a pleasant way to earn money building front ends.
Not trying to say its true or false... Just saying that it's no different than race or gender.
I was aware of Mark Zuckerberg's comment which is why I brought up my age.
“I want to stress the importance of being young and technical,” he said. “Young people are just smarter. Why are most chess masters under 30? I don’t know. Young people just have simpler lives.” -- Mark Zuckerberg, Stanford University in 2007
https://www.quora.com/Is-that-true-that-Mark-Zuckerberg-dont...
Edit: I believe you when you say you don't age discriminate. That's because everyone is watching everyone else, including internal lawyers, to make sure you don't so as to avoid law suits. However, the person that called me was on a private phone call with me that wasn't being recorded, so they could get away with it.
[0] https://www.2700chess.com/?per-page=100