In software, we mostly care about two metrics: whether the code does what we want and whether it does so efficiently. Often, efficiency isn’t critical. Keep building web services in Python—that’s fine.
But when performance matters—and it eventually does—people sometimes assume they’re facing a Pareto distribution: one bottleneck that, if eliminated, will drastically improve performance. This holds true at the micro level, in isolated benchmarks, but not broadly.
Consider shopping for a TV. You first head to the TV section, then narrow it down to the sizes you need. Next, you optimize for price, seeking the cheapest TV that meets your needs.
How do you produce affordable TVs?
As the new CEO of a TV company, you’d first examine major costs. Transportation, perhaps? Some cost components, like taxes or already-cheap boxes, can be ruled out as insignificant.
However, you eventually realize that making affordable TVs requires getting hundreds, if not thousands, of details right.
The same applies to software. High efficiency demands getting hundreds of things right. This is often used as an excuse not to optimize: “Why bother with X? It only helps in specific cases.” That’s fallacious. To win the war, you must win hundreds of battles. Win the battles one by one.
Here are a few things you probably did not know about Reddit's iOS and Android apps: they are ~2.5M lines of code each, with 500+ screens, and a total of 200 native mobile engineers work on the both of them (including a dedicated iOS and Android mobile platform team)
But a few years ago, things looked very different - and Reddit quietly rebuilt their native apps from 2021. Today's conversation goes through what happened and how, with three engineers from Reddit’s mobile platform team who led this work: Lauren Darcey (Head of Mobile Platform), @bkobilansky (iOS Platform Lead), and Eric Kuck (Principal Android Engineer)
Watch or listen:
• YouTube: https://t.co/KI3JlmEn8P
• Spotify: https://t.co/qL2Ki02Z5Y
• Apple: https://t.co/am48SkHVGn
---
Brought to you by:
• @withgraphite — The AI developer productivity platform https://t.co/ro6mnhaZrS
• @getsentry — Error and performance monitoring for developers. Get 150k errors (three months of Team Plan) for free at https://t.co/ewIA96b3Y0
---
Three of my takeaways from this episode:
𝟭. 𝗣𝗼𝗼𝗿 𝗱𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿 𝗲𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲 𝗰𝗮𝗻 𝘀𝗹𝗼𝘄 𝗱𝗼𝘄𝗻 𝗮 𝗰𝗼𝗺𝗽𝗮𝗻𝘆 – 𝘀𝗼 𝗽𝗮𝘆 𝗮𝘁𝘁𝗲𝗻𝘁𝗶𝗼𝗻! One of the reasons Reddit started investing heavily in modernizing its mobile stack was that the “old stack” was slowing down developers. Reddit’s platform team got proof of this simply by asking native engineers about the biggest development-related challenges they face.
𝟮. 𝗣𝗹𝗮𝘁𝗳𝗼𝗿𝗺 𝗲𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗶𝘀 𝗵𝗮𝗿𝗱 𝘄𝗼𝗿𝗸. Advice from Brandon for anyone looking to work on a platform team:
"You should try to work at a tech company for a year or two and actually see what happens after you ship a system — and then the assumptions change! You then have to figure out how to keep this thing going. You get a bunch of software design intuition because you have to like re-evaluate your assumptions for an incredibly long time. If you can do that, you're probably ready for platform stuff."
𝟯. 𝗚𝗲𝗻𝗔𝗜 𝗰𝗼𝗱𝗶𝗻𝗴 𝘁𝗼𝗼𝗹𝘀 𝗳𝗲𝗲𝗹 𝗹𝗶𝗸𝗲 𝘁𝗵𝗲𝘆 𝗮𝗿𝗲 𝗻𝗼𝘁 “𝘁𝗵𝗲𝗿𝗲” 𝘆𝗲𝘁 𝘄𝗶𝘁𝗵 𝗻𝗮𝘁𝗶𝘃𝗲 𝗺𝗼𝗯𝗶𝗹𝗲. LLMs integrated into IDEs seem to be increasingly helpful with backend, fullstack, web and even cross-platform (React Native / Expo) projects. However, Reddit’s mobile team shared that they get a moderate boost from the Apple and Android Studio LLM additions.
Native mobile development is distinctively different from web, fullstack and backend coding – and it seems that these IDEs with AI functionality have not done much to optimize for the expereince of native mobile engineers. Over time, this will likely change – but it’s a reminder that there are differences between fullstack, backend and native mobile development.(I wrote a book reflecting on more of the challenges unique to native mobile titled Building Mobile Apps at Scale)
@GiffLasta Looked familiar right away. When you said you work in tech that reminded me where I've seen it. Even though I have only a passing interest in 3d graphics, I've seen it many times in publications, tutorials, etc.
This was my tenth(!) year building 25 days of puzzles for #AdventOfCode. You can solve them all for free and in whatever programming language you like. I hope they help people become better programmers. 🌟
The first puzzle comes out in two hours: https://t.co/bDIPRWZupr
Last year, my entire school (all professors and staff) was required to take a training course about how to write better emails. As I am good employee, I took rigorous notes and paid attention.
The lesson included advice such as 'never use emoji' and 'always use a formal tone that ends with Sincerely yours''. Also, you should always ask a colleague to read over your email before sending it.
A year later, I include an emoji in almost every email. I have shortened my emails, made them less formal. And I avoid discussing the content with anyone before sending them.
Hear me out: there is a logic to my madness.
Basically, whenever you are subjected to formal training, you can be pretty sure that they are trying to reverse some natural or emerging common practices.
So it is a great way to find out where we are headed. Just do the exact opposite of everything they recommend.
I’m thrilled to announce the tech preview of Skip: dual-platform app development in Swift.
You write a modern iOS app in Swift and SwiftUI. Skip’s Xcode plugin generates a native Android Kotlin and Compose version!
Docs: https://t.co/9O7v6HS0CJ
Video: https://t.co/tHNWpj1QlJ