Skip to content

Instantly share code, notes, and snippets.

@StevenACoffman
Last active December 7, 2024 09:00
Show Gist options
  • Save StevenACoffman/cab4491a14d2b8594bc861b94e5fef93 to your computer and use it in GitHub Desktop.
Save StevenACoffman/cab4491a14d2b8594bc861b94e5fef93 to your computer and use it in GitHub Desktop.
Careers

Change jobs every two to three years.

  • The Carrot

    CLICK ME

    The worst kept secret is that employees are making less on average every year. There are millions of reasons for this, but we’re going to focus on one that we can control. Staying employed at the same company for over two years on average is going to make you earn less over 10 years by about 50% or more.

    Keep in mind that 50% is a conservative number at the lowest end of the spectrum. The longer you work, the greater the difference will become over your lifetime.

    See forbes article

  • The Stick

    CLICK ME

    I’ve spent my career in tech, almost a decade at this point, running about a step-and-a-half ahead of the automation reaper. I was an IT field engineer maintaining server blades until they turned into EC2 instances. I was a DevOps DBA building SQL Server clusters on top of AWS EC2; then RDS got better and that wasn’t a good use of manpower anymore. I was a CI/CD tool builder for internal development teams - cloud providers and service companies now make better versions of those tools available at cloud scale. Just about every role I’ve had in tech has become an inefficiency, sometimes due in part to my own efforts. The work has been automated out of existence, and I have moved on.

    So how do you know if your job is going to disappear into the cloud? You don’t really need me to tell you. You already feel it in your bones. Repetition is a sure warning sign. If you’re building the same integrations, patching the same servers over and over again every day, congratulations – you’ve already become a robot. It’s only a matter of time before a small shell script makes it official.

    The solution is simple, but not easy: you simply must keep moving. If you don’t know how to code, learn - like planting a tree, the best time to start was ten years ago, but the second best time is now. If your technical competence is ten years out of date, don’t cling to your hard-won kingdom of decaying knowledge and sabotage any attempts at change: get out and pick up a certification, attend a meetup, something. Anything. At the end of the day, we’re all self-taught engineers.

    Otherwise, I’ll tell you what will happen. The economy will take a small dip, or your department will get re-orged, and you will lose that job as an operations engineer on a legacy SaaS product. You’ll look around for a similar job in your area and discover that nobody is hiring people anymore whose skill set is delivering a worse version of what AWS’s engineers can do for a fraction of the cost. And by then you won’t have the luxury of time to level up your skills.

Always be moving. But where are you going?

Technologies come and go pretty quickly. Established programming languages tend to linger longer. Start your career knowing one of the top 5 well, and be a plausible hire in another by 5 years in. Companies will hire you without you knowing their language if you have demonstrated you can learn more than one. Jobs using newer languages tend to have less legacy code. Don't jump onboard a language that is in rapid decline.

SQL is over 40 years old, and still going strong, but it's not an entire job anymore.

frontend vs backend vs full stack vs devops vs sre vs data engineer

  • Even Full Stack should be T-Shaped individual, not Jack-of-all-trades-Master-of-none, so pick a specialty while staying broad enough to be versatile.
  • Backend still pays better than frontend.
  • DevOps still involves a lot of Ops, and the tech turnover churn makes it easier to wind-up obsolete.
  • SRE's get to make everyone besides themselves successful.
  • Data Engineers generally never get pager duty.

From Twitter by iameveloper (@iamdevloper)

"full-stack" now means you can:

build front-ends
write back-ends
handle devops
start a podcast
curate a newsletter
crack an egg with one hand
animate a Pixar movie
dunk

Quick guide to mandatory pager duty

  • Step 1: Find a new job.

There are way too many opportunities out there to subject yourself to this nonsense. Software that requires a human to turn a crank at 3am to prevent the business from failing was not designed to be reliable and resilient. If management didn't care to prioritize that, then they don't care enough about you as a human. Pager duty is generally abusive, and essentially wage theft. You aren't getting paid to work 24/7, and even if you were, it's unhealthy.

  • root cause analysis
  • theory of action
  • impact analysis

Professional development

You are perfect as you are. And you could use a little improvement.

— Suzuki Roshi

Other people's advice

CLICK ME

So an anonymous Twitter person DM'd me this morning with a scenario. "I work at a large cloud company that makes inscrutable naming decisions, and I have an offer elsewhere for 35% more. Should I take it?"

