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?
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
@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
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.
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.
🔥 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 🧵
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:
🔥 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.