Essential steps to take before making any technical decision

https://thetshaped.dev/p/4-essential-steps-before-technical-decision
{
"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-23T02:19:53.503Z",
"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><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/my-frontend-stack-in-2026-react-nextjs-pnpm-vite-ts-tailwind-storybook-tanstack-zustand-zod-oxlint-oxfmt-msw-vitest-playright-sentry\">My Frontend Stack In 2026</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/my-frontend-stack-in-2026-react-nextjs-pnpm-vite-ts-tailwind-storybook-tanstack-zustand-zod-oxlint-oxfmt-msw-vitest-playright-sentry\">The tools I actually reach for when building production apps, from framework to the moment a user hits a bug.</a></p></div><p>May 23</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Qx-f!,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%2F431db8a2-533b-4d0c-9491-e02ddbeb4105_1200x630.png 960w\" /></picture></div></div><div><div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/stacked-prs-the-code-review-workflow-that-makes-difference\">Stacked PRs: The Code Review Workflow That Changed How I Ship Features</a></p></div><div><p><a target=\"_blank\" href=\"https://thetshaped.dev/p/stacked-prs-the-code-review-workflow-that-makes-difference\">Stacked diffs, the workflow Meta and Google ship on. (7 min)</a></p></div><p>May 13</p></div><div><picture><source type=\"image/webp\" srcset=\"https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 960w\" sizes=\"(min-width:768px) 50vw, 100vw\"></source><img src=\"https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png\" srcset=\"https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 320w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 640w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!aqfF!,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%2F4c86b65d-f8b0-4097-9db0-b44af1c2a343_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-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>",
"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": 20,
"type": "article"
}