Dear new developer,
It’s a crazy market right now for developer talent. But I still see plenty of new developers struggling. I also see some mid and senior developers struggling. “What? I thought senior developers had it made!” you might be saying to yourself.
Unfortunately, one can fall into the trap of the expert beginner. Or maybe one is employed but works alone. Or even just ends up in selecting and working with a technology with declining job prospects (like emberjs or perl).
If you are getting interviews with companies you want to work for, but aren’t getting offers, you might be in such a situation.
This is harsh, but this is the job market telling you your current skillset is not desired.
I have definitely been in similar spots, often when I was the most senior technical person at a smaller company. It has affected my career, permanently. I have had what I’d consider a fairly successful career, including stints at big companies, founding multiple startups, running teams, succeeding as a contractor and more. It’s all on my LinkedIn profile.
But I doubt I could ever get hired at a company like Stripe, because I don’t have the experience they are looking for. And, I am not willing to make the financial, time and personal sacrifices to get it. In the not too distant past, I interviewed at GitHub and didn’t have the ‘scale’ experience they were looking for, so they passed. It happens.
Now, if you are okay at your current position, then no worries.
But what if you want to make a big move to one of those companies who have been turning you down?
What steps can you take if you find yourself in this situation?
There are a few options to move forward, none of them super easy. But if you can commit to one of them for 3-6 months, I think you’ll be in a better spot.
Suppose you want to gain expertise in modern cloud and devops engineering. (If you are interested in mobile development, compiler design or IoT, the same principles will apply, but the details will differ.)
Use new tech at work
Find some way to use new tech at work, even if you don’t have permission to. Find a way to inject some into a project at work. Be aware that this may burn some bridges; I’d start out carefully, perhaps on a less critical component.
There may be a data processing program you could write in golang, with tests and CI. You can set up GitHub actions to automate something. If your company doesn’t test, write some unit tests and automate their execution. Find an AWS service that does something your company needs done and use it.
Then highlight that experience on your resume and discuss it in interviews.
Study and read
Get a certificate in AWS or take a class in a backend or data engineering discipline. This will force you to learn new things.
The certificate or class won’t be a guarantee of a job but will help on the resume.
Udacity and Coursera have lots of free/cheap classes. If you want fundamentals, check out MIT OCW.
Find an open source project to help with
Pick a prominent open source project in a discipline you want to improve in and help the project. You can start by trying to fix small bugs or docs issues.
I’d commit to this for a couple of months and then you can put this on your resume.
If I were looking for a ruby on rails job, for example, I’d probably try to commit to a second tier rails-affiliated project. The big big projects like rails get a lot of attention, but there are some gems out there that are super important that don’t. (Devise, nokogiri, standard.rb, etc.)
Narrow in on a big project and contribute to that. Code, docs, tutorials, issue triage, bug reports, etc. There’s lots of tedious work that you can help any project with.
Oh, and check your employment agreement to ensure you won’t be violating any legal agreements.
Consider who you are applying to. Lots of folks want to work at a FAANG or other prominent tech company; they’re swimming in resumes. Be real: are you willing to put in the work? If not, such a company might too big a jump from your current position. Not for your talent level, but for your experience.
You could try aiming for smaller companies or consulting operations that might have lower standards and fewer applications. If hired, you’d still learn a ton and make good money (even if not the eye popping amount available at the top-tier companies). You could even plan to jump to a FAANG or Stripe-like co after a few years.
This crawl-walk-run approach has the least impact on your income level and time.
To find such companies, look in your slack channels, regional job boards, or online communities like the HN hiring thread.
Start a side project
Set up a side project. But you have to really commit to it. This will give you a chance to try out many of those modern best practices that you might be missing right now.
Unless this is a real project with real users, it probably won’t be as beneficial as some of the other options, but might be more fun.
I want to acknowledge that you have to have a certain amount of time and privilege to undertake a larger project like this. Not everyone does.
Researching and giving talks at meetups and conferences is a great way to get a better name for yourself. This won’t give you production level experience, but might be helpful in other ways, especially if you are willing to move into a role that isn’t pure engineering. This can also be helpful to you in finding interesting companies. Many folks at a meetup will be employed and interested to talk to a speaker about their company.
I have thoughts on how to speak at a meetup.
Look for a tech-adjacent position
While you might want to make a move as a software engineer, sometimes the bar can be, if not lower, different for tech-adjacent positions at the same company. These are related to coding, and coding can help you succeed in them, but writing code is not the main job occupation. These include:
- Customer support/tech support
- Product management
- Quality assurance/software development engineer in test (SDET)
- Sales engineer
Be aware this can have career ramifications. You may be able to move back into pure software engineering if you keep your skills sharp and do so within a year or two, especially if you are early in your career.
Support for internal transfers, from say, customer support to engineering, varies on organization and manager, so it’s hard to provide general guidance about that option.
On the other hand, you may find you really enjoy product management, customer support or the other type of job you took.
You can combine some of these approaches, but don’t try to do them all. It’s better to pick one and commit more time and effort to it.
At the end of the day, you’re looking for ways to improve your skillset so you can get out of the position you are in and into a better one. That’s going to take some effort outside of your day job. Remember your end goal and stay motivated and you can make it work.