I recently made a career transition from SWE to DevOps/SRE role. The big difference is tooling - IaC tools like terraform/ansible/chef is a must because automation is key. Those are also like scripting languages (declarative/procedural) instead of OO.
Generally requires a different thinking too - when you develop code on localhost you can ignore all the networking constraints, monitoring, logging etc.
In a production system those components are critical, so the focus becomes more on understanding how the full system functions, rather than just the business logic of the code.
A lot depends on experience but I think in general it's better to move from Dev -> DevOps than from Ops -> DevOps. Especially now that IaC is the primary tool that you would use.
Markets are highly volatile and largely driven by emotions. The impact is not yet fully seen and will manifest in the next 6-12 months. In the short-term, cash is the most valuable asset. In the long-term, it doesn't matter as much.
That's basically what every white-boarding coding exercise is - pattern recognition based on computer science trivia. It's not illegal - every tech company does it.
Either option seems pretty good. But it may be that option 2 is the best, if you can still find time on the weekends/evenings to work on the open-source projects
``Strong opinions that are often wrong. This coworker is senior and has worked for some high-profile SV companies so the words carry weight.``
That may be your opinion. What defines a wrong opinion? If he is senior and has worked for high-profiles companies then he probably has experience, and has produced some results. The fact that someone has a different opinion from you doesn't mean the opinion is wrong.
There are a few things to consider:
One is - the point of diminishing returns.
From my personal experience (which would depend on the geographical location and one's spending habits), that point is at about $100,000. In my 9-year career path I went from $40,000 -> $60,000 -> $85,000 -> $90,000 -> $100,000 -> $120,000 -> $120,000+.
The change in general appreciation of the raise that happened below $100,000 felt substantial, it almost felt like it made me happier.
But once you reach the level where you can comfortably spend and save large portion of your paycheck, additional $n,000 starts to matter less and less. Sure, it's a good feeling to earn more money, but it doesn't define your happiness anymore. It's become a norm. So going from $150,000 to $200,000 feels so unfulfilling compared to going from $50,000 to $100,000.
The other thing to consider is comparing yourself to others. We all do that to some extent. But if it's an obsession then one will always be unhappy.
The thing to realize is there will always be someone who makes more money and lives a wealthier life.
Here's how it goes - if you make $60k and live in an apartment complex there's some neighbor that makes $80k, and drives a newer BMW than you, has a bigger apartment and newer grill.
Then you get a raise and make $100k, you buy a small house in a different neighborhood. Once you settle in you will start to notice that there are neighbors that have bigger house/drive Tesla model S, have bigger backyard.
You get another raise and start making $200k, you buy a 2500 sqft house in a different neighborhood. There, a few neighbor(s) make $500k, and drive Lambos.
Then you work hard, and you start your own business and it becomes successful, and you start pocketing in $500k, and buy a Lambo yourself, and also move to a beachfront house.
Then there're beachfront houses that are bigger than yours, and some neighbors have 5 supercars.
Then your business grows, and you start making $2M a year, and you upgrade your beachfront house to a bigger beachfront house, and buy 5 supercars.
Now there's a neighbor that has a few luxurious villas in different states and internationally, then there's another neighbor that has a private yacht, and another one that has a private jet. There's another one that has 3 private jets, then there's another one that owns a football team, and so on...you get the point.
Chasing specific amount of money that would make you happy will ultimately leave you unfulfilled because in comparison to other people there will always be someone who makes more.
Of course, there are exceptions to that like - Zuckerberg, Gates, other billionaires - but being a realist how likely is one to become a billionaire in a lifetime. I mean, if that's your ultimate goal - good luck. But something tells me most billionaires didn't have a goal in mind to become a billionaire, it wasn't their primary focus but rather a byproduct of their success and passion.
I was doing consulting work for a small startup that had senior-level "architect" that was responsible for designing the software.
He was producing a lot of tech debt. Instead of automating things he introduced a lot of processes that required manual work. Pretty stubborn person in general, and was adding a bunch of code that was sub-optimal and hard to read.
I quit that gig after 7 months, not worth it when people like that lead the development of the product. Eventually, that product will either have to be rewritten or the it will (along with the company) fail to deliver. Tech debt is dangerous, it can destroy the business if not handled.
I think that depends on whether Python will exceed Java in popularity.
But in theory, in 10-20 years any widely used programming language will have no intrinsic value and will have enough developers to not pay them 6-figure salaries.
Developers that will be valued and making tons of money in 10 years will be domain-specific developers.
Think about how many enterprise-level software apps have been developed in Java and will need to be maintained for years to come. Think about how much of such software is being developed now as you write this.
While I like Python for its seeming simplicity it lacks some nice architectural paradigms that Java has employed for years - think Inversion of control, or data access frameworks hibernate or ibatis.
Python is in a somewhat of an infancy stage to support that type of enterprise-level architectural paradigms.
For OP, if you want to get into machine learning domain then Python is definitely the language of choice.
It would probably take me less time due to not having the pressure of someone looking, but it might still take me ~ 30min.
I think the general problem is that I don't deal with such low-level problems on a daily basis.
I can write multi-threaded Kafka consumer app that processes thousands events per second and applies some basic ETL on them, add end-to-end integration test for it in <8 hours.
But it may take me ~1/8th of that time to write a low-level (quick) sort algorithm.
Generally requires a different thinking too - when you develop code on localhost you can ignore all the networking constraints, monitoring, logging etc.
In a production system those components are critical, so the focus becomes more on understanding how the full system functions, rather than just the business logic of the code.
A lot depends on experience but I think in general it's better to move from Dev -> DevOps than from Ops -> DevOps. Especially now that IaC is the primary tool that you would use.