I am an Engineering Manager working at Google with almost 20 years of experience. If I could sit down with a Jr. Software Engineer, here are 11 good pieces of advice I would tell them that I learned through my experiencesâŠ
1// If your app only serves around 10 users, a single server and a basic REST API will do the job. But if youâre handling 10 million requests a day, you need to start thinking about load balancers, autoscaling, and rate limiting.
2// If only one developer is building features, you can skip the ceremonies and just ship and test manually. But if you have 10 developers pushing code daily, itâs time to invest in CI/CD pipelines, multiple testing layers, and feature flags.
3// If a bit of downtime just breaks a single page, adding a banner and moving on is usually enough. But if downtime kills a key business flow, redundancy, health checks, and graceful fallbacks are absolutely necessary.
4// If youâre just consuming APIs, make sure you know how to handle errors like 400s and 500s. If youâre building APIs for others, you need to version them, document everything, test thoroughly, and set up proper monitoring.
5// If your product can tolerate a few seconds of lag, always pick code clarity over squeezing out a little more performance. But if users are waiting on every click, profiling, caching, and edge delivery need to become a part of your daily work.
6// If your data easily fits in RAM, keep things simple and store it in memory using maps. But if your data spans terabytes, you have to start thinking about indexing, partitioning, and optimizing for disk access patterns.
7// If youâre coding alone, poor naming might just annoy you. But in a growing team, bad names become a ticking time bomb for everyone.
8// If youâre only fixing bugs once a week, basic logs and console prints are probably enough. But when youâre running production systems, you need structured logs, tracing, real-time alerts, and dashboards.
9// If youâre up against tight deadlines, write the simplest code that gets things working. But if the code is meant to last, focus on readability, thorough testing, and making it easy to change in the future.
10// If youâre working alone, âit works on my machineâ might be good enough. But in a real team, reproducible builds and shared development setups are the bare minimum.
11// If your app is new, move fast and donât worry too much about cleaning up right away. But once your app is stuck in maintenance hell, youâll pay the price for every rushed decision you made in the past.
People think software engineering is just about building things.
Itâs really about:
â Knowing when not to build
â Being okay with deleting good code
â Balancing tradeoffs without always having all the data
The best engineers donât just ship fast.
They build systems that are safe to move fast on top of.
1// If your app only serves around 10 users, a single server and a basic REST API will do the job. But if youâre handling 10 million requests a day, you need to start thinking about load balancers, autoscaling, and rate limiting.
2// If only one developer is building features, you can skip the ceremonies and just ship and test manually. But if you have 10 developers pushing code daily, itâs time to invest in CI/CD pipelines, multiple testing layers, and feature flags.
3// If a bit of downtime just breaks a single page, adding a banner and moving on is usually enough. But if downtime kills a key business flow, redundancy, health checks, and graceful fallbacks are absolutely necessary.
4// If youâre just consuming APIs, make sure you know how to handle errors like 400s and 500s. If youâre building APIs for others, you need to version them, document everything, test thoroughly, and set up proper monitoring.
5// If your product can tolerate a few seconds of lag, always pick code clarity over squeezing out a little more performance. But if users are waiting on every click, profiling, caching, and edge delivery need to become a part of your daily work.
6// If your data easily fits in RAM, keep things simple and store it in memory using maps. But if your data spans terabytes, you have to start thinking about indexing, partitioning, and optimizing for disk access patterns.
7// If youâre coding alone, poor naming might just annoy you. But in a growing team, bad names become a ticking time bomb for everyone.
8// If youâre only fixing bugs once a week, basic logs and console prints are probably enough. But when youâre running production systems, you need structured logs, tracing, real-time alerts, and dashboards.
9// If youâre up against tight deadlines, write the simplest code that gets things working. But if the code is meant to last, focus on readability, thorough testing, and making it easy to change in the future.
10// If youâre working alone, âit works on my machineâ might be good enough. But in a real team, reproducible builds and shared development setups are the bare minimum.
11// If your app is new, move fast and donât worry too much about cleaning up right away. But once your app is stuck in maintenance hell, youâll pay the price for every rushed decision you made in the past.
People think software engineering is just about building things.
Itâs really about:
â Knowing when not to build
â Being okay with deleting good code
â Balancing tradeoffs without always having all the data
The best engineers donât just ship fast.
They build systems that are safe to move fast on top of.