How engineers at FAANG vibe code
An interesting perspective by FAANG engineer on how engineers at FAANG companies code (and how everyone else should).
A quick tl;dr is:
Give me six hours to chop down a tree and I will spend the first four sharpening the ax - Abraham Lincoln
That is, you don’t start with vibe coding. You spend all your major time in defining the design doc, fine tuning the requirements..and then write tests.
Here is the note from the engineer.
You still always start with a technical design document. This is where a bulk of the work happens. The design doc starts off as a proposal doc. If you can get enough stakeholders to agree that your proposal has merit, you move on to developing out the system design itself. This includes the full architecture, integrations with other teams, etc.
Design review before launching into the development effort. This is where you have your teams design doc absolutely shredded by Senior Engineers. This is good. I think of it as front loading the pain.
If you pass review, you can now launch into the development effort. The first few weeks are spent doing more documentation on each subsystem that will be built by the individual dev teams.
Backlog development and sprint planning. This is where the devs work with the PMs and TPMs to hammer out discrete tasks that individual devs will work on and the order.
Software development. Finally, we can now get hands on keyboard and start crushing task tickets. This is where AI has been a force multiplier. We use Test Driven Development, so I have the AI coding agent write the tests first for the feature I’m going to build. Only then do I start using the agent to build out the feature.
Code submission review. We have a two dev approval process before code can get merged into man. AI is also showing great promise in assisting with the review.
Test in staging. If staging is good to go, we push to prod.
Overall, we’re seeing a ~30% increase in speed from the feature proposal to when it hits prod. This is huge for us.
TL;DR: Always start with a solid design doc and architecture. Build from there in chunks. Always write tests first.