software engineer
pravin ireri
i build backend systems that are boring and reliable.
currently leading engineering at nest friends.
distributed systems, api design
architecture decisions, code reviews
the hard lessons only production teaches
Engineering Lead
scaling a social platform backend without the usual chaos.
keep the architecture boring. postgres, redis, typescript. no microservices until absolutely necessary.
system handles 10x traffic with the same team size. deploys are uneventful (the best kind).
what i learned: most scaling problems are organizational, not technical.
what broke: tried to optimize too early once. learned patience.
AI Research
language models fail in ways that are hard to detect.
built evaluation pipelines that catch silent failures. focus on edge cases.
reduced production incidents by 40%. team sleeps better.
what i learned: ai systems need more skepticism, not more features.
Instructor
kids learn to code but not to think.
start with problems, not syntax. let them struggle productively.
students built projects they actually cared about.
what i learned: teaching clarifies your own understanding. explaining is debugging.
if i can't explain it, it's probably wrong.
complexity is debt. every abstraction should earn its place. i prefer systems a new engineer can understand in an afternoon.
// bad: clever
data.reduce((a,b) => ({...a, [b.k]: [...(a[b.k]||[]), b]}), {})
// good: obvious
const grouped = groupBy(data, 'category')
i think about systems like gardens — they need regular pruning, not just new features. the goal is a codebase that feels smaller over time, not larger.
realized most bugs are communication failures.
spent a week debugging what turned out to be a misunderstanding between two teams.
removed more code than i wrote. felt good.
deleted 1,200 lines of 'just in case' code. nothing broke.
started saying no to features. harder than expected.
every feature is a commitment. learning to protect the team's focus.
refactored the same thing three times. each time simpler.
first version: 400 lines. final version: 80 lines. same behavior.
learned that documentation is just delayed thinking.
if it's hard to document, the design is probably wrong.
hired someone smarter than me. best decision.
the team improved faster when i stopped being the bottleneck.
first on-call rotation where nothing happened.
boring is beautiful. systems should let you sleep.