Essential steps to take before making any technical decision
https://thetshaped.dev/p/4-essential-steps-before-technical-decision
May 9

April 2026
Apr 22

March 2026
Mar 29 • Petar Ivanov

February 2026
Feb 24

January 2026
Jan 27 • Petar Ivanov

December 2025
Dec 27, 2025 • Petar Ivanov

November 2025
{
"by": "petar_ivanov",
"descendants": 1,
"id": 40246291,
"kids": [
40246292
],
"score": 3,
"time": 1714734223,
"title": "Essential steps to take before making any technical decision",
"type": "story",
"url": "https://thetshaped.dev/p/4-essential-steps-before-technical-decision"
}
{
"author": "Petar Ivanov",
"date": "2026-05-09T02:19:51.219Z",
"description": "A newsletter sharing practical tips on React, Node, Software Architecture, and AI. Elevate your Full-Stack JavaScript skills to the next level! Click to read The T-Shaped Dev, by Petar Ivanov, a Substack publication with tens of thousands of subscribers.",
"image": "https://substackcdn.com/image/fetch/$s_!ja1n!,f_auto,q_auto:best,fl_progressive:steep/https%3A%2F%2Fpetarivanovv9.substack.com%2Ftwitter%2Fsubscribe-card.jpg%3Fv%3D1009900503%26version%3D9",
"logo": null,
"publisher": "The T-Shaped Dev",
"title": "The T-Shaped Dev | Petar Ivanov | Substack",
"url": "https://thetshaped.dev/4-essential-steps-before-technical-decision"
}
{
"url": "https://thetshaped.dev/4-essential-steps-before-technical-decision",
"title": "The T-Shaped Dev | Petar Ivanov | Substack",
"description": "A newsletter sharing practical tips on React, Node, Software Architecture, and AI. Elevate your Full-Stack JavaScript skills to the next level! Click to read The T-Shaped Dev, by Petar Ivanov, a Substack publication with tens of thousands of subscribers.",
"links": [
"https://thetshaped.dev/4-essential-steps-before-technical-decision",
"https://thetshaped.dev/p/4-essential-steps-before-technical-decision"
],
"image": "https://substackcdn.com/image/fetch/$s_!ja1n!,f_auto,q_auto:best,fl_progressive:steep/https%3A%2F%2Fpetarivanovv9.substack.com%2Ftwitter%2Fsubscribe-card.jpg%3Fv%3D1009900503%26version%3D9",
"content": "<div><div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/20-mistakes-that-quietly-destroy-javascript-typescript-codebases-common-code-smell-patterns-async-performance-testing\">20 Mistakes That Quietly Destroy JavaScript/TypeScript Codebases (Part 2)</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/20-mistakes-that-quietly-destroy-javascript-typescript-codebases-common-code-smell-patterns-async-performance-testing\">Common JS/TS patterns that feel fine until they don't. 11 mistakes, before/after code for each. (11 min)</a></p></div><p>May 9</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!gUhe!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!gUhe!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!gUhe!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!gUhe!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17c7e008-b603-4780-8cac-e0a51bf93617_1200x630.png 960w\" /></picture></div></div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/20-mistakes-that-quietly-destroy-javascript-typescript-codebases-common-code-smell-patterns\">20 Mistakes That Quietly Destroy JavaScript/TypeScript Codebases (Part 1)</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/20-mistakes-that-quietly-destroy-javascript-typescript-codebases-common-code-smell-patterns\">Common JS/TS patterns that feel fine until they don't. 11 mistakes, before/after code for each. (11 min)</a></p></div><p>May 2</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!tD0C!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!tD0C!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!tD0C!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!tD0C!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08009e3-478f-4469-abca-7979c6ac4720_1200x630.png 960w\" /></picture></div></div></div><h3>April 2026</h3><div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/es2025-javascript-typescript-eight-features-you-should-actually-use-production-codebase\">ES2025 Features You Should Actually Use</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/es2025-javascript-typescript-eight-features-you-should-actually-use-production-codebase\">Learn about eight features you must adapt today in your production codebase. (9 min)</a></p></div><p>Apr 22</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!eFhU!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!eFhU!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!eFhU!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!eFhU!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32e77a16-cd55-4ced-a67a-7ddeac11a200_1200x630.png 960w\" /></picture></div></div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/vertical-slice-architecture-in-nodejs-typescript-one-folder-per-use-case\">Vertical Slice Architecture in Node.js: One Folder Per Use Case</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/vertical-slice-architecture-in-nodejs-typescript-one-folder-per-use-case\">Why organizing by domain module isn't enough and what to do instead. (8 min)</a></p></div><p>Apr 11</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!x3lI!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!x3lI!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!x3lI!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!x3lI!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe656df62-293a-44d7-977d-03c5c427bd13_1200x630.png 960w\" /></picture></div></div></div><h3>March 2026</h3><div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/dependency-injection-in-nodejs-and-typescript-dependency-inversion-part-no-body-teaches-you\">Dependency Injection in Node.js & TypeScript. The Part Nobody Teaches You</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/dependency-injection-in-nodejs-and-typescript-dependency-inversion-part-no-body-teaches-you\">Learn the hidden costs about importing everything directly and the structural change you need to make. (8 min)</a></p></div><div><p>Mar 29 <span>•</span> <span><span><a target=\"_blank\" href=\"https://substack.com/@petarivanovv9\">Petar Ivanov</a></span></span></p></div></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!EaSW!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!EaSW!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!EaSW!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!EaSW!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d012d0b-328c-46d9-b752-ca354941c93c_1200x630.png 960w\" /></picture></div></div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/screaming-architecture-and-colocation-nodejs-typescript-react\">Screaming Architecture & Colocation: Let Your Project Structure Tell the Story</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/screaming-architecture-and-colocation-nodejs-typescript-react\">Learn why you should organize your code by what your app actually does, not by technical roles. (5 min)</a></p></div><p>Mar 14</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!Cpx6!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!Cpx6!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!Cpx6!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Cpx6!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01fd2aa6-0feb-4fb1-ac03-572fd4a7d02a_1200x630.png 960w\" /></picture></div></div></div><h3>February 2026</h3><div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/four-disciplines-that-separate-effective-software-engineers-from-busy-engineers\">4 Disciplines That Separate Effective Engineers From Busy Ones</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/four-disciplines-that-separate-effective-software-engineers-from-busy-engineers\">Learn about the daily habits that help engineers be more effective. (7 min)</a></p></div><p>Feb 24</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!VGWH!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!VGWH!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!VGWH!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!VGWH!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db15d0a-e497-4d86-bc0b-872f4b740762_1200x630.png 960w\" /></picture></div></div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/database-design-foundations-backend-engineers-mistakes-and-lessons\">Database Design Doesn't Start With Table. It Starts With Consequences</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/database-design-foundations-backend-engineers-mistakes-and-lessons\">Here's what most backend engineers get wrong about schema design and how to fix it before you hit production. (6 min)</a></p></div><p>Feb 17</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!M8DD!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!M8DD!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!M8DD!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!M8DD!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb499f478-3f17-4fa8-8307-6a1eb1a2600c_1456x1048.png 960w\" /></picture></div></div></div><h3>January 2026</h3><div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/invite-your-friends-and-earn-rewards\">Invite Your Friends & Earn Rewards 🎁</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/invite-your-friends-and-earn-rewards\">Announcing the T-Shaped Dev Referral Program! 🎉</a></p></div><div><p>Jan 27 <span>•</span> <span><span><a target=\"_blank\" href=\"https://substack.com/@petarivanovv9\">Petar Ivanov</a></span></span></p></div></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!Em8X!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 320w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 424w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 640w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 848w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!Em8X!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!Em8X!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 320w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 424w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 640w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 848w, https://substackcdn.com/image/fetch/$s_!Em8X!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c44996-187d-412e-ada7-8f2ea52f974a_800x500.png 960w\" /></picture></div></div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/how-to-10x-your-code-quality-with-three-ai-tools-advisors-generators-reviewers\">How to 10x Your Code Quality With Three AI Tools</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/how-to-10x-your-code-quality-with-three-ai-tools-advisors-generators-reviewers\">Learn how to build software smartly with Advisor, Generator & Reviewer AI Agents (5 min)</a></p></div><div><p>Jan 17 <span>•</span> <span><span><a target=\"_blank\" href=\"https://substack.com/@petarivanovv9\">Petar Ivanov</a></span></span></p></div></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!Bq1j!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!Bq1j!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!Bq1j!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!Bq1j!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6989583-b9ce-4568-859d-3a82ca0ee348_1456x1048.png 960w\" /></picture></div></div></div><h3>December 2025</h3><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/the-systematic-ai-code-review-workflow-plan-generate-validate\">The Systematic AI Code Review Workflow: Plan, Generate, Validate</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/the-systematic-ai-code-review-workflow-plan-generate-validate\">A practical guide to maintain quality at AI speed (6 min)</a></p></div><div><p>Dec 27, 2025 <span>•</span> <span><span><a target=\"_blank\" href=\"https://substack.com/@petarivanovv9\">Petar Ivanov</a></span></span></p></div></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!UUus!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!UUus!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!UUus!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!UUus!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!UUus!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!UUus!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!UUus!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!UUus!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!UUus!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!UUus!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!UUus!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef00d78f-b0d4-4d54-a72a-b40080ef322a_1456x1048.png 960w\" /></picture></div></div><h3>November 2025</h3><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/two-tier-to-three-tier-architecture-migration-case-stuty-modular-monolith-graphql-api-software-architecture\">2-Tier to 3-Tier Architecture: Migration Journey With Modular Monolith and GraphQL</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/two-tier-to-three-tier-architecture-migration-case-stuty-modular-monolith-graphql-api-software-architecture\">A real-world case study of migrating a two-tier architecture to a three-tier architecture. (5 min)</a></p></div><div><p>Nov 18, 2025 <span>•</span> <span><span><a target=\"_blank\" href=\"https://substack.com/@petarivanovv9\">Petar Ivanov</a></span></span></p></div></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!wpFO!,w_320,h_213,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_424,h_282,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_640,h_426,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_848,h_564,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_960,h_639,c_fill,f_webp,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!wpFO!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!wpFO!,w_320,h_213,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 320w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_424,h_282,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_640,h_426,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 640w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_848,h_564,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!wpFO!,w_960,h_639,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_center/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06cdc73c-e487-4e0d-b706-e24a2ebf3136_1456x1048.png 960w\" /></picture></div></div></div>",
"author": "Petar Ivanov",
"favicon": "https://substackcdn.com/image/fetch/$s_!8rw6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ed74925-4e5c-4468-bc2b-2124fa44481a%2Ffavicon-48x48.png",
"source": "thetshaped.dev",
"published": "",
"ttr": 61,
"type": "article"
}





