Sarah Drasner Profile picture
Dec 21 9 tweets 2 min read
Most of us who work on heavily used systems at scale saw this one coming, and that they would propose a rewrite as they just have, and we also don’t think this is the answer.

This is why hubris is a very counterproductive quality in engineering.

Why do we all agree on this? George Hotz: that's what Elon told em my job was and I will George Hotz: Resigned from Twitter today. Appreciate the opp
Legacy and heavily used systems have decision accumulation over the years:

some decisions were made because of the technology available at the time, some due to a feature need, some due to dependency management, some were made to make the system more secure or to test it.
When the staff were fired/walked out the door, they took with them all of this context. The existing code can tell you what it does and how, but it can’t tell you why.
Good devs are curious: they explore context before they get to work.

None of that happened, under the assumption that “I’m so smart, I can figure everything out on my own, quickly.” You see this a lot with junior devs or folks who haven't had to maintain large systems over time
Let’s say a massive rewrite was even feasible for them, which I have high doubts of. This doesn’t take into account the opportunity cost of the time spent doing this.

Do they have SLOs in place? How will they maintain those while rebuilding?
Even if all of those were easy, which they aren’t, and even if they had a perfect new system all set up, what about the cost and risk of a massive migration? Migration costs are huge, and ensuring stability in that process even more so.
How are they testing any of that new infrastructure, and given that this is probably a multi-year project, what’s the plan for shipping new features in the interim? Who is going to set up security and trust reviews for the changes they are making (critical in social media)?
If you have a lot of hubris with no curiosity, you might not understand:
- how to build upon lessons learned from the old system
- the opportunity cost of trying something new
- the complexity of a massive rewrite, or why the system became complex for the current features
A dev who can build something alone quickly may not have the skillset to evaluate these tradeoffs. Deciding that if you are smart and can’t figure it out, it must be broken is irresponsible.

This is why a curious mindset is one of the greatest strengths an engineer can possess.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Sarah Drasner

Sarah Drasner Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @sarah_edo

Jun 20, 2021
@KhaledElAnsari @codegodzilla @PhilipJBasile @dabit3 Things I love about Vue: 1/?
- extremely declarative- your code can be highly organized and legible because of nicely done abstractions
- on that note, computed properties are wonderful and cached based on their dependencies. I wrote here about that: css-tricks.com/methods-comput…
@KhaledElAnsari @codegodzilla @PhilipJBasile @dabit3 - Abstractions break down when you can't get under the hood. Vue provides great APIs so that you can do just this, such as custom directives, watchers, and the like
- The new Composition API allows for a few ways to structure reusable pieces of a larger codebase
@KhaledElAnsari @codegodzilla @PhilipJBasile @dabit3 - Things in the ecosystem like Vuex, Nuxt, Vue Router, and Gridsome offer extremely nice tools with great DX that are a pleasure to work with. The Vue core team also either brings these tools in and/or collaborates with teams so that they're in lockstep
Read 6 tweets
Apr 15, 2021
Well, here goes nothin’! I was asked to open source the career ladders I used for my organization, I hope it’s a helpful resource for people:

📝 Article: css-tricks.com/the-importance…
📍 Site: career-ladders.dev

A little thread with some thoughts about this 🧵
It’s been a year since I was asked to do this. Career ladders aren't enough on their own- it’s essential to discuss how they work in practice, which is why I wrote an article too.

Rubrics without action are pointless because they don’t actually drive clarity for your employees.
The truth is, it’s not important for an engineering manager (EM) to use my process in particular. It is, however, *very important* that they are clear with their employees about expectations and direction.
Read 5 tweets
Mar 21, 2021
In my honest opinion, the closer people get to a playful, childlike state, the more they can solve problems with some depth and creativity.

This is why trust on a team is paramount to do your best work.
It’s way harder to get into a creative problem solving state if you’re scared, unsupported, or worried. It may sound like kindergarten stuff but I think it’s more fundamental than that
Ask folks who feel like every PR review is a nightmare- they’re not doing their best work, they’re working to stay guarded. Versus a team that supports each other in PR review, I bet you’ll see they talk through things better and are willing to try different approaches.
Read 4 tweets
Feb 28, 2021
A small thread on why JS devs might find Go interesting (this thread is not for Go devs, it is intentionally 101) 🧵

1. Short variable declaration: Variable declaration: var x = 10   but you can also say: x :
2. The time package is really nice. For instance, you can import “time” and then use it like so: time.Sleep(time.Second)  This will give you a one second gap
3. You can import and alias packages very quickly. for instance, to import that package of time, you could say

import “time”

or to import multiple package and/or alias them: package main   import (  "fmt"  t "time"
Read 8 tweets
Feb 16, 2021
🔥 As of this month, all you need to write a Serverless Function with Netlify are these lines of code!! Netlify automatically detects your directory now

Seriously, that’s it!

Here’s a thread of some other great things you may not know about Netlify Functions 🧵 exports.handler = async (ev...
For those unfamiliar with Serverless, it allows event-driven logic on the server w/o setting up infrastructure. Think: you write a function like you’re used to, & it’s on the server!

Netlify's special bc of how quick it is to set up- no API gateway config, just write some code!
It’s not just for JS either, you can write Go functions as well: func handler(ctx context.Co...
Read 7 tweets
Feb 1, 2021
🔥 It's probably common knowledge that Netlify makes deployment incredibly simple- you can connect a repo, pick a build command and 🚀

or just drop a folder in and you're done!

...but here are some other things you might not know about our deploys that are very special 🧵
Netlify has a concept of "atomic" deploys- which means a few things:

- You can preview a deploy when you've or someone else has just put in a PR

- You can roll back to ANY previous state, with one click, in milliseconds

- You always know what state your cache is in!
Netlify allows you to cancel a deploy- did you just put in a change, merge it and then realize you've made a terrible mistake? I've never done that. 😬 er...

No worries. You can cancel that deploy with the click of a button.
Read 9 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(