Senior Engineer Mindset
Senior Engineer Mindset
Senior Engineer Mindset
Senior Mindset
Dear reader,
~Swizec
Why senior engineers get nothing
done
Remember when you started your job, how was it?
Best part of starting a new job my friend 👉 You get to work. It’s
wonderful.
When you’re new life is great
Imagine a typical workday for a new team member:
10:00am – standup
10:15am – work on tickets
11:00am – quick chat to ask a question
11:15am - work on tickets
12:00am – lunch
12:30am – work on tickets
15:00pm - review PRs
15:30pm - break
16:00pm - work on tickets
18:00pm - done for the day
A good manager will put you on one long project. It’s the best
way to learn.
Get a big project and do it. You’ll explore the system, figure out
how pieces move together, and have a common thread to guide
you.
10:00am - standup
10:15am - unblock Susan
10:30am - meet with product manager
11:00am - quick chat to answer Bob’s question
11:15am - answer PM’s followup question
11:30am - code reviews
12:00am - lunch
12:30am - 1-on-1 to welcome new team member to team
13:00pm - 5 slack threads of questions
13:30pm - production bug
13:45pm - unblock Joe
14:00pm - meet with head of engineering
14:30pm - write tech specs for next month’s project
15:00pm - quick chat with PM to clarify something
15:15pm - continue writing specs
15:45pm - unblock Alice
16:00pm - work on tickets
16:15pm - notification in #bugs channel
16:20pm - work on tickets
17:50pm - catch up on Slack threads
18:15pm - done for the day
Your company will make that tradeoff every day. $40 of your
expensive time for $420 of everybody else’s time? Yes please.
I’ve been in situations where all this was expected, but only
writing code was valued. That sucked.
What you can do to protect your coding
time
Do not become that ass who doesn’t answer questions or help their
team!
You can use 2 broad strategies to protect your time:
1. Timeboxing
2. Optimization
Timeboxing
Timeboxing is the strategy of blocking off your calendar for
specific types of tasks.
When you do have meetings, schedule them all in the same part
of the day. Back to back.
Have a time in the day where you go through all of slack. Ignore
notifications and questions for an hour, then answer everything
in 15min.
Documentation my friend.
Can you help me with this problem? Who is the best person to
ask? Here’s what happens and this is what I expected to
happen. I have tried X, Y, and Z to resolve the issue. I will be
blocked by this in N minutes.
action steps
sub-projects
a staggered delivery plan (perhaps)
opportunities for work in parallel
a clear Thing To Do First™
a well-defined Thing That Says You’re Done™
But no.
A senior engineer does so much more than just write code and
design systems.
Own the process. The whole process. Be the project manager you
want to see in the world.
What that means to you and your organization varies. It’s hard
to talk specifics. It’s the little things.
You get the project. You read the spec. You ask questions.
Many questions. Until you are sure you understand both the
spec and the spirit of the spec.
If the spec doesn’t match its spirit, do you talk to product and
suggest improvements? Do you tell them hey this thing you’re
asking for doesn’t solve your problem, but this other thing
might?
That’s what they’re there for by the way. Team members. They
want to help you.
When you come to them and say “Yep gonna be done tomorrow”
or you say “Nope won’t be done, here’s why”. It relieves anxiety
like you wouldn’t believe.
If your manager can count on that little update at the end of the
day, they will never bother you with status updates ever again.
They’re not asking to annoy you, they’re asking because they
have no idea what’s going on.
And don’t worry about looking bad when you fall behind. Shit
happens. If there’s a good reason, they’ll understand. Maybe
help you prioritize better.
When you’re done, do you make sure your code gets tested, goes
through QA, gets reviewed and so on? Do you sit there and
pester politely follow up with people until you all checks are
donen? Do you work with QA and manage the whole process?
Bootcamps in particular are all about get job NOW. Oh you need
skills that work 5 years from now? Good luck.
That was 2010. Now it’s 2020 and NoSQL is a strong you
shouldn’t use this unless you have a very specific use-case or
reason in mind.
Relational databases, a comp sci thing, are the default way to
store data for 50 years and counting.
That’s the trick. That’s how you get the most out of your degree.
Apply your skills and knowledge in real time.
You can see the effect of that on my old articles. Like when I
built a Turing machine simulator in 133 bytes of JavaScript. Yes
it’s useless. Learned a lot though.
Like the fact that you can’t parse HTML with Regex, or that
reading from a database is slower than from memory. Or that
you should have a cache and avoid slow operations.
And that async code is faster than sequential code, but never
faster than the slowest non-parallelized part.
You should listen to the full podcast episode with Noah Gibbs
where we talked about what comp sci was like for me and why I
think it was great.
No matter how fast you walk, how often you change jobs, you’ll
never make it farther than the square root of the number of steps –
Math.sqrt(n).
You can grind out more steps but it’s gonna be one hell of a grind.
You’ll burn out before you get anywhere.
Each step is random, but they’re 10% biased towards a vision. You
travel a distance proportional to n and go far!
https://codesandbox.io/s/random-walk-with-a-vision-blsxl
What’s going on here
You can think of your career as a multi-variate optimization
problem. You’re looking for the best balance among the criteria you
care about.
How many steps do you take? How big are they? That decides how
fast you go and how many at-bats you get. The more attempts, the
better.
That’s a random walk. No matter how big your steps or how fast, you
won’t get far.
But if you add a pinch of vision, a small bias towards your goal,
you’ll have a great career. My simulation has just a 10% chance of
making the right decision and look what happens.
You know, all the things that we look at and say, “That dude is
amazing! Rockstar! Much love 😍 How does she talk at 50
conferences per year wtf!?”
But first I want to answer why.
You build features for your users, and you make your boss
happy by showing up on time and going to meetings even
when you don’t really quite feel like it. Stuff like that.
Now you’re not just telling people how to fish, you’re giving
them actual fish. This is a great place to be.
The more people use your tools, the more they will like you, the
more they will value your opinions. This can lead to speaking
opportunities, being generally known of in the community,
and sometimes even getting hired as a job perk for other
engineers because everyone wants to work with you.
But are they? We’re all humans, and we work in teams, and we
like to work in teams with people we like and enjoy spending
time with. Humanness matters.
And your career improves. People come to you when they need
help because they know you’ll point them in the right
direction.
Whatever it is, do something
Most importantly, you should do something that builds your
career, not just your code.
What a hockey legend can teach you
about career development
Say your boss gives you $1000 to grow your career. What do you do?
Ideas fly back and forth. Ideas fill the room. Ideas up to your ears.
Everyone has plenty except our two most experienced engineers
who are silent.
Conferences are great for seeing what’s out there and chatting with
smart people. Workshops are amazing for intense rapid learning on
something specific. Video courses and books are spectacular at
going in depth on a topic.
🤔
Skate where the puck is going
skate to where the puck is going to be, not to where it has been
What made Gretzky a legend so big even people like me who never
watch sports know about him, is his uncanny ability to “consistently
anticipate where the puck was going to be and executing the right
move at the right time”[1].
Think about it.
The puck is moving. Flying. By the time you get there, you’re too
late.
You gotta skate to where the puck is going to be. You can catch it
when it gets there. 🏑
It’s the idea that technology, biology, life in general, and your career
develops around its edges. When you gain a new skill, invent a new
tool, or pay off your loans, you expand your adjacent possible.
You push out the edge and reach further into the world. More ideas
become possible, more opportunities show up. All because you’re in
a better position to both see and use them.
There’s a lot that goes into a good career. And it’s different for
everyone.
How much money are you making? Are you enjoying it? Are you
working with tech you like? Are you helping the world? Are you
happy?
Go for it.
Climb until you reach the top. Until your progress starts to slow.
When you aren’t learning and growing, that’s when you’ve reached
the top.
You now have a better vantage point. You see further and wider.
You have more experience. Your adjacent possible is broader.
✌️
Then what?
Your problems stop changing, your code stays the same quality –
good enough, ain’t nobody got time for perfect – your stack is static
and solves company needs. You’re spinning wheels solving similar
problem after similar problem.
You might get faster, you might build tools, you may screen clients
better … but you’re building the same thing day in and day out. 🥱
1. management
2. entrepreneur
3. bigger company with bigger problems
4. become junior in new thing
Off-by-one errors notwithstanding, if you’re happy with 1 year of
experience 5 times. Go for it!
That’s a very pleasant way to lead your life. Pays well, easy to do,
leave work at work, spend time with the wife and kids and hobbies
and whatnot.
You do you.
1) Management
As you become more experienced, start mentoring, and become a
force multiplier for others, companies will push you into
management.
This is natural.
2) Entrepreneur
You can always start a company. Consulting is a great option here.
Each new consulting client will teach you a little more about your
craft. And a shitload more about consulting.
You might parlay this path into a principal engineer for hire. That
can be fun.
Waltz into a company, analyze their problems, tell them what to do,
champion some approaches, do some mentoring, then bounce. ✌️
(https://www.youtube.com/watch?v=OEY3Q43aE_c)
If they’re good enough, they swim, they survive. And if they’re not
… the pressure builds … and builds … and builds ~ Mercedes Team
Boss
I want to win. I know I got it in me. The fire is there. But this team
can’t get me there.
You’re an F1 driver, the pinnacle of racing, and that makes you elite.
But within F1, you’re a chump. You have potential. You have talent.
One day you reach Mercedes, Ferrari, or Red Bull. Then you’re
fighting for the championship.
The top 3 change every few years and it’s never more than 3. If
you’re not driving for those, you ain’t got a chance.
You can grow and grow and grow and then it just stops. You don’t
grow. You have nothing deeper to solve. No bigger problem. No
bigger concern.
Maybe the startup isn’t growing, maybe it grows by doing more not
deeper, maybe it doesn’t want to grow. Whatever it is, you can’t
grow my friend.
Time to switch.
But should I jump into iOS? Nah, I’ll never catch up.
"We need new functionality in this feature and you’re the last
person to work on it. Means you’re the best fit
Didn’t I work on this 3 years ago?
Consider a typical job: You do the work, create value, get paid.
You go to the DMV, see the bored bureaucrat and you try to
lighten their day. Smile and a chitchat. Doesn’t work. Still
grumpy.
You’re sitting in your chair all day having the same damn
conversations. These fools come up to you, all saying the same
stupid chitchatty words … yes you got in a wreck, no this never
happens to you otherwise, yes it was the other person’s fault,
yep the lines are long, yeah it’s wednesday, mhm weather sure
is nice … 🤮
You grab their papers, add the stamp, count there’s 3, say the
same old "Okay take these papers to window 5, tell them
Margarite sent you, ask for article 2a-dash-c, I added a postit note.
Then you go to …
Every day. Every week. Every month. For years.
It’s a long and sometimes painful process. You bang your head
against the wall. Problem after problem. Issues always come up.
You ship to production and wish you never have to look at this
bullshit ever again.
An asset that’s going to keep doing its your job long after you’ve
moved on. After you’ve left the company even. Your code’s
gonna keep chugging along making cash.
That’s a 3x difference. 😇
How?
🤯
PS: this is why SFBA has these crazy salary dynamics. There’s
more unicorns per capita than anywhere else in the world.
Why you should talk about engineering
salaries
Twitter went abuzz with engineers sharing their salaries. Then
everything turned to shit.
Why are all these rich fucks complaining about not being rich
enough?? TONE DEAF!
I’m on food stamps and these spoiled Silicon Valley engineers over
here sipping $12 lattes wearing $100 allbirds and complaining
about money on their $1000 iphone.
You’re supposed to love coding for the love of the coding. You’re
supposed to give most of your work away for free. You’re supposed
to be ashamed about how much money you make.
Fuck that.
Ever seen a lawyer give their work away for free? They won’t even
comp you a pencil.[1] What about a doctor? Or a dentist?
Fortune500 exec?
Those are the folks making 6 figures. You need to stop thinking like
a $10/hour barista, my friend.
You don’t even have to work for Google. Any profitable company will
do. Hell, even unprofitable companies get tons of value from you in
investments and future returns on your work.
It doesn’t matter that you did similar work for $X. The new company
is bigger, more profitable, and has more painful more expensive
problems. You are here to help and deliver more value.
And sharing your income could make people envious, jealous, feel
bad about themselves, etc. That’s the short term.
Long term those people will learn from you. They’ll be inspired.
They’re going to change their lives.
PS: you can see the full spreadsheet of salaries compiled from
tweets here: [click]. Data is kinda messy but very fascinating
[1] when you work with lawyers you’ll sometimes notice an invoice
for thousands of dollars of their time … oh and $20 for ink and
printing
Should you work at a startup
“If you’re so good at this, why don’t you start your own business?”
"Dude, they pay me so much. Like so much. My skills are in such high
demand these days. You have no idea. Starting my own business
would be the dumbest thing in the world right now.
Press play, continue reading:
https://www.youtube.com/watch?v=mQPjKSVe1tQ
If you can get paid really well, have stable income, work on
problems you enjoy solving, and work in nice offices with free lunch
… why would you resist? Go be a normie.
3 years, 2 jobs.
That sounds like a lot, but we seem to run into each other at the
boundaries between his jobs.
If you like the company and think it’s a rocket, you wait out your
vesting cliff. Maybe even the whole vesting period.
The way vesting works is that you get 4 years to gain the right to
purchase all of your stock for a discounted price. Those are options.
If you have RSUs, you buy your stock in advance and the company
has options. After 4 years the company loses its options on your
stock.
Point is, you get 0% in the first year. Then you get 25% of your grant.
After that you accrue monthly until you hit 100% four years later.
Work at the right company and you get to build your wealth and get
the big cash bucks at the same time. Don’t even have to save. But you
still should. Stock, especially not-public stock, is a lottery ticket.
You can start your own business or startup, get a job at a startup, or
go work in BigTech.
BigTech
BigTech is a job. You won’t love it. But you also won’t hate it. You’ll
put up with everybody’s bullshit, chant the company line about
changing the world while knowing deep down you’re just a
capitalist machine pumping data for money.
Your experience will depend on your boss. Get a great boss, have a
great job. Get a bad boss, hate your life.
When you climb through the ranks I’ve heard all sorts of great
things can happen. Some even get paid big bucks to do whatever
they want and work on open source. That’s nice.
Your big salary exists to keep you there. BigTech knows you’re there
for the money. This is a business relationship and there’s no bullshit
around that.
We pay you big big while you’re useful. Stop being useful, we drop
you like a hot potato.
Most common complaints I hear from friends:
Say you start with $150k and switch jobs every 18 months for the
standard 30% pay bump. Raises are crap because that’s 5%. You
gotta switch jobs to get a real raise. At the very least switch jobs
internally.
Startup
Startups are a job but not quite. Depends on the size of startup
you’re in.
Small startups just starting out, you’re gonna have a lot of fun
building cool shit with friends. You have control of what happens,
huge impact on company trajectory.
Bigger startups morph into BigTech. The bigger the company, the
less direct impact you have, the more layers of management, and
the less fun you’re having.
In return, you have to trust. Believe. Drink the kool-aid. This startup,
it’s not just a job, it’s your baby! We’re in this together! Work long
nights, early mornings, long weekends, focus hard all day, put in
some muscle.
burnout
stresss
changing company direction every 2 months
no idea if what you build today will still be useful tomorrow
tired
office ran out of paper towels the other day
can’t plan grown up things because money is tight
founder disputes
manager disputes
will I be able to mention this company on my resume in 5 years?
too much politics
All the problems you get at a big company except you’re not
compensated for the bullshit. You’re supposed to grin your teeth
and love it.
You probably make enough to live your life, save a little, but your
wealth and savings are tied to a lottery ticket that might or might
not pan out. You never know.
Start your own is the most stressful option. Whether you bootstrap
or get investment.
You take away all the BigTech bullshit and all the Startup bullshit
and you’re left with all of the control, all of the stress, and none of
the compensation.
You will suffer, you will work hard, you will stress about money and
about whether it’s all going to work out.
Hire people and you are responsible for their livelihoods. You are the
person they complain about when they realize you can’t pay as
much as BigTech. You are the bad guy when someone complains
about drinking mission statement kool-aid instead of getting paid.
Because it’s the only way you can bring your dream to fruition. You.
Your company. Your dream. Your results. Not somebody else’s
dream. Not somebody else’s job. Your job, your dream, your
company.
You get to be captain of your own ship, but you also get to be captain
of your own ship.
Six years from now, maybe you’re rich, maybe you’re doing okay,
maybe you’re a beggar on the streets.
But what’s the worst that can happen? You fail and get a $300k/year
job at BigTech from your experience and the network you’ve built.
so cry
So what do you do?
BigTech is stable and pays well, but can be soul crushing. Startup is
stressful and pays okay, but can become soul crushing. Founder is
stressful and opportunity cost is huge, but can set you up with
something you enjoy doing for forever.
Lyfe.
Should you take a pay cut for equity
Would you take some % of your salary in bitcoin?
Public stock has a dollar value, trends you can follow, and teams of
hedge fund quants predicting its future. And boy have the markets
been good to public tech stock.
When people talk about equity and total compensation, this is what
they mean. Ownership of a part of the company you work at.
But not like socialism where workers own the means of production.
Like capitalism where workers own shares of the company.
Options are the most typical. You get an option to buy company
stock at a certain price regardless of current valuation. You’re
betting value goes up and you can buy for less.
RSUs – restricted stock units – are what options translate into most
often. This is company stock that you own. But there’s limitations on
what you can do with it. Like a ban on selling without board
approval before the company goes public.
Common stock is what RSUs turn into after the company goes
public. Often, not always. Read your contract. These are the typical
shares with no special rights.
Preferred stock is what investors get. It’s company stock they own
and get special treatment on top of. Like being paid off first in case
the company sells.
But then it isn’t part of your salary, you’re buying as any other
market investor. You’ll be limited to a trading window either way
due to insider trading concerns[^1].
How equity becomes cash money
Owning equity increases your wealth but not your riches.
Being wealthy means you own lots of assets. Being rich means you
have lots of income/cashflow.
Buy 10 MSFT stocks in 2015 for $500, wait 5 years, gain $1630 of
wealth.
And before you can enjoy your $1630 windfall, you have to sell.
Selling turns gains into realized gains.
Oh and you’ll be taxed on that sale. Capital gains are untaxed,
realized gains are taxed[^2].
Options
In 2017 you didn’t have Uber stock, you had options. Employees of
most tech companies own stock options.
You have to exercise your options before selling. That means buying
your stock with cash money.
That’s right my friend, nothing comes for free. Even tech stock. Yes
you’ve worked hard for your equity, but what you got were options.
Say you were granted 1000 options at $10. That adds to your total
comp. Huzzah!
How much? That depends.
1000 options at $10 means you’ll have to pay the company $10,000
to turn your options into RSUs or common stock. Hope you saved 😉
Say your company did great and stock is now valued at $50.
Congratz you’re rich! Pay $10,000 and get $50,000.
“A-ha”, the IRS says, “you made \\$40,000 in salary just now! Pay us”
Your total comp package now has a number attached. This number
is taxed.
If you’re lucky, the company is now public, you can sell that brand
new common stock, pay taxes, and have plenty left over.
But the IRS doesn’t care about realized vs paper gains. When you
exercise your stock, the delta counts as income. Whether it’s cash
money or not.
Ideally the company would give you a shitload of options, keep you
around for 3 or 4 years, then have you leave without exercising
those options. They get a great employee and keep all of the
company.
Vesting is what keeps you around. You get 100,000 options, yes, but
over 4 years. Nothing for the first year, then 25%. Known as The Cliff.
After The Cliff, you get part of your options every month. After 4
years you reach 100% of your 100,000 options grant.
You can exercise options as soon as you get them. Or wait until the
end. Up to you and the details in your contract.
Exercise window specifies how long after leaving a job you can buy
your options and turn them into RSUs or stocks. The company
would like you not to buy. You want to wait until a liquidation event
like an IPO or a sale.
Preferred shares
Preferred shares mean investors get paid first. If your company sells
low, has a bad IPO, or goes bankrupt, the investors eat first.
Let’s say you’re the sort of engineer who could work at a big public
tech company.
With the usual 4 year vesting you’re taking a $240,000 cash pay cut
compared to Facebook. That’s your base investment in the company.
With each round of funding, your percentage goes down and your
value goes up. If all goes well.
Do you think this startup is worth investing $640,000 into? Will you
make realized gains of at least that or more? Think hard.
And remember, if you get cash, it’s yours right now. You can invest
it, you can use it, you can build a fuck you fund. Compound interest
is no joke.
Run the numbers, make sure you’re not building a financial hole
you’ll never patch. Google “returns calculator” and plug your
nubmers.
Lucy Liu on Fuck You Fund
At the very least make sure the cash you’re getting covers your
living expenses and your retirement savings.
PS: I am not a financial expert and I do not play one on the internet.
This is what I’ve learned over the past 12 years of working
at/on/with startups and reading about these topics. Please talk to
an expert before life-changing decisions.
What I learned while 6x-ing my
income in 4 years
I would say don’t take advice from people like me who have
gotten very lucky. We’re very biased. You know, like Taylor
Swift telling you to follow your dreams is like a lottery winner
telling you, “Liquidize your assets, buy Powerball tickets, it
works!” - Bo Burnham
I may not be Taylor Swift or Bo Burnham, but the last four years
went pretty damn well. Some luck, some talent, a lot of fuck-it-
let’s-try backed by a sense of “Oh yeah, I def know what I’m
doing”.
Sometimes I even believed myself.
Oh, and I have a big ego. That helps.
The point of this article is to show you that it’s possible. You can
double your income every year for four years in a row, even if
you’re not Taylor Swift or Bo Burhnam or Pewdiepie or <insert
your fav lucky bastard>. Even if you dropped out of college, got
held back a year in high school1, and come from a country
where the average engineer makes just 20k/year.
I had just failed two classes yet again, for the fifth or sixth time
in four years of trying. How hard can it be to memorize a CPU
pipeline or two? ?
I even had a special tattoo planned for when I passed. But I
didn’t pass.
Web scraping for a local company was fine, too. Then somebody
needed an MVP, and that was much more fun.
An old friend remembered me, and I took the only gig I could
find: keeping a jQuery and Angular monster alive for $180/day.
It was a step down from what I considered my rate, but
landlords don’t take promises as payment. Even in the “I’ll be
rich next year!” capital of the world.
¯\_(ツ)_/¯
I kept looking.
Then I fired myself from both those clients in December 2014. A
friend needed help on a gig. It was $320/day, stable, it paid on
time, and it was a great reference by association. I became a
Google subcontractor.
I’m still not sure if I’m technically allowed to say that. They
were always weaselly about it. ?
But only if the base offer without shares is also good enough.
All those great “perks” that Silicon Valley companies offer are
the legally mandated baseline in Europe. Fun.
They also gave me a small raise, which was nice because my new
post-tax income was now smaller than before. Slovenian
business taxes are lower than Californian income taxes.
Lesson: If you feel like you’re making WAY too much money,
you might be forgetting about taxes somewhere. The taxman
is forgiving and lets you pay later, but he makes you pay 5%
more.
Having a job job isn’t as bad as I thought it would be. I still think
offices are where work goes to die, but as bad as it is for
personal productivity, it’s great for the productivity of the
company as a whole. I should write about that some day ?
We’ve built some amazing things in the last year and a half.
AND because it’s a job job, it’s doubleplus unstressful. I have
nights and weekends now! Time and headspace to focus on the
side hustle. ??
And by the publish date, I hated the book so much that I didn’t
even write a “Yay, the book is here!” blogpost. I think. The only
marketing I did was to add it to D3’s github page.
You’d think publishers would do shitloads of marketing.
Especially when the author gets only 6%…
I was wrong.
That last part is key. The more you understand why people need
what you made, the better it’s gonna go
P.S.: You should hire him. (Ed. Note: Yes, you should. ?)
Ha, I wish. Here’s the above graph with the addition of how-
much-I-spent. Thanks Toshl for making it easy to track.
Last year, I spent $125,535. I don’t even know where that money
went. I certainly don’t feel like I got much out of all that money.
Toshl says $24,850 went for rent, $17,686 for taxes I had to take
care of personally, $728 went for my phone bill ?, $5,000 for ads,
$3,400 for my amazing editor and my wonderful virtual
assistant 5, $7,700 for asset investments, $4,400 for restaurants,
$700 for caffeine ?, $3,000 for taxis and car rentals ?, $3,700 for
airplanes, $3,900 for internet SaaS-es ?, $2,700 for clothes,
$3,300 for sports ??, $3,100 for tech, and $1,800 for gifts. So I
guess that’s where it all went. #transparency
What I’m trying to say is that if you grow up without money, it’s
really hard to learn how to handle money. $10 here, $30 there
adds up damn quick.
Maybe 4x in 4 years?
We’ll see
PS: if you read this whole post, I’ll buy you a beer.
1. I had to repeat the 3rd year of high school because my grades
were so bad. And I had to take remedial summer exams 3 out
of my 5 years of high school. I was a terrible student. Many
people told my mum I’m probably just too dumb or
undisciplined and should be taken out of schooling and put
to work. ↩︎
2. In Slovenia, you have high schools called gymnasiums.
They’re 4-year general high schools meant for “advanced
placement” kids. You get almost the equivalent education to
a college bachelor’s degree, but more general. By the time I
was in high school this had softened a bit.After a
gymnasium, you’re meant to go to a 4 year university degree
that’s the equivalent of a master’s. While I was in college, the
Bologna reform came through. What used to be a 4 year
master’s equivalent degree got changed into a 3+2. 3 years
for a bachelor’s, which looks and feels a lot like extended
high school focused on a field; 2 years for a master’s, which
looks and feels a lot like the old system, but more researchey.
I flunked into the new system, but was allowed to take both
bachelor’s and master’s classes. The bachelor’s were
mandatory; the master’s were because I already had the
prerequisite credits. ↩︎
3. I even sold “get on HN frontpage” as a service to local
startups. I charged a whopping $100 per essay :D ↩︎
4. I like using my own computers even at work. The US has
strange employee-employer privacy and IP laws. Using your
own equipment is one of the easiest ways to protect yourself
as far as I know. You also immediately lose the technically-
contracting status if you use their equipment. But: IANAL. ↩︎
5. The editor is more of a publishing mastermind and strategic
content helper, and my VA has so far done a great job of
removing inbox anxiety. I’m figuring out how to leverage her
skills even more. They also both need more clients so they
can afford to keep helping me. Please hire them :) ↩︎
What if engineers were paid like
athletes
Money and career has been on my mind lately. Lots of
conversations. Here’s what I uncovered.
How much they get done, how many wheels they invent
because they don’t know wheels exist, how much your code
looks like duct tape and chewing gum 👉 irrelevant.
And they avoid juniors. Because they don’t have the time to
train them.
Do something.
PS: this is an area I’m figuring out how to help with. Hit reply if
you’re interested.
What if you were paid like an athlete?
Say you’re a senior or have a way to stand out from the crowd.
Not saying it’s easy to get there, saying it’s realistically doable ✌
Companies care about the systems and tools you put in place
to make the whole engineering team run better, do more,
and make bank.
Don’t worry about looking like a job hopper. Everyone does it.
And lest you worry that a few 30% jumps lead to unrealistic
numbers, check out levels.fyi for SFBA. $500k+ for 10 years of
experience is normal.
Yes that means you’ll have to bring the bacon. The game is not
“sit around and wait”, it’s “get aggressively better and work”.
What about the athlete thing?
Athletes are paid for value.
Your value is the expertise, the experience, the not gonna make
avoidable mistakes that cost us 3 years to fix.
[^1] free money has weird effects right now because investors
want their average returns and have nowhere to put the money
How to make what you’re worth
even if you’re from the wrong
country
It always upsets me when I see talented engineers bickering
about whether they’re worth $12/hour or $15/hour. Happens a
lot in Slovenian Facebook groups and I’m sure many others.
When discussions about salary come up, the group splits in two:
If you truly are happy and satisfied with your income, you can
stop reading now. You win at life. Congratz 👏
For everybody else: Here’s some ways you can make more even
if you’re from the wrong country.
Without resorting to
Yeah but everyone was born pretty much the same. Without a
blog or podcast or even engineering skills. Now look at us, we’re
all writing code and solving business problems like there’s no
tomorrow.
You’ve heard that one before yeah? You are the average of the
five people you spend most time with.
Makes sense.
Except it’s even worse. You are the average of everyone around
you [1]. Not just five.
Richest kid on the block. Best car, nicest clothes, shiny new
iPhone. You rock.
When others complain about their income at the pub, you stay
quiet. Avert your eyes. Don’t attract attention.
What, just because you can afford a new iPhone you think
you’re better than us? Lemme tell you something, Joe, you’re
buying the next round.
Sound familiar?
Less “Wow I wonder how she got that BMW”, more “Wow look at
that asshole in her fancy car”
Also known as the tall poppy syndrome
1 👉 Change your environment
For comparison, a typical engineer’s purchasing power adjusted
salary in San Francisco is around $5800/month. Based on this
ppp calculator, this regional parity index saying SF is 1.24x
more expensive than “normal USA”, a CA salary calculator, and
my rudimentary math skills.
Hang out with ambitious folk. It’s gonna rub off on you.
Become friends with those who push you to strive not those who
pull you back.
You can still move physically, if you want to, but that’s harder
than changing where you hang out online. Avoid places with a
lot of victims complaining how life is unfair.
2 👉 Upgrade your attitude
Once you upgrade your environment, it’s time to work on your
attitude. I don’t have a shortcut for you here.
https://www.youtube.com/watch?v=k5wayr6tYzY
Or just network with people from the first section above. Ask
how you can help them succeed. You’ll be surprised how many
would love to hire you.
You’ll need soft skills for this one. Ability to motivate yourself,
stay focused, work some sales skills, think about outreach, how
to grow your business, etc.
Why?
They need to know you’re a real person with real history and
skills. Having a blog helps to an extent. Existing on the internet
helps too. Anything you can point to that says you are a
professional in your field and know what you’re doing.
When you work with someone, ask for a referral. Ask for a
testimonial. Ask them how you can do even better next time.
Your line breaks don’t matter. Your single quote, double quote,
or backtick debate is a waste of time. Named arguments or not,
short functions or long, fat views or models, single file or many,
React or Vue, NoSQL or Postgres, …
None of it matters.
Did you find customers? Do they enjoy your product? Are they
paying? Are you improving the lives of hundreds of people or
thousands?
That’s what matters.
You are a talented engineer. You’re paid a lot of money. Your job
is to keep the duct tape and chewing gum charade going long
enough for the business people to even figure out what they
want.
If you don’t feel bad looking at your old code, you’re not
growing. Fact. Your old code always looks like crap.
Old code that isn’t shitty was over-engineered the first time
around. You want to ship prototype code. Faster iterations,
faster learning, company/department/team more likely to
survive.
https://twitter.com/Swizec/status/1049786180483477504
Would you put a cast on your leg just in case? Maybe you’ll get
in a car crash and break it. Good thing the cast is already there!
Yet we do that with code all the time. An article made the
rounds recently: You are not Google.
“Oh noes I better build for scale! I need Hadoop and a million
microservices, and I better engineer this real good. What if we get
a million users all at once and our Ruby On Rails app buckles?”
You won’t.
Build it the most obvious simplest way first. When that breaks,
make it more complicated, if you have to. Simple systems are
easier to fix and they break less often.
Optimize for those and you’ll be fine. Write code anyone can
understand, write code that’s easy to expand, write code that’s
easy to fix.
However you and your team get there, it’s all good. React, Vue,
Reason, JavaScript, Java, or FORTRAN. Whatever floats your
team’s boat and gets the software shipped and in user’s hands.
San Francisco is expensive but worth it
https://twitter.com/Swizec/status/1116735066216919040
Back home a well paid engineer with a local job makes around
$25,000/year.
In San Francisco I can save almost that much every year even
without my side hustle. You need about $5000/month for a
normal life with an SO. You won’t take Uber all the time and
maybe you can stick to just 1 latte per day, eat out only a few
times per week, and keep it to 1 maybe 2 vacations per year.
And I have friends here who work with big companies. They
make upwards of $300k per year. More cash left over than they
know what to do with.
The environment pushes you 🔥
In San Francisco you never feel like you’re making it. You never
feel like you’re crazy successful. You never feel like you’re out of
the woods.
One bad month or two and you’re digging into your long term
savings. You have short-term cash buffers because d’oh.
You don’t want to dig into long term savings. Those exist for 70
year old you and for any Life Stuff that comes up.
That said …
SF is not an entrepreneurial mecca
This one surprised me.
Switch a bunch of jobs, play the career game, climb the startup
ladder, and get the hell out. Catalyst for leaving is often kids or
a good liquidity event.
Fire under butt is great when you want to grow, terrible when
you need some rest.
✌️
And that’s what I learned about San Francisco in my 4 year stint
so far
After months of thought, Matt quit his job and went looking for
investors. He realized it was too early and he doesn’t know shit.
So he started really digging into his idea and his market.
He uncovered a goldmine.
“Matt, what have you done to prove people will pay for this? Why
do you think you’re ready to build software?”
Hint: he isn’t.
Software is a tool, not a goal
I dug deeper.
“Matt, what do you need? What’s blocking you from making your
first sale?”
Well I need a website.
Why?
Why?
Voila, a website.
Why?
Err …
Matt, did anyone pay you yet? Do you know exactly what they
need to make their jobs easier? Have you talked to them?
Well I know they have to fill out a form with 465 fields and
reproduce it in triplicate and file it to the right people and it’s
just a mess and super hard and nobody wants to do that.
When I pay for Spotify, I’m paying for ease of access to all the
world’s music. Their software, the player, just needs to be good
enough.
Then, when you’re ready, when you feel the inefficiency deep
within your bones, then build your software. You’ll know what
you need.
DO more work less
https://www.instagram.com/swizec/p/BjTbTegl3pM/
Readers often ask me how they can make time to write, work,
learn, workout, code, and still read too much Hacker News and
Twitter.
How do you make time to code and learn and write? How do I
learn new languages and frameworks while still continuing
my job?
And in truth, I like Sarah Drasner’s answer a lot. I asked her that
same question at a conference last month.
https://twitter.com/Swizec/status/1172603915801522176
“If you put the sand into the jar first, there is no room for the
pebbles or the rocks. The same goes for your life. If you spend all
your time and energy on the small stuff, you will never have
room for the things that are important to you. Pay attention to
the things that are critical to your happiness. Play with your
children. Take time to get medical checkups. Take your partner
out dancing. There will always be time to go to work, clean the
house, give a dinner party and fix the disposal.”
The students started nodding in agreement at the professor’s
profound wisdom.
But then…
A student then took the jar which the other students and the
professor agreed was full, and proceeded to pour in a bottle of
beer — and then another! Of course the beer filled the
remaining spaces within the jar making the jar truly full.
That no matter how full your life is, there is always room for a
beer or two.
Oh and buy time if you can
The Jar of Life is a wonderful story and it’s missing a key
component: You can buy time.
Let me explain.
Everyone’s got the same 24 hours in the day, right? Wrong. You
can buy extra hours in the day with cold hard cash. If you have
it.
1. You make more money than you need for your immediate
needs. As a software engineer this is doable.
2. You use some of that money to buy other people’s time
3. Voila, 25 hour days. Or 26. Or 27. Maybe even 240.
They make decisions, wave their arms, and things happen. With
100 employees each day fits 800 hours. At Apple scale, Tim Cook
can get 1,056,000 hours of work done every day. 🤯
If someone else can test, let them. If someone else can compile
that report, let them. If someone else can go to that meeting, let
them. Focus on the one thing only you can do: Being awesome.
They like to cite The Mythical Man Month in their outrage. “Two
women can’t make a baby faster than 9 months” … “Adding
people to a late software project makes it even later”
You can tell they never read the book. Brooks starts with
“Communication introduces overhead, but it would take a single
programmer 50 years to build something like an operating
system.”
A soloist can move fast
We started chatting about the response to our Junior to Senior
podcast episode with David and he emailed this example:
I’ve built a lot of cool stuff I don’t think many of the devs I
oversee could do (e.g. rambly.app, robotvj.com, generative art,
etc…). And just now over the weekend, I built
videodownloadtool.io, and I did it in about a day. I spent a few
hours at night and then another few the next morning. I
showed the demo to one of my managers and asked how long
it would take for 5 of his devs to build it, and his estimate was
10 days
David is right, you can get a stupid amount of work done when
you get in the zone and bang out code uninterrupted for a few
hours. And it’s fun!
A-ha!
That’s the rub. You can bang out a prototype to test an idea or
play with your special skillset. That’s the first 90% of the work.
Now you’re left with the second 90% and that shit is a slog.
was my real value “coding” or could I just have told the team
how I wanted to approach the problem and saved myself a
day of coding and them a week and half of figuring out the
best way to do it?
David can’t write code any faster than you or I. Typing is typing.
What he can do is write the right code. His value is the
expertise.
You could even say writing the code himself was a waste of
time. Rather than a whole day of typing code, he could Own the
project like a senior engineer:
1. Grab a team
2. Explain the correct solution
3. Ensure everyone understands
4. Oversee the execution
5. Validate the result
And the best part 👉 Others can now maintain and understand
this code, even build from scratch next time a similar problem
comes up. David can thus move on to bigger and better
problems.
Being special is fun, but let others play lest you get stuck.
But fear not! Bob’s gonna help with iOS, Kevin has Android,
Stuart’s doing backend, and you’ve got the webapp. You got dis!
💪
Yes, your fault. Not your team’s, not your boss’s, yours.
I’ve been leading projects more and more this year as our team
grows and the folks with “manager” in their title become too
busy. It’s been both empowering and frustratingly humbling.
You often have no power – you don’t choose your team, you
don’t hire anyone, you don’t pick what to work on … you
manage the project, not the people.
Because you’re lead engineer your main work is still writing the
code. You are expected to focus on implementing the feature,
making tests pass, getting through code review.
But come review time all your manager is going to ask, or know,
is “Was that project successful?”
Doesn’t matter if you wrote the best code of your life and
everyone else produced crap, or you wrote shit code and
managed everyone else to excellence. Project failed.
Make sure you check with your boss to know what that means.
“What does success look like?” is the most important question in
your arsenal when starting any project.
It’s a shift in mindset
https://twitter.com/vranac/status/1187784205952045056
https://twitter.com/Swizec/status/1177311199655915520
Your job is to take on the crap work nobody else wants to do.
https://twitter.com/mjsarfatti/status/1187751598610665478
Keep a checklist
Ask your team to break down their part of the project as much
as they can. You can attach estimates to each line or not. I
personally find them useless but my bosses love seeing those
imaginary numbers. 🤷♀️
Add a checkbox next to each line. When a task gets done. Check
it off.
Your boss will ask you less often how it’s going because they’re
already gonna know.
Daily standup
Create a daily standup. In person if that’s your culture, over
video, if you’re remote.
This is a quick sync up, 5 minutes or less. Chat about the project,
discuss any issues, get an update on how everyone’s doing.
Build a team spirit. We’re all in this together and we all want the
project to succeed.
The smaller the standup, the faster it’s gonna go. You don’t
need everyone there in person. Sometimes they just need to
know when they can start working on their part.
Added bonus: your boss won’t bug you for updates. They can
read the standup recap
Delegate
This is your new super power. As lead, you get to delegate.
Delegating is hard. It means letting go of your babies, letting
others play with your legos, and stepping away from some of
the work.
But you should also delegate some of the things you can do.
Because others can do them better.
And remember, a well managed team will out-code you any day
of the week.
PS: I crowdsourced some of the ideas, you can check out for
more wisdom
https://twitter.com/Swizec/status/1187749487873183745
How to own projects like a senior
engineer
The best skill you can learn is ownership.
Ownership means that when YOU grab the project, it will get
done. No matter what.
Unless it’s no longer a priority. Then you drop it like it’s hot.
This is harder than it looks.
Overcoming obstacles
At its core, ownership is about overcoming obstacles.
How good are you on your worst day? When the code hates you,
production is on fire, user story makes no sense, and half your
day is spent helping others?
You can google for library questions. You have to ask for
codebase questions.
Excuses and reasons
Steve Jobs liked to share a great story about ownership: When
your office isn’t cleaned, you ask the janitor why.
You get the project. You read the spec. You ask questions.
Many questions. Until you are sure you understand both the
spec and the spirit of the spec.
When you ask, the PM might say “Not a business priority right
now, thanks for asking”.
Which is a lot better than getting a text on your Bahamas
vacation at 10am saying “Hey our business is down because we
tried to send 10,000 messages in 1 second and it locked the
database, what the fuck?”
And she’s not gonna ask that your React component follows
basic accessibility guidelines either. That’s on you.
Own the outcome, not the work
The second best skill you can learn is to let go.
Just because you own the project, doesn’t mean you have to do it
alone. Get help!
You take the responsibility. You don’t have to take the work.
Doing the work might even be a bad use of your time!
You’re the lead engineer for this project and the rest of your
team is there to help.
Described the tools you’ll need, the team, the procedure, talked
with the patient, managed risk, delegated tasks, helped when
there’s questions.
And then you do the hard part. The critical part. The part that
needs an expert. The bit only you can do.
Even if you love what you do, you still need grit to succeed. You
will not enjoy every moment. There will be tough shit, dark
days, days when all feels lost. Talent won’t help you there. Grit
will.
What’s grit
The key difference between gritty and ungritty people is how
they respond to setbacks.
Ungritty people fail and say “Fuck it, I’m too dumb”
Gritty people fail and say “Fuck that, I gotta try harder”
If you fall and get back up, you’re gritty. If you fall and give up,
you aren’t.
For example:
It is the right decision for Swizec to say “No, I will not try to
qualify for Boston marathon”. Because I’m 30 minutes too slow
and the amount of training to get there isn’t worth it.
Part of why gritty people win in the long run is that working
harder when you fail lets you systematically fix what you’re
currently worst at.
https://www.youtube.com/watch?v=pktF3wJKfxo
Senna started 5th, advanced to 1st in the first lap, and won with
a whopping 1 minute lead. Donington lap record is 1min
18seconds. Astounding performance.
How you can be gritty
Grit is learnable.
That which doesn’t kill you doesn’t always make you stronger.
When you can’t control your suffering, it leads to learned
helplessness.
You take those dogs and put them in an open cage. Zap them
again and the dogs who used to have a button think “Oh look
the cage is open I’ll just jump out!”.
Dogs without the button look at the open cage and think
“There’s nothing I can do. This hurts. Mom help me. Why are you
zapping me?”. And they don’t jump out. They sit there and take
it.
Often the least gritty people are those who look most
successful as kids.
A small slap in the face from Real Life absolutely floors them.
They don’t know how to deal. They’ve never failed at anything.
It is the end of days.
How to grow gritty people
Parenting is important. When you’re a parent, you’re
parenting obviously. You’re also parenting when you’re a boss.
When you’re a mentor. Sometimes even when you’re a friend.
What that means is that you support your people, you give
them what they need to succeed, you nourish, you create a safe
environment, you encourage and cajole.
You also have high standards. You let them fail. You let them
flounder and flop around. You give them a task and you accept
nothing but perfection. If what they deliver isn’t good enough,
you don’t hide the fact. You say it isn’t good and ask them to
fix.
So don’t worry if you don’t know yet what you want to be when
you “grow up”. Experiment. Try stuff. Find something that
pulls you and keep going.
❤️
Why programmers work at night
[This essay has been expanded into a book, you should read it, here]
At the gist of all this is avoiding distractions. But you could just lock
the door, what’s so special about the night?
In fact, talking to a lot of founders you’ll find out they feel like they
simply can’t get any work done during the day. The constant
barrage of interruptions, important stuff (tm) to tend to and emails
to answer simply don’t allow it. So they get most of their “work
work” done during the night when everyone else is sleeping.
The sleepy brain
But even programmers should be sleeping at night. We are not some
race of super humans. Even programmers feel more alert during
the day.
Ballmer’s peak
I seem to get the least work done right after drinking too much tea
or having a poorly timed energy drink. Makes me hyperactive and
one second I’m checking twitter, the next I’m looking at hacker
news and I just seem to be buzzing all over the place..
Conversely, when I’m slightly tired, I just plomp my arse down and
code. With a slightly tired brain I can code for hours and hours
without even thinking about checking twitter or facebook. It’s like
the internet stops existing.
I feel like this holds true for most programmers out there. We have
too much brainpower for ~80% of the tasks we work on - face it,
writing that one juicy algorithm, requires ten times as much code to
produce an environment in which it can run. Even if you’re doing
the most advanced machine learning (or something) imaginable, a
lot of the work is simply cleaning up the data and presenting results
in a lovely manner.
And when your brain isn’t working at full capacity it looks for
something to do. Being tired makes you dumb enough that the task
at hand is enough.
Bright computer screens
This one is pretty simple. Keep staring at a bright source of light in
the evening and your sleep cycle gets delayed. You forget to be tired
until 3am. Then you wake up at 11am and when the evening rolls
around you simply aren’t tired because hey, you’ve only been up
since 11am!
A city
Or maybe that’s just the alarm clocks doing their thing because
society tells us we’re dirty dirty slobs if we have breakfast at 2pm.
Fin
To conclude, programmers work at night because it doesn’t impose
a time limit on when you have to stop working, which gives you a
more relaxed approach, your brain doesn’t keep looking for
distractions and a bright screen keeps you awake.
My favorite lessons from Pragmatic
Programmer
Pragmatic Programmer is a book everyone should read at the
start of their career. The earlier the better.
David Thomas and Andrew Hunt put into words a lot of those
little feelings inside your gut that you can’t quite verbalize.
When you say “No, we shouldn’t do it that way.” and someone
asks why and you’re like “I don’t know. It just doesn’t feel right.”
The expert thinks DRY and copy pastes code to avoid duplicating
the architecture.
Duplicate your code, not your intent. Just because it looks the
same doesn’t mean it is the same.
Tracer Bullets
It’s hard to hit your target. Especially when you can’t see the
target.
Users see if you’re going the right way, you and your team get a
skeleton to hang edge cases off of. This is not a prototype. This is
part of your real code.
Prototypes and Post-it Notes
Prototypes are throwaway. You build them to explore a new
idea, technology, or architecture.
Don’t code for 2 hours then see if it works. You’ll find it’s hard to
tell which change broke your program.
Are you using inheritance to build types? The real world never
fits a clean taxonomy. Try interfaces instead.
You are not Google. You are not Facebook, Amazon, Netflix,
Apple, or Spotify either. What works for them will not work for
you.
Find what your users need, not just what they ask.
Their goal is not the tool, their goal is what your tool enables
them to do.
When something goes wrong, you know how to fix it. The whole
system fits in your head. You know what everyone is working
on, and you Just Know™ what matters most.
Great idea!
5 miles long, covering all edge cases, and with everyone’s pet
addition. Your idea is on line 5 paragraph 6. Now
unrecognizable.
You get to work
Work starts with reviewing the spec. You talk to the PM ask a
bunch of questions, poke holes in the edge cases, talk to the
clients again just to make sure everyone understands the spec
in the same way.
Estimate: 5 days.
You spend another 2 days writing test cases for QA, help docs
for feature testing, and some documentation for yourself. Gotta
know how you’ll know the feature works before you start.
Them’s the rules.
Code is just a checklist
You finally get to code. 2 weeks since you started the project.
Ah bliss
You’ve done the engineering. The fun stuff. Now you’re just
doing work. Like digging a trench.
Time to deploy
10 days later you’re ready to deploy.
Oh the estimate was 5? Ha! You forgot work takes work. Even if
it’s simple, easy, and following a checklist, it still takes time.
Frustrating, I know.
Maybe.
HOW great engineers hack The
Process
Earlier this week we talked about why engineers hack the
process. Today I wanna talk about how.
Can’t even trust you to read the spec? Fine, no coding without a
detailed time estimate verified and agreed upon by five
independent parties.
trust
First you have to build trust. Without trust you won’t have the
leeway to hack the process.
Take ownership, fix the typo, and explain how you’ll ensure a
typo never gets into production again. +10 points.
responsibility
Second, you need to take responsibility.
“Oh but I was just following the process. You should fix that if you
want to fix this sort of mistake”
Weak move my friend. -5 trust points, but I get it.
When you hack the process, it’s all on you. Everything works
out? You’re a hero.
And you gotta own it. Take full responsibility. You hacked the
process and it didn’t work out. Own it, apologize, fix the
mistake, explain the incentives, move on.
judgement
Glaring hole in the spec? Propose a solution, tell the PM, let
them add to the spec.
Happy hacking.
What I learned from Software
Engineering at Google
When I first picked up Software Engineering at Google I thought it
was another one of those FAANG books full of lessons that make no
sense at human scale. I was surprised, the lessons apply to teams as
small as 5.
This is a “good shit stays” recap. The lessons that stick with you a
few weeks after reading.
Software Engineering vs. Programming
The difference between Software Engineering and Programming is
at the core of this book. Titus Winters, author of the first chapter,
finally made it click for me.
Programming is about writing code. You take a task and write code
to solve it.
You always face the underlying concern of “What’s the expected life
span of this code?”. How you approach a black friday marketing site
is different from how you approach your company’s payment
system.
Beyonce rule and Hyrum’s law
If you liked it you should’ve put a test on it
As the system grows, you start to forget. Add a feature, fix a bug,
part of the system you didn’t even touch breaks. 🤨
You fix a bug … Joe from billing relied on that bug for his code to
work. 💩
The Beyonce rule says that if Joe liked that bug, he shoulda put a test
on it. When you fix the bug, his test breaks, and you say “Oh shit,
gotta fix Joe’s code too”.
And because Joe put tests on everything he likes about his code, you
can go fix it without understanding all the gnarly details.
Shift left
The earlier you find a mistake, the easier it is to fix.
Unit tests take a few seconds to verify your code does what you
think it does. Like a checksum.
Scalability
The part that stuck with me was a hunch I’ve had for a while 👉 stubs
and mocks are bad.
Your tests are only as good as your mocks. They hide the true
behavior of your system, drift away from reality, and take a lot of
effort to maintain.
After all that, you can’t even trust your tests. Like that time I had
perfectly passing unit tests, deployed to staging, and realized my
code relied on a database column that doesn’t exist.
Keep shipping.
The bigger the change, the harder to figure out which commit or
feature broke production. Small changes make it obvious.
Upgrading from 4.3.7 to 4.3.8 is no big deal. Going from 4.3.7 to 4.4.0
might require a few changes. You can run around and update.
They won’t.
You have to do it for them. It’s the fastest way. Get into their code
and make the update.
And if you have time, read the book. I liked it more than I thought.