I like the fact that everything is contained in a monolithic application VS tiny microservices scattered across different cloud providers. It's less mentally taxing I believe.
So I'm curious about salary/job growth of DevOps/Platform engineers VS Full Stack Web Devs. Does one pay more than the other? Does one have more or less competition?
The people who make the most money: 1. Take the most responsibility. E.g. At my company there's a lot of "simple" tasks (literally tickets like "change the font color from one shade of grey to another shade of grey") that are very high impact because we work in the AdTech space. If the page stops loading for IE11 we lose thousands of dollars a minute. We're responsible for not only "simple" style changes but _making sure those simple changes never cause an outage_. Because of the extra responsibility we have, we're paid above market rate for seemingly "simple" tasks. Taking more responsibility doesn't necessarily mean more work hours. But boy does it mean more opportunities to deliver bad news if something breaks.
2. Work on tasks that have more financial leverage. Getting great at operations means you can figure out ways to cut a company's infrastructure costs by 50% or more in some cases. Getting great at frontend/fullstack means you can figure out ways to increase conversion rates by 50% or more in some cases. Both are important. Neither requires you to necessarily learn a cutting edge technology.
It took me a while to figure this out, I'd jump from one hot framework to the next. These are what matter the most in my experience.
If you enjoy tinkering with stuff, DevOps is awesome because there are 1000s of small settings you can play with.
If you like control, programming is the way to go because you can pretty much do anything. In DevOps, if developers didn't expose some setting, you are s.o.l.
I would recommend to start solving some of your own problems in the devops space with some REST APIs and frontends :), maybe a self service web UI for developers to create VMs with some of the stack already there and configurable? (Think Heroku)
I have worked in the past 5 years sometimes as 100% React frontend for a medium size project, sometimes as 100% backend developer architecturing effective data structures and data access patterns and sometimes as 100% devops setting the Ci/Cd/Ansible/Docker workflows... Worth noting that in the beginning of my career I worked with digital signal processing in FPGAs and embedded Linux.
I dunno, I feel it is all the same thing. "Specializing" do you mean learning a particular framework? Frameworks change all the time... otherwise, they all run in computers with OSes, CPU, Memory, Disk and I/O.
I would recommend learning the underlying technology and then you can quickly learn anything (literally).
Asking because I am myself an infrastructure engineer (I don't like the "DevOps engineer" title) and I am slowly getting tired of being so far away from "the product".
I have taken a different approach and I'm trying to find and start a meaningful side project that could generate revenue and could slowly become a full time job.
I thought first that acquiring fullstack skills and working as such for a company would give me more joy, but I figured I would probably get also bored after a while.
TL;DR: DevOps makes a bit more than Full Stack.
DevOps: https://stackoverflow.com/jobs/salary/results?l=San+Francisc...
Full Stack: https://stackoverflow.com/jobs/salary/results?l=San+Francisc...
What you ought to say probably is that you are enjoying web development but in a monolithic environment -- nothing wrong with it, I just wanted to clarify concept in your mind.
Secondly, I too transitioned from being a DevOps engineer for 6 years to working as a Developer. My take is: Money depends on the job - both can command more money than the other but I would bet that if you are thinking about contract work, then DevOps would probably pay you more.
In terms of competition, there is more 'intense' competition for Dev jobs -- at least here in Toronto, Canada. Why? Because as a Developer, you are expected to know things like data structures, basic algorithms, big frameworks (spring boot and react are pretty large frameworks in their rights). Then, there is increasing usage of coding tests before you even land an interview.
You don't do coding tests typically for DevOps jobs and even if there is, it is not intense -- you don't have to do SQL, you don't have to do OOP, etc.
Also, DevOps tooling are getting so advanced that majority of work is getting pretty simplified -- your 'tech stack' may only consist of yaml files (albeit for different tools) along with some python 'glue'/automation code. Heck, even in depth OS knowledge is not that critical now for majority of DevOps jobs ever since docker and k8s stole the scene. Finally, even the whole part about 'assisting and building CI/CD pipelines' and 'creating CI/CD relate framework for Devs in organization' and 'debugging build failures' and 'strategizing Git structure' is quickly moving towards Developers themselves doing all that so you are just a fancy tool admin in many cases. This ultimately will cause you to loose out on many modern proper software development skills and practices.
Up until couple of years ago, knowledge about a major cloud provider (e.g. AWS or Azure or GCP) and knowledge about usage of the SDK / creating templates would have been your saving grace and would have made you stand out -- but now, Devs are doing that more and more and they are more capable of doing so not because they are necessarily smarter than DevOps folks, but because of plethora of info available on internet plus such abstracted/simplified controls available via these Cloud providers in terms of SDKs and highly usable web consoles.
Finally, one thing that I felt personally regarding the job situation was that, in every company, the ratio of dedicated DevOps folks to developer would STRONGLY be in developer's favor. Sure, there is more competition for Dev roles but there are a whole lot more jobs in the market for Devs as well as compared to DevOps.