[{"data":1,"prerenderedAt":73},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fwriting-maintainable-code":26,"\u002Fblog\u002Fwriting-maintainable-code-surround":70},[4],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Blog","\u002Fblog","blog",[9,13,17,21],{"title":10,"path":11,"stem":12},"How I Built a Reusable Component Library from Scratch","\u002Fblog\u002Fbuilding-a-reusable-component-library","blog\u002Fbuilding-a-reusable-component-library",{"title":14,"path":15,"stem":16},"From Idea to Production: My End-to-End Engineering Process","\u002Fblog\u002Ffrom-idea-to-production","blog\u002Ffrom-idea-to-production",{"title":18,"path":19,"stem":20},"Web Performance Is a Feature","\u002Fblog\u002Fweb-performance-is-a-feature","blog\u002Fweb-performance-is-a-feature",{"title":22,"path":23,"stem":24},"The Case for Boring Technology and Maintainable Code","\u002Fblog\u002Fwriting-maintainable-code","blog\u002Fwriting-maintainable-code",false,{"id":27,"title":22,"author":28,"body":32,"color":58,"date":59,"description":60,"extension":61,"icon":62,"image":63,"layout":64,"meta":65,"minRead":66,"navigation":67,"path":23,"seo":68,"stem":24,"__hash__":69},"blog\u002Fblog\u002Fwriting-maintainable-code.md",{"name":29,"avatar":30},"Rong Yuthean",{"src":31,"alt":29},"\u002Fprofile.jpg",{"type":33,"value":34,"toc":54},"minimark",[35,39,42,45,48,51],[36,37,38],"p",{},"I recently inherited a project that challenged how I think about technical choices. It used five different databases, two message brokers, and a custom framework, all for an application serving a few thousand users.",[36,40,41],{},"It got me thinking about the value of \"boring technology\": proven tools whose failure modes are well understood, so your team can spend its innovation budget on the problems that actually matter to the business.",[36,43,44],{},"Over three months, we consolidated onto PostgreSQL and a single queue, removed the custom framework in favor of well-documented open-source libraries, and added tests around every behavior before we changed it.",[36,46,47],{},"The results were remarkable: deployment time dropped from an hour to eight minutes, on-call incidents fell by 70%, and new engineers were shipping changes in their first week instead of their first month.",[36,49,50],{},"I now ask a few questions before adopting any new tool: \"What problem does this solve that we can't solve today? Who will maintain it at 3 a.m.? How will the next engineer understand it?\"",[36,52,53],{},"In our rush to adopt the newest thing, it's easy to forget that the most valuable code is often the simplest: code that's easy to read, easy to test, and easy to change.",{"title":55,"searchDepth":56,"depth":56,"links":57},"",2,[],"#0ea5e9","2025-01-28","Why choosing simple, proven tools and writing code for the next reader leads to more reliable systems and happier teams.","md","i-lucide-code",null,"chat",{},7,true,{"title":22,"description":60},"a01srUcEVzal5DqpcuDu_9ZnVFJUe9657-m_ThP9TRg",[71,63],{"title":18,"path":19,"stem":20,"description":72,"children":-1},"How measuring and optimizing real-user performance metrics directly improved engagement, conversion, and the overall user experience.",1793207677265]