Ask HN: DevOps Career Advice for an Oldy
I'm a late 30's devops / SRE guy who previously worked as a sysadmin in financial services. Suddenly, the jobs in my area seem to ask for only 5 years of experience of Python, AWS, Kubernetes, Docker and CICD, my salary demands are too high and I'm being interviewed by people in their 20's who think I'm an idiot. I'm struggling with the whole process I have several paths and I was hoping you could pick what YOU would do:
A) Continue learning more Python - I'm good but I don't know the math and sorting questions I'm getting asked. Continue with AWS. Take a lower-paying job with folks 15 years younger just so I can pick up Docker, Kubernetes, etc. That's a 30-40K pay decrease in New York.
Downside: I have grey hair and I think I'm competing with cheaper people.
B) Go independent contractor. I have done this but I am very bad with marketing myself, and my network isn't wide enough to score jobs, so I'm stuck with recruiters. I like this the most but I'm also struggling.
Downside: Everything else is perfect, but my marketing skills are 0 after all these years.
C) Go management. I've already been a manager on the infra side. I shied away in future roles thinking I preferred hands-on (even though I got accolades as a people person and a well-organized improver of infrastructure).
Downside: Narrow job listings to choose from, also weak at marketing.
What would you do and why?
49 comments
[ 3.7 ms ] story [ 23.9 ms ] threadThen showcase you are deeply familiar with these technologies. If you already have yrs of production level experience with configuring + managing VMs, kubenertes isn't tooooo much more complicated after you know basics of docker.
And if you aren't familiar with Docker, it is is something an experienced dev should be able to read about + toy with and feel pretty comfortable in in a few weeks.
Then once you feel confident in that all these tools are just all have analogies to the tools you're working with, showcase those analogies in your interviews and you should be good (e.g. "I haven't used kubernetes, but I have worked on tooling to deploy applications on VMs")
1) What is motivating this change? Are you currently unemployed, looking for new work or rather concerned about ensuring your employability over time? Are you looking to earn a higher salary?
2) In an ideal world, would you want to learn this new technology or would you rather stick with building your existing skills / working with tools you are familiar with? Are you willing / interested in learning these tools outside of work, or would do you have other engagements that take precedence (family, non tech hobbies, etc).
3) How much risk are you willing tolerate? Do you have a big enough safety net if the independent contractor thing doesn't work? Maybe plan out this scenario on paper, and do some rough math if possible.
4) You are well within your right to avoid management roles (or anything that doesn't serve you). What are your goals with work, pay the bills even if the work is tedious, emotionally challenging?
My apologies if these questions aren't helpful for you. I'm just yet another obnoxious 20 something in tech.
1 - Contract is ending soon and I'm scouring for a new one or FTE role while wading through strange interviews and lots of recruiters. This sort of gives me a sense.
2 - Outside of work is fine! I already spend 3-4 hours a week on personal tech reading. The issue is, you can read Docker all you want - companies want to see it in production. What do they ask?
"How many years of experience do you have in production with AWS/Docker/Kubernetes"
3 - A fair amount of risk
4 - Pay the bills! For the next 5-10 years.
No, it's helpful. Thank you.
In infra roles, there is little "business side" of the work and hence could be more easily commoditized.
I work at a big tech company and the staff engineer in our org has been at the company for 4+ yrs and has A LOT of domain expertise in ads, and institutional knowledge about a lot of different systems in the company.
Domain expertise is directly transferrable to some companies, and having a lot of institutional knowledge is also a good selling point IMHO -- e.g. asking good questions in an interview about a companies stack could show that you can very quickly understand some nuances of the types of systems they built/are building since you've done something sorta similar.
I've also seen us hire pretty senior people with a good amount of domain expertise but didn't know ALL the shiny new tools, but did show they were keeping sharp in SOME of them.
I'm in my 40s with 20 years experience in NYC. Applied to a handful of positions, but was politely turned away. I suspect age is a factor, but of course no way to prove it. I'm considering shaving 10 years off my resume and see how that goes. I've done management successfully but it was stressful, and I went back to development.
To beef up my list of skills, I'm starting to expand into areas that are natural progressions from my current set. For example, I use C# and Asp.Net for backend work, so I began using .Net Core; I use React on the front end, will add Redux; MySql/SqlServer for the database, will start working with Postgres; AWS for the cloud, will research Azure.
I'm not sure if I should be adding a whole new bullet point, such as learning Erlang/Elixir, Python/Django, Ruby/Rails, or something completely different.
Right, I am revising my resume currently, and for the first time I'm considering dropping off my earliest jobs - both because they were a long time ago, and because what I was doing then is more or less completely irrelevant to what I would want to be doing next.
My thought, looking at the senior developers around me, is that adding whole new bullet points is good.
Businesses want DevOps, no one wants to pay for it (as you point out, "Take a lower-paying job with folks 15 years younger just so I can pick up Docker, Kubernetes, etc. That's a 30-40K pay decrease in New York."). The market has spoken, go where the dollars are (and the on-call rotation and fire drills aren't). Get paid for what you know, not selling each hour of writing code or infrastructure via DSL and the PagerDuty rotation.
OP: I'm happy to connect you with some NY specific recruiters for the job type I mention.
What tools are you using in your current devops position?
What type of jobs are asking math and sorting questions to a devops person? Also maybe find an algorithms book and brush up on those skills.
And maybe spend a few hours a week working on creating some sort of environment on AWS that demonstrates your ability to use the tools that are in-demand. You could probably even have that as a portfolio item to show off during your next interview.
I don't think you need to take a lower-paying job for a few years just to pick up those tools. Going through a couple of books should be all that it takes especially if you're already in a devops position.
I'm younger than you (25), but I already flip-flop between higher paid jobs that use the skills I already have, and slightly less well paid ones that give me the opportunity to learn new skills. I figure that's just the price of staying competitive in the job market.
I come from more of a dev background, and I've looked into learning devops stuff. I think you'll find that your more traditional ops background transfers quite well to the new cloud environments. There's definitely a whole load of stuff around networking and stuff like that that I have no clue about.
I suspect if you put a bit of effort (a month or two even) into learning the new shiny AWS/kubernetes/whatever stuff, then you'll suddenly go from someone who sounds like they don't know anything (because you don't know the acronyms, etc), to a someone who can impress everyone because their knowledge of the new shiny stuff is backed by years of experience in a similar domain that most people don't have.
anyway, my advice: don't settle. you are a senior. find a job that is willing to accept you as a senior and acknowledge your ability to learn quickly and adapt. demand a high salary (higher than what you're making now) with confidence.
it may take you a couple months to get up to speed, but you have seen it all before. you know what to look out for. you can smell the bullshit out there and you are responsible enough to have autonomy. you don't get this with newbies. this is what a company is really paying you for.
in the meantime, start building environments using these tools you are unfamiliar with. show you have initiative and can talk about these tools for when you get interviews. it may take a month or two until you find the right job. it's hard, but be patient.
as for management, well that's up to you. I tried it once and sucked at it, so I'm fine just being an engineer :) p.s. also check out terraform
Learning kubernetes is good, but it doesn't replace understand the many ways a database migration is going to fail.
Improve your marketability. This in turn means improve your tech skillset as well as impression handling.
You don't need to take another job to learn fundamentals. Python is one the easiest languages out there with a huge community. Write a basic flask app, dockerize it, hook it up to AWS ec2 (or serverless lambda if u wanna be "leet" lol) and attach an LB and autoscaler. Get a domain in route 53 and an s3 bucket for static assets. There you go - 80% of all devops work in a weekend. If you wanna make it a three day, learn Terraform so you can now put "infrastructure as code" on your resume.
Now for the 'soft' skills.
Put this project online. Write about it on a blog. Make sure if you google your name it comes up. Get a twitter and linkedin and post cool projects things you like. Mention the cool thing you found during this contracting gig. Go to a meetup, share the project there. Share something interesting you did. Speak in public.
All of this will help you refine who you are and what you know. This in turn will give you greater control over the impression you make on people.
Double down on your programming skills, cloud management and brush up on the infrastructure components. Your age / experience should actually add to your value. Subnetting, firewalls, routing, security baselines are things that are often overlooked by new people starting DevOps roles. This option also lends to doing consulting and contracting. You day job might earn you a bit less, but you'll be building out your skillset to use.
One of my biggest struggles as a manager is the ability to let go and stop trying to solve problems on my own. I had to work hard to realign the things about my role that are gratifying. If you measure your value by the code you ship, the tickets you close or the technical problems you solve then the move to management might be tough.
Do you find roles through old-fashioned recruiters or business networks?
I have had several conversations this year with project manager- or dev team manager-types that lead me to believe that non-software companies are beginning a mass move into cloud services.
I hear AWS and Azure mentioned much more than Google Cloud Platform (GCP). Job search platforms seem to return job posting result counts that match that ( AWS >> Azure >>>> GCP ).
I have also been surprised to have hiring managers refer to Java/C# programmers as a pure commodity in non-software companies. In one case, a project manager for technical dev in a nationally (US) large insurance company said that they mostly just ask one of the large body shops for three resumes and pick one almost at random.
Based on the above and your financial services experience, I would stay in financial services to leverage your industry knowledge. I would try to shift into AWS (or Azure if you think financial services companies would prefer Microsoft to Amazon) and Kubernete/Docker and get deep experience in effectively using those techs. Try to avoid taking a lower paying job unless you have to?
I'm really torn about programming advice. I love coding and just writing software, but I think non-software companies see coders as low-value employees. Of course, that is a total over-generalization. I don't think having some magic number of years in Python is particularly game-changing.
I have discovered that in my region that tech managers are making salaries at least 25% more than programmers and often 50% more. Personally, I am having some second thoughts about spending the last few years as an individual contributor rather than making the jump to management. Also, the highest, most surprising salaries I have heard all belong to technical managers. In some cases, I have confirmed manager base salaries that approach 3X what developers are earning. Mind blown. However, I will also say that the few folks I know in this position were reasonably successful software engineers that moved into systems architecture and with some consulting background. So part of what made the salary happen was understanding how to make a value-proposition pitch to a specific industry need that was acceptable to hiring orgs. Meaning, patio11 is again right - charge more.
https://news.ycombinator.com/item?id=19164389
you could turn it into a demo to show during interviews.
That is my plan.
I think this contributes to the obsession with tools by my peers rather than obsession with the goal and why I hope to move into a more SRE-like role at some point.
I wouldn't take a lower pay job, and I wouldn't move into management. In your shoes, I'd rather take the pay cut while consulting over carving a new title on my resume that may influence the rest of my career.
Take time to shore up your finances. Get out of debt and/or reduce expenses if possible. The lack of freedom in this area is what causes people to do things in their career that makes them unhappy.
Once you get past this, don't stop learning. Don't be afraid to expand outside of your immediate focus - the market decides what is valuable, not you. (for reference, I'll be 42 next month)
Don't be afraid of onerous job requirements. They always are, and they're often BS. Kubernetes was announced in mid-2014, and didn't pick up steam for a couple of years, so it's virtually impossible for someone to have five years of experience. Docker isn't much older.
What's tricky is combining what you've learned at home with what you didn't do in production at work. In finance, most places are only beginning to use cloud services and barely tickling Docker (at least unless you are in cutting edge groups). And yet hiring managers want to see 5 years of experience in AWS, Docker...
It's not an issue to learn it, I already have started.
It would do some good to learn modern CICD. Take a look at CircleCI and see if you can wrap your head around it. These days the tolerance for a developer that can't build/deploy their own code is getting low.
Also while it's a good idea to learn Docker/Kubernetes, its primary use-case will become making older applications easier to manage on cloud providers. The demand for people who know Kubernetes is still increasing however the skillset is becoming a commodity.
The current trajectory for new development work is leaning towards solutions like App Engine and other cloud-specific solutions. As a python developer I'd pick up any python-centric offering from AWS and GCP and make a weekend project out of it.
I'm sorry that the jobs you've hit up made you feel old, but please keep in mind that that is more a property of the places where you've interviewed rather than a property of you. Plenty of places will have interviewers in their 40s or 50s if that's what you're after. Maybe start looking at more established organizations rather than the nimble upstarts?
It's probably expected that any sysadmin style role knows their way around Python and the other stuff you mention, but nobody is an expert on everything. It's probably more likely that you are priced out rather than skilled out if you've done this for a while. That's not strange in itself. Experience breeds specialization, and the more specialized you are the longer you will have to look.
The answer is never to sell yourself cheap. Find out what your specialization looks like and find someone who might find it valuable.
.. there's a startup boom in NYC. And I think startups prefer young, dynamic types on the cheap? A buddy of mine from California says this is the Silicon Valley mindset creeping in. I'm not so sure, but there is something about startups and not hiring too many older folks.
Here's some general tips from the business side:
- When you are struggling to compete, differentiate yourself and find a smaller, more specialized audience. Don't attempt to compete head on unless you believe you have an upper hand.
- There are skillset that are always subject to the whims of the day but there are also skillsets that do not: among them are (1) the ability to sell yourself and (2) the ability to manage and motivate others. These two skills have stood the test of time and if you commit yourself to at least getting better at them, so will you.
I'm a developer in my 30s who retrained after being a lawyer. I flat out tell people I'm not that great a developer. I have never gotten a job from having to prove my technical skill and have not yet needed to. I rely on my network, find a specialized niche market (startups that have just figured out how to make money but don't yet have a product orientated tech leader), and I impress upon them non-coding abilities (I ask them a load of questions about their business and operations and talk about strategy, product, organization challenges - things they don't get from a typical developer candidate). You should not adopt the same strategy but maybe think about what non-technical skills makes you differentiated and where those skills might be needed most.
FWIW I'm a self-taught developer who used to teach HS math before making the switch. I've found that both of my developer offers were partially to heavily influenced by my previous career. One company is ed-tech (heavily influenced) the other not so much, but enough of a ed-focused mission that they found those previous skills of mine useful.
I share this because I think previous experience is one of the differentiating factors for folks looking to land their first developer role, and should be something they consider how to best leverage when looking for opportunities (which is somewhat off-topic from OPs question).
The main point is still to leverage experience and skills that are valuable outside of technical ability that might be out of fashion in a few years. It doesn't matter if that experience is in teaching, legal or just being an extremely likable person.
I routinely see a lot of articles that are over 10 years old making it to the front page of Hacker News. Do this mental exercise: Imagine writing a long form blog article about what you are currently working on / improving about yourself. Imagine posting that blog article on Hacker News in 10 years time. Would it get a good amount of upvotes?
* Staying focused on long-lived, core technologies, C++/Java/Python. I'm not too interested in chasing AWS/docker/Kubernetes or anything with a half-life approaching that of a js framework.
* Need to add new skills. For me, coming up to speed with kdb+/q. I realize that while I have gained breadth / experience with my skills, it had been too long since I have added an entire new "bullet point" / category to my resume.
Joking aside, as others have mentioned, you'll need to differentiate yourself, and for each person, that's different. For me, I found that I took really well to Docker and using Python to talk to APIs and AWS. I then started showing the world how well I knew those things by building a series of open source projects which leverage that technology. And--this is the fun part--each project was an iteration that built upon some of the things which I learned in the last project. For example, I built these over the course of several months:
- https://github.com/dmuth/splunk-network-health-check (Uses Docker and Splunk to graph your network quality)
- https://github.com/dmuth/twitter-sentiment-analysis (Uses Docker, Splunk, and AWS to graph Twitter sentiment)
- https://github.com/dmuth/splunk-lab (Uses Docker and Splunk to stand up a generic log ingestion platform which is highly configurable)
So maybe Splunk isn't your thing and Twitter isn't your thing. Maybe you're more a fan of ELK and the Facebook API. That's fine. The trick is to carve out some kind of interesting problem to solve, solve it, and publish your results upon GitHub. Don't worry if others have solved this before, it's more about YOU solving it, and showing the world that you can solve it. Then take it into an interview and show it off--people will LOVE that, especially if you have a README with really slick looking screenshots (presentation matters).
My email is my username AT my username DOT org. Feel free to hit me up if you'd like to chat further, OP. (Or anyone else in a similar position)