I have been working as a software engineer for the past 10 years (just after getting my degree in Computer Science). I like to believe I have a solid understanding of the fundamentals of programming and software engineering: from automata theory, to compilers, generics, OOP, functional programming, SOLID, MVC, etc. I have read almost all the "N books every software engineer must read". I have been working with multiple programming languages and frameworks and in a variety of sectors (fin tech, e-commerce, automobile, etc.) While I can setup servers and databases (e.g., the typical nginx + mysql + ssh keys + ansible + bash scripting + a bit of terraform), infra topics is not my A game. I have been looking at the market (I would like to switch jobs) and 9 out of 10 job descriptions for senior backend engineers include in their "must" section knowledge about infrastructure topics such as Docker, K8s, GCP/AWS, CI/CD. Five or 10 years ago such topics were stated in the "nice to have" section of tech job descriptions for senior software engineers. Nowadays, it seems that companies care more about you being able to pack your code in a Docker image using GitLab CI/CD pipeline and write yaml files to describe the state of your K8s cluster.<p>Companies seem to value much more knowledge about GCP than functional programming or OOP. "Oh, you know why one should not parse HTML using regular expressions? Well, that's cute, but do you know how to setup oauth2-proxy in our K8s cluster? You don't? Oh well, thank you for coming."
Who told you that?<p>Whoever didn't hire you wasn't looking for a software developer, they were looking for a devops guy. Its <i>nice</i> to know devops as a programmer, and I wish more programmers did, but most programmers I know actually flunk on anything sysadmin related.<p>If their criteria is devops, but they're looking for a programmer, they're going to get some dude that only knows Javascript and footguns the entire company into an early grave.
I've been building software for 20 years, and it sounds like you're a better programmer than I ever was. Email me at "[my username]hn@gmail.com" if you're interested in a job. I have several opportunities, one of which is easy and barely full-time as the sole employee of a cash cow, but others are more in-depth and technically challenging.
> but do you know how to setup oauth2-proxy in our K8s cluster? You don't? Oh well, thank you for coming.<p>I hate shit like this because I can figure it out when i need to so it, it's just not something I've done in the past. What's worse is I'll never even get asked this, my resume will just quickly be screened out.
> companies care more about you being able to pack your code in a Docker image using GitLab CI/CD pipeline and write yaml files to describe the state of your K8s cluster.<p>I can do that and more. ... However, a lot of companies that are dealing with deployment at this level are probably doing it wrong. It is also not that hard to learn how things should work. Difficulties arise in situations where they don't :-)<p>When I was vetting resumes for a senior position, I was astonished by how few of them knew any of the basics whether it's actual development or deployment pipeline automation. They just knew how to go through a standard set of steps.<p>That's neither here nor there, but with your skills, it is not hard for you to buttress your knowledge in those areas if you care (and, you'd benefit from your foundations) or find a position which focuses more on development than pipeline building.
A lot of companies just put up "laundry lists" of requirements when writing job ads. Often HR asks the developers / team lead what they are looking for and which qualifications a candidate should have and they just respond with all the tools and languages they use, which then all end up in the job ad. Also, many companies that mostly use legacy tech put put modern tech keywords in there to appeal to candidates, since most developers find it more "sexy" to work with K8s and Docker than an outdated Jenkins & Tomcat based workflow.<p>I wouldn't be too concerned about that, you can have a look at the most important technologies and get a basic understanding of them, which should be enough to get you through most interviews. Often they're just part of the workflow and most developers just know enough about them to fulfill their role. For example, most devs know how to create a simple Dockerfile, but only few know the internals of container networking, scheduling etc..
You specify job postings, are you also relating feedback from actual recruiter screens or interviews? They may ask for everything and the kitchen sink in the posting, but not really care when you talk to them. Of course it’s nice to find a developer that also knows all the deployment details, but that’s a bonus skill.<p>I can tell you we’re looking for candidates like you.
As a senior engineer, I think you can learn the basics of these topics well enough to interview within a few weekends. Seriously. And you may know the internals better than people who "have 5 years experience with them."<p>Study 2-3 of these and make some toy projects, then throw them under your skills section on your resume. You will be fine!<p>P.S. Email in bio if I can help more!
Personally I'd define a Senior Software Developer in terms of whether you need your hand held to work, or whether you're doing the hand holding.<p>Knowledge of a specific niche, domain, or technology doesn't really define you as a Senior: your ability to research most problems and figure out solutions relatively independently does.
> Nowadays, it seems that companies care more about [...stuff...]<p>Yup, and thank god it's like that.<p>If you're expecting to just drop a tarball containing the output of your compiler and leave it out to some sysadmins, you're going to be a burden on your team.<p>However, in a practical manner: you're certainly expected to have some kind of familiarity with containers and a container orchestration system but you can pick most stuff up as you go.<p>Assuming you do some basic learning on your own before applying, most company will give you time to get up to speed as part of your probation time before becoming a permanent employee.<p>This boils down to companies moving away from siloed team and towards a devops (or devops-like) way of working.<p>You're expected to be able to operate the services you develop: you build it, you run it.<p>Containers are here to stay and you have to get used to it.
"It seems that I'm not a senior software engineer"<p>Please define senior software engineer. Everywhere has vastly different definitions. You likely fit one of them.