Oh good heavens yes. A thread... I hopped on a call with them and proceeded to firehose a bunch of career advice in their direction. I took a few notes and here's the gist of it.
No one is going to have your interests first and foremost except for you. You owe your employer a duty of care, and a duty of confidentiality, but you don't owe them loyalty.
"My manager has really gone to bat for me, and I've been promoted. Isn't this screwing them over?"

Okay. Assume you decline the offer and stay put. Your manager gives their notice three weeks from now. Now what?

Secure your own mask before assisting others.
"The new company specializes in THING. Won't I get pigeonholed?"

The T-shaped engineer is great. Go broad, but then deep in one specific area. With time, that deep area will shift. Deep expertise stands out.
"What if I get a counter-offer that matches the new gig?"

Don't accept it. Calling the new prospective employer to rescind your acceptance burns reputation; don't do it lightly. Further note that you had to get another offer to be paid your market rate.
"What about the risk of the new company being crap? I like my current role and team."

Where's the risk? You went out, interviewed, and landed this offer. You can do it again. Make sure you have sufficient runway to weather a couple of months of job search as your hedge.
"Should I tell my manager / team where I'm going when they ask?"

If your current company has a history of enforcing non-compete agreements? FUCK no. It's not their business. Further, don't announce or update LinkedIn for a month or three. There's no upside and lots of down.
"Should I negotiate the offer?"

Always. fearlesssalarynegotiation.com is a great read and has a bunch of templates. Companies that rescind offers because you negotiated are either trash fires, or your idea of "negotiating" is what the rest of us call "astonishingly unprofessional."

Salary Negotiation for Software Developers - Fearless Salary Negotiation
Proven salary negotiation strategies and tactics for Software Developers to ace job interviews, get more offers, maximize starting salary, and get raises at ...
http://fearlesssalarynegotiation.com
"But if I stay here I can get promoted in a couple of years."

Or you can leave, get more experience / money / perspective working elsewhere, and possibly boomerang at a higher job level. (This person is very early career, for clarity.)
Think about why you interviewed elsewhere. It's unlikely the answer is simply "money" but if it is, that is PERFECTLY okay.

"I don't like the work culture" doesn't magically get fixed if you get a raise and a promotion.
Have a ten year plan for your career. It'll be laughably inaccurate: according to my old one, in the next ~2 years I should be a COO / VP type at a Fortune 500, or close to it.

I am not that–but the plan kept me moving, and that uncovered new directions that led me here instead.
"What if the new workplace is utter trash?"

My friends there report that it's very much not. But if it is? You have a cloud company that's bad at naming things on your résumé, an ability to interview well, and a giant talent shortage on your side. I'll take that bet.
This person found the new role via a recruiter doing cold outreach.

That's awesome if it works for you; I don't have a high school diploma so that's out for me. I like having trusted people in the industry introduce / advocate for me. I do this frequently for folks.
A ten year plan is hard to turn into actionable next steps, so break it down.

Ignore the next job; what's the job after that? Once you have an idea, it shapes what your next job should be. Have a direction in mind!
Talk to people who are doing the role you aspire to be doing in the future; get their advice.

Some folks are easier to get to than others. How did I get time with COOs at giant companies? Well you could try starting a ridiculous podcast, right @spoonen?

The Switzerland of the Cloud with Sanjay Poonen
https://www.lastweekinaws.com/podcast/screaming-in-the-cloud/the-switzerland-of-the-cloud-with-sanjay-poonen/
Keep two lists.

One is "people I would love to work with again."
The other is "I will actively avoid companies that employ this person."

The second should be short.
Career ladders are something of a brass ring. "Do X, Y, and Z to get promoted to the next level" keeps you from pestering your manager about getting promoted every 20 minutes, for one.

It also helps keep you from remembering that "SDE III" is MEANINGLESS externally.
Do not love your company, because it cannot love you back. You are more than your job.

To use a somewhat blunt example: imagine someone who has a RedHat tattoo getting fired for performance a year or two later. No judgement, but also not for me at all.
"I'm in my early 20s; I don't really know what I want to do long term."

I'm 39. Neither do I. It's okay.
Conversations like this one are why I keep my DMs open. It's surprisingly uncommon for junior people to message me out of the blue with questions like this; I wish it happened more often.

Also check out https://github.com/jorgef/engineeringladders

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment