[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-os0tl3ggPn-PgQwg2ZcKLoNV-QnvKj5cubKVswsXeEE":3},{"data":4,"sourceMap":-1},{"info":5,"latest":21},{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":10,"avatar":11,"bio":16,"employee":17,"name":18,"slug":19},"2023-05-23T16:27:18Z","wp-author-cap-17067","ZP7627ZkmfDRGke9Ik3iT9","blogAuthor","2024-01-24T16:45:49Z",{"_type":12,"asset":13},"image",{"_ref":14,"_type":15},"image-015bff0f4bd16f5ba1974cf3119766c6fd6d9fd4-2211x1969-jpg","reference","","none","Isaac Lyman",{"current":20},"isaac-lyman",[22,62,87,114,149,175,203,227,260,283,317],{"_id":23,"author":24,"commentCount":30,"comments":31,"excerpt":32,"featureTag":28,"image":33,"publishedAt":37,"slug":38,"sponsored":28,"tags":41,"title":61},"5ff6f77f-c459-4080-b0fa-4091583af1ac",[25],{"_id":7,"avatar":26,"name":18,"role":28,"slug":29},{"_type":12,"asset":27},{"_ref":14,"_type":15},null,{"current":20},3,true,"Senior developers know how to deploy code to systems made of code. Architects know how to deploy ideas to systems made of people.",{"_type":12,"asset":34,"attribution":36},{"_ref":35,"_type":15},"image-3dde9d11ee61e414353f26e61b1e2e2567d7d4d9-12000x6293-jpg","Alexandra Francis","2026-01-01T16:16:28.880Z",{"_type":39,"current":40},"slug","documents-the-architect-s-programming-language",[42,49,53,57],{"_createdAt":43,"_id":44,"_rev":45,"_type":46,"_updatedAt":43,"slug":47,"title":48},"2023-05-23T16:43:21Z","wp-tagcat-se-stackoverflow","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":48},"se-stackoverflow",{"_createdAt":43,"_id":50,"_rev":45,"_type":46,"_updatedAt":43,"slug":51,"title":52},"wp-tagcat-se-tech",{"current":52},"se-tech",{"_createdAt":43,"_id":54,"_rev":45,"_type":46,"_updatedAt":43,"slug":55,"title":56},"wp-tagcat-architecture",{"current":56},"architecture",{"_createdAt":43,"_id":58,"_rev":45,"_type":46,"_updatedAt":43,"slug":59,"title":60},"wp-tagcat-documentation",{"current":60},"documentation","Documents: The architect’s programming language",{"_id":63,"author":64,"commentCount":69,"comments":31,"excerpt":70,"featureTag":28,"image":71,"publishedAt":74,"slug":75,"sponsored":28,"tags":77,"title":86},"fb2997cd-33b9-44e8-bec8-05f9df187695",[65],{"_id":7,"avatar":66,"name":18,"role":28,"slug":68},{"_type":12,"asset":67},{"_ref":14,"_type":15},{"current":20},1,"Settling down in a new city (or codebase) is a marathon, not a sprint. ",{"_type":12,"asset":72,"attribution":36},{"_ref":73,"_type":15},"image-3bd9545b241dff4b956ab4024e4a196f8e92c9b9-13396x7384-jpg","2024-08-13T16:00:00.000Z",{"_type":39,"current":76},"navigating-cities-of-code-with-norris-numbers",[78,80,82],{"_createdAt":43,"_id":50,"_rev":45,"_type":46,"_updatedAt":43,"slug":79,"title":52},{"current":52},{"_createdAt":43,"_id":44,"_rev":45,"_type":46,"_updatedAt":43,"slug":81,"title":48},{"current":48},{"_createdAt":43,"_id":83,"_rev":45,"_type":46,"_updatedAt":43,"slug":84,"title":85},"wp-tagcat-coding",{"current":85},"coding","Navigating cities of code with Norris Numbers",{"_id":88,"author":89,"commentCount":94,"comments":31,"excerpt":95,"featureTag":28,"image":96,"publishedAt":99,"slug":100,"sponsored":28,"tags":102,"title":113},"wp-post-21546",[90],{"_id":7,"avatar":91,"name":18,"role":28,"slug":93},{"_type":12,"asset":92},{"_ref":14,"_type":15},{"current":20},83,"With all the advancements in software development, apps could be much better. Why aren't they?",{"_type":12,"asset":97},{"_ref":98,"_type":15},"image-c6419de6c4703d91e87c5947472d4b924548817d-2560x1344-jpg","2023-12-25T16:35:08.650Z",{"current":101},"is-software-getting-worse",[103,108],{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":105,"title":107},"wp-tagcat-code-for-a-living",{"current":106},"code-for-a-living","Code for a Living",{"_createdAt":43,"_id":109,"_rev":45,"_type":46,"_updatedAt":43,"slug":110,"title":112},"wp-tagcat-software-development",{"current":111},"software-development","software development","Is software getting worse?",{"_id":115,"author":116,"commentCount":121,"comments":31,"excerpt":122,"featureTag":28,"image":123,"publishedAt":126,"slug":127,"sponsored":28,"tags":129,"title":148},"81c8dae2-9f8a-4e34-b811-7d99e2cba53f",[117],{"_id":7,"avatar":118,"name":18,"role":28,"slug":120},{"_type":12,"asset":119},{"_ref":14,"_type":15},{"current":20},26,"What matters isn’t just whether you use it, but how.",{"_type":12,"asset":124,"attribution":36},{"_ref":125,"_type":15},"image-eeeef57cf8488fb043845897745129465e1d8866-12000x6300-jpg","2023-12-11T15:00:00.000Z",{"_type":39,"current":128},"three-types-of-ai-assisted-programmers",[130,132,139,144,146],{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":131,"title":107},{"current":106},{"_createdAt":43,"_id":133,"_rev":134,"_type":46,"_updatedAt":135,"slug":136,"title":138},"wp-tagcat-ai","fpDTFQqIDjNJIbHDKPBGpV","2025-01-30T16:19:01Z",{"current":137},"ai","AI",{"_createdAt":43,"_id":140,"_rev":45,"_type":46,"_updatedAt":43,"slug":141,"title":143},"wp-tagcat-career-development",{"current":142},"career-development","career development",{"_createdAt":43,"_id":44,"_rev":45,"_type":46,"_updatedAt":43,"slug":145,"title":48},{"current":48},{"_createdAt":43,"_id":50,"_rev":45,"_type":46,"_updatedAt":43,"slug":147,"title":52},{"current":52},"Three types of AI-assisted programmers",{"_id":150,"author":151,"commentCount":156,"comments":31,"excerpt":157,"featureTag":28,"image":158,"publishedAt":161,"slug":162,"sponsored":28,"tags":164,"title":174},"wp-post-22083",[152],{"_id":7,"avatar":153,"name":18,"role":28,"slug":155},{"_type":12,"asset":154},{"_ref":14,"_type":15},{"current":20},13,"A realistic understanding of generative AI can guide us to its ideal use case: not a decision-maker or unsupervised agent tucked away from the end user, but an interface between humans and machines.",{"_type":12,"asset":159},{"_ref":160,"_type":15},"image-ed1cecbbfc726ce147d941112ba9021594df4012-2560x1344-jpg","2023-05-01T15:30:38.000Z",{"current":163},"ai-isnt-the-app-its-the-ui",[165,167,169],{"_createdAt":43,"_id":133,"_rev":134,"_type":46,"_updatedAt":135,"slug":166,"title":138},{"current":137},{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":168,"title":107},{"current":106},{"_createdAt":43,"_id":170,"_rev":45,"_type":46,"_updatedAt":43,"slug":171,"title":173},"wp-tagcat-generative-ai",{"current":172},"generative-ai","generative AI","AI isn't the app, it's the UI",{"_id":176,"author":177,"commentCount":182,"comments":31,"excerpt":183,"featureTag":28,"image":184,"publishedAt":187,"slug":188,"sponsored":28,"tags":190,"title":202},"wp-post-21060",[178],{"_id":7,"avatar":179,"name":18,"role":28,"slug":181},{"_type":12,"asset":180},{"_ref":14,"_type":15},{"current":20},17,"Building traditional native apps often requires maintaining two or more codebases. Let's look at two frameworks that let you keep your code unified. ",{"_type":12,"asset":185},{"_ref":186,"_type":15},"image-836a9fe2226d77f3d9f566e3f6562516a23b136d-2560x1344-jpg","2022-10-31T14:00:00.000Z",{"current":189},"comparing-frameworks-for-cross-platform-apps-flutter-vs-react-native",[191,193,197],{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":192,"title":107},{"current":106},{"_createdAt":43,"_id":194,"_rev":45,"_type":46,"_updatedAt":43,"slug":195,"title":196},"wp-tagcat-flutter",{"current":196},"flutter",{"_createdAt":43,"_id":198,"_rev":45,"_type":46,"_updatedAt":43,"slug":199,"title":201},"wp-tagcat-react-native",{"current":200},"react-native","react native","Flutter vs. React Native: Which is the right cross-platform framework for you?",{"_id":204,"author":205,"commentCount":210,"comments":31,"excerpt":211,"featureTag":28,"image":212,"publishedAt":215,"slug":216,"sponsored":28,"tags":218,"title":226},"wp-post-20541",[206],{"_id":7,"avatar":207,"name":18,"role":28,"slug":209},{"_type":12,"asset":208},{"_ref":14,"_type":15},{"current":20},12,"Readable code is great, but not all code will be immediately readable. That's when you get your interrogation tools. ",{"_type":12,"asset":213},{"_ref":214,"_type":15},"image-e865d616bbb388f10c6824ba6258dd7de671bae4-2560x1344-jpg","2022-08-15T14:00:00.000Z",{"current":217},"how-to-interrogate-unfamiliar-code",[219,221],{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":220,"title":107},{"current":106},{"_createdAt":43,"_id":222,"_rev":45,"_type":46,"_updatedAt":43,"slug":223,"title":225},"wp-tagcat-reading-code",{"current":224},"reading-code","reading code","How to interrogate unfamiliar code",{"_id":228,"author":229,"commentCount":156,"comments":31,"excerpt":234,"featureTag":28,"image":235,"publishedAt":238,"slug":239,"sponsored":28,"tags":241,"title":259},"wp-post-20269",[230],{"_id":7,"avatar":231,"name":18,"role":28,"slug":233},{"_type":12,"asset":232},{"_ref":14,"_type":15},{"current":20},"Don't hate, iterate. ",{"_type":12,"asset":236},{"_ref":237,"_type":15},"image-1460aa136a6969a2ad477834ab06e18617a0fdea-2560x1344-jpg","2022-06-15T14:14:15.000Z",{"current":240},"c-ienumerable-yield-return-and-lazy-evaluation",[242,247,252,254],{"_createdAt":43,"_id":243,"_rev":45,"_type":46,"_updatedAt":43,"slug":244,"title":246},"wp-tagcat-net",{"current":245},"net",".net",{"_createdAt":43,"_id":248,"_rev":45,"_type":46,"_updatedAt":43,"slug":249,"title":251},"wp-tagcat-c-3",{"current":250},"c-3","C#",{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":253,"title":107},{"current":106},{"_createdAt":43,"_id":255,"_rev":45,"_type":46,"_updatedAt":43,"slug":256,"title":258},"wp-tagcat-ienumerable",{"current":257},"ienumerable","IEnumerable","C#: IEnumerable, yield return, and lazy evaluation",{"_id":261,"author":262,"commentCount":121,"comments":31,"excerpt":267,"featureTag":28,"image":268,"publishedAt":271,"slug":272,"sponsored":28,"tags":274,"title":282},"wp-post-20143",[263],{"_id":7,"avatar":264,"name":18,"role":28,"slug":266},{"_type":12,"asset":265},{"_ref":14,"_type":15},{"current":20},"All those CEOs on LinkedIn claiming they can find the right candidate in a five-minute conversation? Wrong. Science shows us how we can do better. ",{"_type":12,"asset":269},{"_ref":270,"_type":15},"image-93f3914410dcaa07b5f54ac8e01702d14bb2f42b-2560x1344-jpg","2022-05-23T14:00:00.000Z",{"current":273},"the-science-of-interviewing-developers",[275,277],{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":276,"title":107},{"current":106},{"_createdAt":43,"_id":278,"_rev":45,"_type":46,"_updatedAt":43,"slug":279,"title":281},"wp-tagcat-job-interviews",{"current":280},"job-interviews","job interviews","The science of interviewing developers",{"_id":284,"author":285,"commentCount":290,"comments":31,"excerpt":291,"featureTag":28,"image":292,"publishedAt":295,"slug":296,"sponsored":28,"tags":298,"title":316},"wp-post-18941",[286],{"_id":7,"avatar":287,"name":18,"role":28,"slug":289},{"_type":12,"asset":288},{"_ref":14,"_type":15},{"current":20},25,"Code quality affects the mental state of a programmer, communication within their team, and the incentives attached to their work. Improve your code and you can improve your organizational health and competence as a whole. ",{"_type":12,"asset":293},{"_ref":294,"_type":15},"image-e19802ebecc08b799c5286de9d5ca5f8e995b3d6-2400x1260-jpg","2021-10-18T14:00:00.000Z",{"current":297},"code-quality-a-concern-for-businesses-bottom-lines-and-empathetic-programmers",[299,301,306,311],{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":300,"title":107},{"current":106},{"_createdAt":43,"_id":302,"_rev":45,"_type":46,"_updatedAt":43,"slug":303,"title":305},"wp-tagcat-code-quality",{"current":304},"code-quality","code quality",{"_createdAt":43,"_id":307,"_rev":45,"_type":46,"_updatedAt":43,"slug":308,"title":310},"wp-tagcat-software-engineering",{"current":309},"software-engineering","software engineering",{"_createdAt":43,"_id":312,"_rev":45,"_type":46,"_updatedAt":43,"slug":313,"title":315},"wp-tagcat-tech-debt",{"current":314},"tech-debt","tech debt","Code quality: a concern for businesses, bottom lines, and empathetic programmers",{"_id":318,"author":319,"commentCount":324,"comments":31,"excerpt":325,"featureTag":28,"image":326,"publishedAt":329,"slug":330,"sponsored":28,"tags":332,"title":350},"wp-post-17063",[320],{"_id":7,"avatar":321,"name":18,"role":28,"slug":323},{"_type":12,"asset":322},{"_ref":14,"_type":15},{"current":20},23,"Defining and measuring programmer productivity is one of the most difficult parts of an engineering manager or CTO’s job description. When everything you do is intangible, how should you measure it? Can it be measured at all?",{"_type":12,"asset":327},{"_ref":328,"_type":15},"image-2d388c5df61bc453175e152c205e6ee73b1daa29-1200x630-png","2020-12-07T17:44:53.000Z",{"current":331},"measuring-developer-productivity",[333,335,339,343],{"_createdAt":43,"_id":104,"_rev":45,"_type":46,"_updatedAt":43,"slug":334,"title":107},{"current":106},{"_createdAt":43,"_id":336,"_rev":45,"_type":46,"_updatedAt":43,"slug":337,"title":338},"wp-tagcat-management",{"current":338},"management",{"_createdAt":43,"_id":340,"_rev":45,"_type":46,"_updatedAt":43,"slug":341,"title":342},"wp-tagcat-measurement",{"current":342},"measurement",{"_createdAt":43,"_id":344,"_rev":345,"_type":46,"_updatedAt":346,"slug":347,"title":349},"wp-tagcat-productivity","ZP7627ZkmfDRGke9Ig9IwB","2024-01-23T15:01:58Z",{"current":348},"productivity","Productivity","Can developer productivity be measured?"]