Sign in

Fernando

@francofernando.com
1K followers 46 following 384 posts

Dad, husband. Software engineer. I write about production software: systems, code, tradeoffs. Author of the Polymathic Engineer. polymathicengineer.com

PostsRepliesMedia
Fernando @francofernando.com · 28/09/2026
Every guarantee TCP gives you is paid in bandwidth and latency. The IP protocol doesn’t ensure that the data you send arrives at its destination. If a router gets overloaded, it might start dropping packets. TCP fixes that on top of IP. It breaks the byte stream into numbered segments,
100
Fernando @francofernando.com · 22/09/2026
Your program never reads a file. It asks the kernel to do it. The kernel is the only part with direct control over the hardware. A read is a system call: control goes to the kernel, the kernel does the work, and control comes back.
100
Fernando @francofernando.com · 01/07/2026
The one rule that prevents most BFS bugs: mark a node visited when you enqueue it, not when you dequeue it. If you mark on dequeue, the same node gets pushed many times before it is processed -> duplicates in the queue, wrong distances, TLE.
100
Fernando @francofernando.com · 01/01/2026
I love the first day of the year because it reminds me that one of life's greatest joys is to begin. Living is beautiful because it means to start, always, at every moment. You're always on time to have a life that makes you happy every morning. Happy New Year, lovely folks!
000
Fernando @francofernando.com · 28/12/2025
In software development, the simplest solution is almost never the most obvious, so reaching it is actually not trivial. In many cases, you have to design big parts of your software at least twice.
110
Fernando @francofernando.com · 12/09/2025
The evolution of a web application architecture when going from serving hundreds to millions of users. newsletter.francofernando.com/p/from-a-sin...
newsletter.francofernando.com
From a Single Server to Global Scale
The evolution of a web application architecture when going from serving hundreds to millions of users.
010
Fernando @francofernando.com · 31/08/2025
Be honest with yourself about what you want and work hard to get it. Be meaningful and intentional with your time. That is the only way to ensure that you give yourself the best odds.
010
Fernando @francofernando.com · 29/08/2025
When they hear "Don't Repeat Yourself," 99 out of 100 developers think of copy-paste code. But DRY is about much more than that. The main focus is on knowledge, not code. I wrote more about how to use DRY without falling into common traps here: newsletter.francofernando.com/p/the-dry-pr...
newsletter.francofernando.com
The DRY Principle
Why every software engineer should care about repetition: solutions that actually works.
010
Fernando @francofernando.com · 28/08/2025
We all go through 2 significant steps in our careers: - Junior to mid-level developer - Senior developer In the first one, it matters more how well you code. "Nobody" will still listen to you. But in the second stage and beyond, how well you communicate matters way more.
020
Fernando @francofernando.com · 26/08/2025
One thing I'm glad I paid a lot of attention to during my CS studies is "networking fundamentals". Almost every project I've worked on has needed that background, and I've seen others who didn't have it have a hard time.
020
Fernando @francofernando.com · 22/08/2025
How do CDNs speed up content delivery on the internet? You can read my in-depth article on how CDNs work under the hood and best practices when using them here: newsletter.francofernando.com/p/a-critical...
newsletter.francofernando.com
A Critical Guide to Content Delivery Networks
How do CDNs work, and how to get the most benefits out of them.
020
Fernando @francofernando.com · 21/08/2025
If you work hard and are nice to people, you can get very far in life. Being kind and honest to everyone is a skill that isn't given enough credit.
010
Fernando @francofernando.com · 19/08/2025
If you're not interested in your craft, you'll struggle to get a better software engineer. Getting passionate isn't a gift, but a choice. Pick a path, and get into it. Skills don't just come from a desire.
021
Fernando @francofernando.com · 17/08/2025
Life is not at extremes but somewhere in the middle: - Work out for 45 minutes instead of 3 hours - Do deep work for 2-3 hours instead of 10 - Get 8 hours of sleep instead of 4 Take breaks, think, and live. We're humans, not robots.
041
Fernando @francofernando.com · 15/08/2025
If you're in a system design interview, and you start brainstorming technical stuff, you're on the wrong path. You're missing the most critical part of the design process: requirements. I wrote about how requirements impact your design choices here: newsletter.francofernando.com/p/requiremen...
newsletter.francofernando.com
Requirements
Understanding system requirements in distributed system design.
000
Fernando @francofernando.com · 14/08/2025
If you want to become a better programmer, there is no secret sauce. You just need to spend a lot of time coding and building projects.
000
Fernando @francofernando.com · 09/08/2025
Building something alongside your 9-5 job is rewarding, but it's important to have limits. There will be times when your body will take breaks for you if you don't take breaks when you need them.
010
Fernando @francofernando.com · 08/08/2025
It took me 5+ years to become confident in my skills as a software engineer. But I could have done it in less time if I had followed the 6 pieces of advice in the article below: francofernando.substack.com/p/how-to-bec...
francofernando.substack.com
How to Become a Confident Software Engineer
Six critical steps to build your confidence as a software engineer.
020
Fernando @francofernando.com · 31/07/2025
When I started as a developer, I thought I had to know everything. But I found out that was a fool's errand. You can always learn new tech and find better ways to do things. Do you need to know everything to be successful? Not at all. But can you learn something new every day? Definitely.
000
Fernando @francofernando.com · 29/07/2025
Storytelling is one of the best skills to have, both in interviews and in your daily work. It makes it so much easier to establish empathic relationships with other people.
000
Fernando @francofernando.com · 28/07/2025
Companies do not promote people for following the tickets. They promote people who solve problems and add value to the business. If you want to move up, ask yourself if you're only writing code or also solving problems.
010
Fernando @francofernando.com · 24/07/2025
Multitasking makes you less productive. It's better to start a task and don't switch until it's done.
000
Fernando @francofernando.com · 21/07/2025
Good code is neither clever nor complex, but simply readable. Code that you read, and it clicks in your mind.
001
Fernando @francofernando.com · 15/07/2025
When I started writing two years ago, I never imagined my newsletter would become a bestseller. I'm speechless. Thank you all for your trust and support 🥹 It means a lot to me and pushes me to always do better.
020
Fernando @francofernando.com · 08/07/2025
As a software engineer, work ethic matters as much as good skills. You can't hide bad work habits with good skills. If you stop caring, you'll lose momentum. And people who used to pay you for your skills will no longer believe in you.
020
Fernando @francofernando.com · 07/07/2025
Being able to manipulate pointers is crucial for working with Linked Lists and Binary Trees. Once you're comfortable with pointers, understanding such algorithms is much easier.
010
Fernando @francofernando.com · 06/07/2025
If you're stuck, all you have to do is do what you're avoiding. If that looks impossible, take the smallest step possible toward what you're avoiding and see what happens from there.
020
Fernando @francofernando.com · 04/07/2025
Most software engineers are used to working in a single-process environment. But in a distributed system, you must change the way you think about problems. There are 5 main challenges that you should keep in mind. I wrote about them below: newsletter.francofernando.com/p/the-challe...
newsletter.francofernando.com
The Challenges of Distributed Systems
What every engineer should know when working with distributed systems.
011
Fernando @francofernando.com · 27/06/2025
Your public API has become popular. Many developers are creating apps that run on top of it. But what happens if you need to change the API? This is where a good API versioning strategy becomes critical. I wrote everything you should know below: newsletter.francofernando.com/p/apis-versi...
newsletter.francofernando.com
APIs Versioning
Best practices for managing API changes without breaking users' trust.
010
Fernando @francofernando.com · 23/06/2025
Three valuable pieces of advice I got in my career: • don't take feedback personally, but see it as a chance to get better • care more about who you work with than what you work on • apply for jobs even if you don't think you're good enough for them
000
Fernando @francofernando.com · 20/06/2025
Managed object storage like S3 or Azure Storage are a critical part of any modern app. So it's helpful to grasp how they work under the hood and how to make the best use of them. I wrote everything you need to know in the article below: newsletter.francofernando.com/p/understand...
newsletter.francofernando.com
Understanding Object Storage in Modern Cloud Systems
How object storage systems like S3 or Azure Storage work, and how you can make the best use of them.
011
Fernando @francofernando.com · 19/06/2025
I feel best when I follow a regular sleep routine and go to bed at the same time every night. My increased productivity in the morning compensates any potentially lost extra hours in the night.
110
Fernando @francofernando.com · 17/06/2025
This is one of my favorite pages of the Design Data Intensive Application book. It's amazing how you can build the worlds simplest database using only two bash functions. A pleasure to read every time.
291
Fernando @francofernando.com · 16/06/2025
First solve the problem, then code it
010
Fernando @francofernando.com · 10/06/2025
It's not a good idea for coding interviews to grind LeetCode and do a thousand problems. It's better to solve fewer problems but understand how to solve them and the patterns beneath them.
010
Fernando @francofernando.com · 08/06/2025
Having a too-high lifestyle is like being locked up in a cage that you can't get out of. I wouldn't trade my freedom and time for it.
010
Fernando @francofernando.com · 05/06/2025
It's easier to grow as a software engineer if you find good mentors. Not just because they give you feedback but also because they hold you accountable for reaching your goals.
000
Fernando @francofernando.com · 03/06/2025
The best thing that can happen to you at work is to focus on a single critical project.
000
Fernando @francofernando.com · 03/06/2025
Writing code without an understanding of the problem and the solution to implement is rarely a good idea.
010
Fernando @francofernando.com · 30/05/2025
If you're preparing for coding interviews, don't skip the 2-pointers method. The key idea is to have 2 pointers (i.e. indexes) going through an array. But there are different ways to implement it. I explained all them with practical examples below: newsletter.francofernando.com/p/mastering-...
newsletter.francofernando.com
Mastering the Two-Pointers Technique
How to use the two-pointer method to efficiently solving array and string problems (with code templates).
010
Fernando @francofernando.com · 29/05/2025
There is so much to learn about software engineering that knowing it all inside and out is impossible. Even the more experienced people are junior in some things. My way to go is to have a high-level understanding of many areas and specialize in a few of them.
020
Fernando @francofernando.com · 26/05/2025
The best tech companies don't care what computer languages you know. They mostly want strong, all-around people who can quickly use new information to solve problems.
010
Fernando @francofernando.com · 26/05/2025
Learning to write code is one thing, learning to be a software engineer is another
020
Fernando @francofernando.com · 25/05/2025
It takes time to become valuable. Stop chasing immediate success. Instead invest your time and effort in becoming a person of value.
010
Fernando @francofernando.com · 24/05/2025
The 9 most important types of algorithms to know for coding interviews: • Sorting • Searching • Backtracking • Strings Algorithms • Graphs Algorithms • Greedy Algorithms • Trees DFS and BFS • Divide and Conquer • Dynamic Programming
010
Fernando @francofernando.com · 23/05/2025
All I need to be more productive are time blockers and no meeting days
000
Fernando @francofernando.com · 22/05/2025
Interviews are a two-way street. Companies interview you to see if you're a good fit. But you can also interview the company to see if you really want to work there.
010
Fernando @francofernando.com · 22/05/2025
Good developers not only write, but also read a lot of code.
010
Fernando @francofernando.com · 20/05/2025
Once you understand DFS and BFS, there is no reason to be scared about binary tree questions. Almost all of them can be solved by slightly modifying these traversal methods.
000