[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-j0kpEobPSGsQBbhhAqU3QJxPkWG4hem9qbYPPd99xSQ":3,"sanity-LAjZz8dDufeJsNFnW_29OKVjmTTu8gGuj-IM9nH3rvw":546},{"data":4,"sourceMap":-1},{"latestPodcast":5,"latestReleases":14,"post":39,"recent":521},[6],{"_id":7,"publishedAt":8,"slug":9,"sponsored":12,"title":13},"7ebd76d2-cebc-4b88-82f9-3dfb2c8bc5ca","2026-07-08T04:40:00.000Z",{"_type":10,"current":11},"slug","what-s-left-for-infrastructure-as-code-after-ai-moves-in",true,"What's left for infrastructure-as-code after AI moves in?",[15,21,27,33],{"_id":16,"publishedAt":17,"slug":18,"title":20},"eb5b66eb-9410-4329-83bb-22bbff39402a","2026-04-28T13:00:00.000Z",{"_type":10,"current":19},"turn-scattered-knowledge-into-trusted-intelligence","Turning scattered knowledge into trusted intelligence: Stack Internal 2026.3",{"_id":22,"publishedAt":23,"slug":24,"title":26},"369c2401-b62e-4a37-8ff8-bf603023ecad","2026-03-02T15:03:00.988Z",{"_type":10,"current":25},"what-s-new-at-stack-overflow-march-2026","What’s new at Stack Overflow: March 2026",{"_id":28,"publishedAt":29,"slug":30,"title":32},"5e9053a4-07ea-447c-91ea-29e0b6228537","2026-02-02T15:00:00.000Z",{"_type":10,"current":31},"what-s-new-at-stack-overflow-february-2026","What’s new at Stack Overflow: February 2026",{"_id":34,"publishedAt":35,"slug":36,"title":38},"a1b538eb-a8a6-46d0-80a1-ac70ec9bb935","2026-01-05T10:00:00.000-05:00",{"_type":10,"current":37},"what-s-new-at-stack-overflow-january-2026","What’s new at Stack Overflow: January 2026",{"_createdAt":40,"_id":41,"_rev":42,"_type":43,"_updatedAt":44,"author":45,"body":59,"comments":12,"dateUrl":494,"excerpt":495,"image":496,"legacyBody":500,"product":93,"publishedAt":503,"slug":504,"sponsored":93,"tags":506,"title":520,"visible":12},"2023-05-25T09:36:57Z","wp-post-3340","07ZbrKPSUrjrV4wQ6fI9rD","blogPost","2023-07-13T14:54:20Z",[46],{"_createdAt":47,"_id":48,"_rev":49,"_type":50,"_updatedAt":51,"avatar":52,"employee":54,"name":55,"role":56,"slug":57},"2023-05-23T16:27:18Z","wp-author-114","07ZbrKPSUrjrV4wQ6fam8u","blogAuthor","2023-08-29T11:49:01Z",{"_type":53},"image","former","Jeff Atwood","Co-founder",{"current":58},"jeffatwood",[60,71,94,124,143,162,181,200,208,238,257,276,304,322,346,354,386,408,416,438,475],{"_key":61,"_type":62,"children":63,"markDefs":69,"style":70},"539c3cdf0139","block",[64],{"_key":65,"_type":66,"marks":67,"text":68},"539c3cdf01390","span",[],"This is the 39th episode of the StackOverflow podcast, where Joel and Jeff discuss database design and the shell game of performance, the value of short, focused presentations, and the importance (or not) of a prestigious degree for software engineers.",[],"normal",{"_key":72,"_type":62,"children":73,"level":87,"listItem":88,"markDefs":89,"style":70},"063ace137832",[74,78,83],{"_key":75,"_type":66,"marks":76,"text":77},"063ace1378320",[],"Joel insisted that we run the stackoverflow.com books on ",{"_key":79,"_type":66,"marks":80,"text":82},"063ace1378321",[81],"4a0f408d57e4","QuickBooks",{"_key":84,"_type":66,"marks":85,"text":86},"063ace1378322",[],". I was more open to using an online accounting solution, but we were worried about someone holding our business finances hostage. Joel also maintains that \"every accountant in the world knows QuickBooks\". I'm not happy about it, but small business reality.",1,"bullet",[90],{"_key":81,"_type":91,"href":92,"reference":93},"link","http:\u002F\u002Fquickbooks.intuit.com\u002F",null,{"_key":95,"_type":62,"children":96,"level":87,"listItem":88,"markDefs":119,"style":70},"f554f03cf7eb",[97,101,106,110,115],{"_key":98,"_type":66,"marks":99,"text":100},"f554f03cf7eb0",[],"Now that we can (theoretically) afford to pay ourselves to work on the site, we deployed two new features: ",{"_key":102,"_type":66,"marks":103,"text":105},"f554f03cf7eb1",[104],"34be36f40087","reputation bounties on questions",{"_key":107,"_type":66,"marks":108,"text":109},"f554f03cf7eb2",[]," and ",{"_key":111,"_type":66,"marks":112,"text":114},"f554f03cf7eb3",[113],"fd2cb80b32e0","new reply notifications",{"_key":116,"_type":66,"marks":117,"text":118},"f554f03cf7eb4",[],".",[120,122],{"_key":104,"_type":91,"href":121,"reference":93},"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F01\u002Freputation-bounty-for-unanswered-questions\u002F",{"_key":113,"_type":91,"href":123,"reference":93},"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F01\u002Fnew-replies-notification\u002F",{"_key":125,"_type":62,"children":126,"level":87,"listItem":88,"markDefs":140,"style":70},"d9d044ac0f83",[127,131,136],{"_key":128,"_type":66,"marks":129,"text":130},"d9d044ac0f830",[],"Joel expresses some concern about the value of ",{"_key":132,"_type":66,"marks":133,"text":135},"d9d044ac0f831",[134],"c53d25522682","panel discussions",{"_key":137,"_type":66,"marks":138,"text":139},"d9d044ac0f832",[]," at conferences. There are lots of variables: who is on the panel, what are the topics, and how skilled is the moderator? It's almost better to give each person on the panel a 10 minute window to talk about some topic they think will have value for the audience.",[141],{"_key":134,"_type":91,"href":142,"reference":93},"http:\u002F\u002Fvideo.dld-conference.com\u002Fwatch\u002FQ1G0GQR",{"_key":144,"_type":62,"children":145,"level":87,"listItem":88,"markDefs":159,"style":70},"049596332462",[146,150,155],{"_key":147,"_type":66,"marks":148,"text":149},"0495963324620",[],"I often think of small, focused presentations as \"Grok Talks\". One presentation format which hews closely to this model is ",{"_key":151,"_type":66,"marks":152,"text":154},"0495963324621",[153],"dfbfe03c14bf","Pecha Kucha",{"_key":156,"_type":66,"marks":157,"text":158},"0495963324622",[],". It's generally a good idea to err on the side of keeping it small. The larger the talk, the more material you should have whittled away and deleted to get it down to size.",[160],{"_key":153,"_type":91,"href":161,"reference":93},"http:\u002F\u002Fwww.wired.com\u002Ftechbiz\u002Fmedia\u002Fmagazine\u002F15-09\u002Fst_pechakucha",{"_key":163,"_type":62,"children":164,"level":87,"listItem":88,"markDefs":178,"style":70},"3f07ad236b1f",[165,169,174],{"_key":166,"_type":66,"marks":167,"text":168},"3f07ad236b1f0",[],"In building Stack Overflow, we copied a key part of the ",{"_key":170,"_type":66,"marks":171,"text":173},"3f07ad236b1f1",[172],"ef1be67ee902","Wikipedia database design",{"_key":175,"_type":66,"marks":176,"text":177},"3f07ad236b1f2",[],". This turned out to be a mistake. We are due for a massive database refactoring, which is going to be very painful, but it is necessary to avoid excessive joins in a lot of our key queries.",[179],{"_key":172,"_type":91,"href":180,"reference":93},"http:\u002F\u002Fupload.wikimedia.org\u002Fwikipedia\u002Fcommons\u002F4\u002F41\u002FMediawiki-database-schema.png?",{"_key":182,"_type":62,"children":183,"level":87,"listItem":88,"markDefs":197,"style":70},"68915637767f",[184,188,193],{"_key":185,"_type":66,"marks":186,"text":187},"68915637767f0",[],"We also begin to appreciate why the giant multi-terabyte table schemas (like Google's ",{"_key":189,"_type":66,"marks":190,"text":192},"68915637767f1",[191],"1e0e387fdf83","BigTable",{"_key":194,"_type":66,"marks":195,"text":196},"68915637767f2",[],") are completely join-free, basically simple hashtables or tuples spread across a server farm.",[198],{"_key":191,"_type":91,"href":199,"reference":93},"http:\u002F\u002Flabs.google.com\u002Fpapers\u002Fbigtable.html",{"_key":201,"_type":62,"children":202,"level":87,"listItem":88,"markDefs":207,"style":70},"6fe804a79db0",[203],{"_key":204,"_type":66,"marks":205,"text":206},"6fe804a79db00",[],"My benchmarking shows that CPU speed is surprisingly important on our database server. Going from 1.86 GHz, to 2.5 GHz, to 3.5 GHz CPUs I see an almost linear improvement in typical query times! The exception is queries which don't fit in memory, but right now with 4GB RAM most of our DB fits in ram; with the new 24GB RAM server I expect the database to be entirely in memory for quite a while.",[],{"_key":209,"_type":62,"children":210,"level":87,"listItem":88,"markDefs":233,"style":70},"08ac14ea7454",[211,215,220,224,229],{"_key":212,"_type":66,"marks":213,"text":214},"08ac14ea74540",[],"Joel talks a bit about ",{"_key":216,"_type":66,"marks":217,"text":219},"08ac14ea74541",[218],"19c1a9274ffd","queueing theory",{"_key":221,"_type":66,"marks":222,"text":223},"08ac14ea74542",[],", and its relation to OS scheduling. I propose that performance is a ",{"_key":225,"_type":66,"marks":226,"text":228},"08ac14ea74543",[227],"3f6ee89f5eb7","shell game",{"_key":230,"_type":66,"marks":231,"text":232},"08ac14ea74544",[]," with bottlenecks, where you're constantly trying to decide whether the bottleneck should be memory, CPU, or I\u002FO.",[234,236],{"_key":218,"_type":91,"href":235,"reference":93},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FQueueing_theory",{"_key":227,"_type":91,"href":237,"reference":93},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FShell_game",{"_key":239,"_type":62,"children":240,"level":87,"listItem":88,"markDefs":254,"style":70},"292824d08131",[241,245,250],{"_key":242,"_type":66,"marks":243,"text":244},"292824d081310",[],"More discussion about ",{"_key":246,"_type":66,"marks":247,"text":249},"292824d081311",[248],"3499e779f930","unit testing",{"_key":251,"_type":66,"marks":252,"text":253},"292824d081312",[],": when it's appropriate, when it isn't, and what it is for. Remember, 100% code coverage (or even 90% code coverage) is not free. You're playing another shell game, so decide what axes of that resource balancing equation are important to you. Perhaps the greatest risk is being dogmatic about it.",[255],{"_key":248,"_type":91,"href":256,"reference":93},"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FUnit_testing",{"_key":258,"_type":62,"children":259,"level":87,"listItem":88,"markDefs":273,"style":70},"0a245d1333f8",[260,264,269],{"_key":261,"_type":66,"marks":262,"text":263},"0a245d1333f80",[],"If you enjoy this podcast, you might also enjoy ",{"_key":265,"_type":66,"marks":266,"text":268},"0a245d1333f81",[267],"f9366540dd25","Hanselminutes",{"_key":270,"_type":66,"marks":271,"text":272},"0a245d1333f82",[]," -- Joel gives it his seal of approval!",[274],{"_key":267,"_type":91,"href":275,"reference":93},"http:\u002F\u002Fwww.hanselminutes.com\u002F",{"_key":277,"_type":62,"children":278,"level":87,"listItem":88,"markDefs":301,"style":70},"4e13fe6a69aa",[279,283,288,292,297],{"_key":280,"_type":66,"marks":281,"text":282},"4e13fe6a69aa0",[],"Joel revisits the ",{"_key":284,"_type":66,"marks":285,"text":287},"4e13fe6a69aa1",[286],"bd2b1adab009","SOLID principles",{"_key":289,"_type":66,"marks":290,"text":291},"4e13fe6a69aa2",[],", and compares them to designing replaceable batteries, or a headphone jack, into your product. Appropriate in some narrow cases, but not all the time. Imagine a consumer product where ",{"_key":293,"_type":66,"marks":294,"text":296},"4e13fe6a69aa3",[295],"em","every single part of it",{"_key":298,"_type":66,"marks":299,"text":300},"4e13fe6a69aa4",[]," could be plugged in and replaced with another compatible part. Is that realistic?",[302],{"_key":286,"_type":91,"href":303,"reference":93},"http:\u002F\u002Fbutunclebob.com\u002FArticleS.UncleBob.PrinciplesOfOod",{"_key":305,"_type":62,"children":306,"level":87,"listItem":88,"markDefs":319,"style":70},"c12f64fe6547",[307,311,316],{"_key":308,"_type":66,"marks":309,"text":310},"c12f64fe65470",[],"Perhaps new language features will advance programming a lot faster than any given set of programming principles, no matter how good they are. I've often thought that ",{"_key":312,"_type":66,"marks":313,"text":315},"c12f64fe65471",[314],"8cc44186cfb4","design patterns are how languages evolve",{"_key":317,"_type":66,"marks":318,"text":118},"c12f64fe65472",[],[320],{"_key":314,"_type":91,"href":321,"reference":93},"http:\u002F\u002Fwww.codinghorror.com\u002Fblog\u002Farchives\u002F000308.html",{"_key":323,"_type":62,"children":324,"level":87,"listItem":88,"markDefs":345,"style":70},"6275f01f92be",[325,329,333,337,341],{"_key":326,"_type":66,"marks":327,"text":328},"6275f01f92be0",[],"Joel says you don't have to go to a prestigious name brand school, necessarily, but you need to choose schools that have a rigorous selection process. \"These people are a tiny little bit more likely to succeed at ",{"_key":330,"_type":66,"marks":331,"text":332},"6275f01f92be1",[295],"our",{"_key":334,"_type":66,"marks":335,"text":336},"6275f01f92be2",[]," rigorous selection process.\" I concur -- if you aren't seeking out challenges, whether they are large, small, or somewhere in-between -- what ",{"_key":338,"_type":66,"marks":339,"text":340},"6275f01f92be3",[295],"are",{"_key":342,"_type":66,"marks":343,"text":344},"6275f01f92be4",[]," you doing?",[],{"_key":347,"_type":62,"children":348,"markDefs":353,"style":70},"c18a73457802",[349],{"_key":350,"_type":66,"marks":351,"text":352},"c18a734578020",[],"Our favorite Stack Overflow questions this week are:",[],{"_key":355,"_type":62,"children":356,"level":87,"listItem":88,"markDefs":383,"style":70},"f6010fa41c8d",[357,362,366,371,375,379],{"_key":358,"_type":66,"marks":359,"text":361},"f6010fa41c8d0",[360],"strong","Jeff",{"_key":363,"_type":66,"marks":364,"text":365},"f6010fa41c8d1",[],": ",{"_key":367,"_type":66,"marks":368,"text":370},"f6010fa41c8d2",[369],"5301baaf2e16","Is mathematics necessary for programming?",{"_key":372,"_type":66,"marks":373,"text":374},"f6010fa41c8d3",[]," It can't hurt, and often helps, but it is not strictly ",{"_key":376,"_type":66,"marks":377,"text":378},"f6010fa41c8d4",[295],"necessary",{"_key":380,"_type":66,"marks":381,"text":382},"f6010fa41c8d5",[]," in our opinions.",[384],{"_key":369,"_type":91,"href":385,"reference":93},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F157354\u002Fis-mathematics-necessary-for-programming",{"_key":387,"_type":62,"children":388,"level":87,"listItem":88,"markDefs":405,"style":70},"8ce63032cc5e",[389,393,396,401],{"_key":390,"_type":66,"marks":391,"text":392},"8ce63032cc5e0",[360],"Joel",{"_key":394,"_type":66,"marks":395,"text":365},"8ce63032cc5e1",[],{"_key":397,"_type":66,"marks":398,"text":400},"8ce63032cc5e2",[399],"dda3684ec5ca","Does it matter where you get your CS degree?",{"_key":402,"_type":66,"marks":403,"text":404},"8ce63032cc5e3",[]," In brief, yes, but not for the reasons you might think.",[406],{"_key":399,"_type":91,"href":407,"reference":93},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F191302\u002Fdoes-it-matter-where-you-get-your-cs-degree",{"_key":409,"_type":62,"children":410,"markDefs":415,"style":70},"4e942b961fe1",[411],{"_key":412,"_type":66,"marks":413,"text":414},"4e942b961fe10",[],"We answered one listener question on this podcast:",[],{"_key":417,"_type":62,"children":418,"level":87,"listItem":435,"markDefs":436,"style":70},"d9ecd105663a",[419,423,427,431],{"_key":420,"_type":66,"marks":421,"text":422},"d9ecd105663a0",[360],"Michael Coney",{"_key":424,"_type":66,"marks":425,"text":426},"d9ecd105663a1",[],": \"Joel mentioned the ",{"_key":428,"_type":66,"marks":429,"text":287},"d9ecd105663a2",[430],"3415923b3295",{"_key":432,"_type":66,"marks":433,"text":434},"d9ecd105663a3",[]," on the previous podcast. Our software architect was also fond of over-isolation but was talked out of it. In the real world, if you need to change something, you just rewrite it.\"","number",[437],{"_key":430,"_type":91,"href":303,"reference":93},{"_key":439,"_type":62,"children":440,"markDefs":470,"style":70},"ac907d55c8fe",[441,445,450,454,459,463,467],{"_key":442,"_type":66,"marks":443,"text":444},"ac907d55c8fe0",[],"If you'd like to submit a question to be answered in our next episode, record an audio file (90 seconds or less) and mail it to ",{"_key":446,"_type":66,"marks":447,"text":449},"ac907d55c8fe1",[448],"90e4a9e1a3cd","podcast@stackoverflow.com",{"_key":451,"_type":66,"marks":452,"text":453},"ac907d55c8fe2",[],". You can ",{"_key":455,"_type":66,"marks":456,"text":458},"ac907d55c8fe3",[457],"a341c2ca476e","record a question",{"_key":460,"_type":66,"marks":461,"text":462},"ac907d55c8fe4",[]," using nothing but a telephone and a web browser. We also have a dedicated phone number you can call to leave audio questions at ",{"_key":464,"_type":66,"marks":465,"text":466},"ac907d55c8fe5",[360],"646-826-3879",{"_key":468,"_type":66,"marks":469,"text":118},"ac907d55c8fe6",[],[471,473],{"_key":448,"_type":91,"href":472,"reference":93},"mailto:podcast@stackoverflow.com",{"_key":457,"_type":91,"href":474,"reference":93},"http:\u002F\u002Fblog.stackoverflow.com\u002Findex.php\u002F2008\u002F05\u002Frecording-podcast-questions-using-your-telephone\u002F",{"_key":476,"_type":62,"children":477,"markDefs":491,"style":70},"c16854d019b6",[478,482,487],{"_key":479,"_type":66,"marks":480,"text":481},"c16854d019b60",[],"The ",{"_key":483,"_type":66,"marks":484,"text":486},"c16854d019b61",[485],"169cfe2a7178","transcript wiki",{"_key":488,"_type":66,"marks":489,"text":490},"c16854d019b62",[]," for this episode is available for public editing.",[492],{"_key":485,"_type":91,"href":493,"reference":93},"https:\u002F\u002Fstackoverflow.fogbugz.com\u002Fdefault.asp?W29026","2009\u002F01\u002F30","",{"_type":53,"asset":497},{"_ref":498,"_type":499},"image-2e7e2d828ffbb0404d422ecab697f29109a4339b-1500x1000-jpg","reference",{"code":501,"language":502},"\u003Cp>This is the 39th episode of the StackOverflow podcast, where Joel and Jeff discuss database design and the shell game of performance, the value of short, focused presentations, and the importance (or not) of a prestigious degree for software engineers.\u003C\u002Fp>\n\u003Cul>\u003Cli>\n\u003Cp>Joel insisted that we run the stackoverflow.com books on \u003Ca href=\"http:\u002F\u002Fquickbooks.intuit.com\u002F\">QuickBooks\u003C\u002Fa>. I was more open to using an online accounting solution, but we were worried about someone holding our business finances hostage. Joel also maintains that \"every accountant in the world knows QuickBooks\". I'm not happy about it, but small business reality.  \u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Now that we can (theoretically) afford to pay ourselves to work on the site, we deployed two new features: \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F01\u002Freputation-bounty-for-unanswered-questions\u002F\">reputation bounties on questions\u003C\u002Fa> and \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F01\u002Fnew-replies-notification\u002F\">new reply notifications\u003C\u002Fa>.   \u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Joel expresses some concern about the value of \u003Ca href=\"http:\u002F\u002Fvideo.dld-conference.com\u002Fwatch\u002FQ1G0GQR\">panel discussions\u003C\u002Fa> at conferences. There are lots of variables: who is on the panel, what are the topics, and how skilled is the moderator? It's almost better to give each person on the panel a 10 minute window to talk about some topic they think will have value for the audience.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>I often think of small, focused presentations as \"Grok Talks\". One presentation format which hews closely to this model is \u003Ca href=\"http:\u002F\u002Fwww.wired.com\u002Ftechbiz\u002Fmedia\u002Fmagazine\u002F15-09\u002Fst_pechakucha\">Pecha Kucha\u003C\u002Fa>. It's generally a good idea to err on the side of keeping it small. The larger the talk, the more material you should have whittled away and deleted to get it down to size.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>In building Stack Overflow, we copied a key part of the \u003Ca href=\"http:\u002F\u002Fupload.wikimedia.org\u002Fwikipedia\u002Fcommons\u002F4\u002F41\u002FMediawiki-database-schema.png?\">Wikipedia database design\u003C\u002Fa>. This turned out to be a mistake. We are due for a massive database refactoring, which is going to be very painful, but it is necessary to avoid excessive joins in a lot of our key queries.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>We also begin to appreciate why the giant multi-terabyte table schemas (like Google's \u003Ca href=\"http:\u002F\u002Flabs.google.com\u002Fpapers\u002Fbigtable.html\">BigTable\u003C\u002Fa>) are completely join-free, basically simple hashtables or tuples spread across a server farm.  \u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>My benchmarking shows that CPU speed is surprisingly important on our database server. Going from 1.86 GHz, to 2.5 GHz, to 3.5 GHz CPUs I see an almost linear improvement in typical query times! The exception is queries which don't fit in memory, but right now with 4GB RAM most of our DB fits in ram; with the new 24GB RAM server I expect the database to be entirely in memory for quite a while.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Joel talks a bit about \u003Ca href=\"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FQueueing_theory\">queueing theory\u003C\u002Fa>, and its relation to OS scheduling. I propose that performance is a \u003Ca href=\"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FShell_game\">shell game\u003C\u002Fa> with bottlenecks, where you're constantly trying to decide whether the bottleneck should be memory, CPU, or I\u002FO.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>More discussion about \u003Ca href=\"http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FUnit_testing\">unit testing\u003C\u002Fa>: when it's appropriate, when it isn't, and what it is for. Remember, 100% code coverage (or even 90% code coverage) is not free. You're playing another shell game, so decide what axes of that resource balancing equation are important to you. Perhaps the greatest risk is being dogmatic about it.  \u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>If you enjoy this podcast, you might also enjoy \u003Ca href=\"http:\u002F\u002Fwww.hanselminutes.com\u002F\">Hanselminutes\u003C\u002Fa> -- Joel gives it his seal of approval!\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Joel revisits the \u003Ca href=\"http:\u002F\u002Fbutunclebob.com\u002FArticleS.UncleBob.PrinciplesOfOod\">SOLID principles\u003C\u002Fa>, and compares them to designing replaceable batteries, or a headphone jack, into your product. Appropriate in some narrow cases, but not all the time. Imagine a consumer product where \u003Cem>every single part of it\u003C\u002Fem> could be plugged in and replaced with another compatible part. Is that realistic?\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Perhaps new language features will advance programming a lot faster than any given set of programming principles, no matter how good they are. I've often thought that \u003Ca href=\"http:\u002F\u002Fwww.codinghorror.com\u002Fblog\u002Farchives\u002F000308.html\">design patterns are how languages evolve\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>Joel says you don't have to go to a prestigious name brand school, necessarily, but you need to choose schools that have a rigorous selection process. \"These people are a tiny little bit more likely to succeed at \u003Cem>our\u003C\u002Fem> rigorous selection process.\" I concur -- if you aren't seeking out challenges, whether they are large, small, or somewhere in-between -- what \u003Cem>are\u003C\u002Fem> you doing?\u003C\u002Fli>\n\u003C\u002Ful>\u003Cp>Our favorite Stack Overflow questions this week are:\u003C\u002Fp>\n\u003Cul>\u003Cli>\n\u003Cp>\u003Cstrong>Jeff\u003C\u002Fstrong>: \u003Ca href=\"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F157354\u002Fis-mathematics-necessary-for-programming\">Is mathematics necessary for programming?\u003C\u002Fa> It can't hurt, and often helps, but it is not strictly \u003Cem>necessary\u003C\u002Fem> in our opinions.  \u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Joel\u003C\u002Fstrong>: \u003Ca href=\"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F191302\u002Fdoes-it-matter-where-you-get-your-cs-degree\">Does it matter where you get your CS degree?\u003C\u002Fa> In brief, yes, but not for the reasons you might think.   \u003C\u002Fli>\n\u003C\u002Ful>\u003Cp>We answered one listener question on this podcast:\u003C\u002Fp>\n\u003Col>\u003Cli>\u003Cstrong>Michael Coney\u003C\u002Fstrong>: \"Joel mentioned the \u003Ca href=\"http:\u002F\u002Fbutunclebob.com\u002FArticleS.UncleBob.PrinciplesOfOod\">SOLID principles\u003C\u002Fa> on the previous podcast. Our software architect was also fond of over-isolation but was talked out of it. In the real world, if you need to change something, you just rewrite it.\"\u003C\u002Fli>\n\u003C\u002Fol>\u003Cp>If you'd like to submit a question to be answered in our next episode, record an audio file (90 seconds or less) and mail it to \u003Ca href=\"mailto:podcast@stackoverflow.com\">podcast@stackoverflow.com\u003C\u002Fa>. You can \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002Findex.php\u002F2008\u002F05\u002Frecording-podcast-questions-using-your-telephone\u002F\">record a question\u003C\u002Fa> using nothing but a telephone and a web browser. We also have a dedicated phone number you can call to leave audio questions at \u003Cstrong>646-826-3879\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fstackoverflow.fogbugz.com\u002Fdefault.asp?W29026\">transcript wiki\u003C\u002Fa> for this episode is available for public editing.\u003C\u002Fp>","html","2009-01-30T12:00:00.000Z",{"current":505},"podcast-39",[507,515],{"_createdAt":508,"_id":509,"_rev":510,"_type":511,"_updatedAt":508,"slug":512,"title":514},"2023-05-23T16:43:21Z","wp-tagcat-company","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":513},"company","Company",{"_createdAt":508,"_id":516,"_rev":510,"_type":511,"_updatedAt":508,"slug":517,"title":519},"wp-tagcat-podcast",{"current":518},"podcast","The Stack Overflow Podcast","Podcast #39",[522,528,534,540],{"_id":523,"publishedAt":524,"slug":525,"sponsored":93,"title":527},"76c9771b-34e6-4d98-8641-ecefc711f0ef","2026-07-06T15:23:34.559Z",{"_type":10,"current":526},"when-the-sensor-starts-thinking-snortml-agentic-ai-and-the-evolving-architecture-of-intrusion-detection","When the sensor starts thinking: SnortML, agentic AI, and the evolving architecture of intrusion detection",{"_id":529,"publishedAt":530,"slug":531,"sponsored":93,"title":533},"28e560af-f0aa-4d46-bd90-f435ad604aa7","2026-06-26T14:00:27.102Z",{"_type":10,"current":532},"paging-charity-how-can-engineering-leaders-avoid-becoming-bond-villains","Paging Charity! How can engineering leaders avoid becoming Bond villains?",{"_id":535,"publishedAt":536,"slug":537,"sponsored":93,"title":539},"4b22c2a3-3779-4966-93eb-5230391dbdce","2026-06-23T14:08:58.595Z",{"_type":10,"current":538},"your-ai-shipped-a-backend-that-boots-that-is-the-whole-problem","Your AI shipped a backend that boots. That is the whole problem.",{"_id":541,"publishedAt":542,"slug":543,"sponsored":93,"title":545},"5cf362e1-fe7b-45af-b69c-914731c6a052","2026-06-23T14:00:00.000Z",{"_type":10,"current":544},"the-2026-developer-survey-is-now-open-for-human-developers-only","The 2026 Developer Survey is now open (for human developers only)!",{"data":547,"sourceMap":-1},{"count":548,"lastTimestamp":93},0]