[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-V-c8T92Io2DtJiFUbSCenRcmAqZ6SvxQID-PApaGcIs":3,"sanity-5IFx0jTJYIKtthaM1CDP8S0W178k1Zib64jvGWpwhuY":547},{"data":4,"sourceMap":-1},{"latestPodcast":5,"latestReleases":14,"post":39,"recent":522},[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":495,"excerpt":496,"image":497,"legacyBody":501,"product":111,"publishedAt":504,"slug":505,"sponsored":111,"tags":507,"title":521,"visible":12},"2023-05-25T09:36:57Z","wp-post-3455","dgl3SCUzppW3U2LvCoS1MC","blogPost","2023-07-13T14:54:25Z",[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,116,135,165,206,236,255,263,271,299,307,315,334,353,361,370,389,397,405,420,423,438,476],{"_key":61,"_type":62,"children":63,"markDefs":69,"style":70},"17b6397a4d75","block",[64],{"_key":65,"_type":66,"marks":67,"text":68},"17b6397a4d750","span",[],"This is the 54th episode of the StackOverflow podcast where Joel and Jeff discuss bespoke software development, URL routing, the God Algorithm, and getting your database under version control.",[],"normal",{"_key":72,"_type":62,"children":73,"level":105,"listItem":106,"markDefs":107,"style":70},"381a7a127668",[74,78,83,87,92,96,101],{"_key":75,"_type":66,"marks":76,"text":77},"381a7a1276680",[],"We need to talk to you about your flair. Specifically, ",{"_key":79,"_type":66,"marks":80,"text":82},"381a7a1276681",[81],"cc2876bd190f","your User Flair!",{"_key":84,"_type":66,"marks":85,"text":86},"381a7a1276682",[]," It's a small badge you can embed in your own website to show off your identity and \"street cred\", such as it is, on Stack Overflow and Server Fault. If that's not enough, you can also ",{"_key":88,"_type":66,"marks":89,"text":91},"381a7a1276683",[90],"2dae460485ed","put it on a t-shirt",{"_key":93,"_type":66,"marks":94,"text":95},"381a7a1276684",[],". Or dress up like ",{"_key":97,"_type":66,"marks":98,"text":100},"381a7a1276685",[99],"3ce92db7cd6a","the Facebook guy",{"_key":102,"_type":66,"marks":103,"text":104},"381a7a1276686",[],". Hey man, these are your life choices, not ours!",1,"bullet",[108,112,114],{"_key":81,"_type":109,"href":110,"reference":111},"link","http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Fnowearn-valuable-flair",null,{"_key":90,"_type":109,"href":113,"reference":111},"http:\u002F\u002Fshirt.social-shirt.com\u002Fstackoverflow-shirt.html",{"_key":99,"_type":109,"href":115,"reference":111},"http:\u002F\u002Fwww.eye-wash.com\u002Fwp-content\u002Fuploads\u002F2007\u002F11\u002Ffacebookcostume2.jpg",{"_key":117,"_type":62,"children":118,"level":105,"listItem":106,"markDefs":132,"style":70},"1e3dd3dfe68d",[119,123,128],{"_key":120,"_type":66,"marks":121,"text":122},"1e3dd3dfe68d0",[],"A brief discussion of how ",{"_key":124,"_type":66,"marks":125,"text":127},"1e3dd3dfe68d1",[126],"7a84ed407ca9","ASP.NET MVC URL routes",{"_key":129,"_type":66,"marks":130,"text":131},"1e3dd3dfe68d2",[]," should be declared. We do it through an custom attribute attached to the top of the method signature, which we feel provides excellent locality of information.",[133],{"_key":126,"_type":109,"href":134,"reference":111},"http:\u002F\u002Fwww.asp.net\u002FLearn\u002Fmvc\u002Ftutorial-05-cs.aspx",{"_key":136,"_type":62,"children":137,"level":105,"listItem":106,"markDefs":160,"style":70},"67b3320c6379",[138,142,147,151,156],{"_key":139,"_type":66,"marks":140,"text":141},"67b3320c63790",[],"Part of the promise of Stack Overflow was that it would be run by the community. We are trying to continue delivering on that promise by ",{"_key":143,"_type":66,"marks":144,"text":146},"67b3320c63791",[145],"b07d79934e19","electing new community moderators",{"_key":148,"_type":66,"marks":149,"text":150},"67b3320c63792",[],", and having a ",{"_key":152,"_type":66,"marks":153,"text":155},"67b3320c63793",[154],"9f108c18d341","moderation policy",{"_key":157,"_type":66,"marks":158,"text":159},"67b3320c63794",[]," that all the moderators (including the core team) abide by.",[161,163],{"_key":145,"_type":109,"href":162,"reference":111},"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Fwelcome-new-community-moderators\u002F",{"_key":154,"_type":109,"href":164,"reference":111},"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Fa-theory-of-moderation\u002F",{"_key":166,"_type":62,"children":167,"level":105,"listItem":106,"markDefs":199,"style":70},"090c6af0969d",[168,172,177,181,186,190,195],{"_key":169,"_type":66,"marks":170,"text":171},"090c6af0969d0",[],"Speaking of ",{"_key":173,"_type":66,"marks":174,"text":176},"090c6af0969d1",[175],"ddcf737cc608","Stack Overflow DevDays",{"_key":178,"_type":66,"marks":179,"text":180},"090c6af0969d2",[],", \"the\" ",{"_key":182,"_type":66,"marks":183,"text":185},"090c6af0969d3",[184],"84f92c76fe64","Jon Skeet",{"_key":187,"_type":66,"marks":188,"text":189},"090c6af0969d4",[]," is confirmed to be a speaker at the London DevDays; ",{"_key":191,"_type":66,"marks":192,"text":194},"090c6af0969d5",[193],"bfb9c01a5133","Scott Hanselman",{"_key":196,"_type":66,"marks":197,"text":198},"090c6af0969d6",[]," will be at the Seattle and San Francisco DevDays.",[200,202,204],{"_key":175,"_type":109,"href":201,"reference":111},"http:\u002F\u002Fstackoverflow.carsonified.com\u002F",{"_key":184,"_type":109,"href":203,"reference":111},"http:\u002F\u002Fmsmvps.com\u002Fblogs\u002Fjon_skeet\u002Fdefault.aspx",{"_key":193,"_type":109,"href":205,"reference":111},"http:\u002F\u002Fwww.hanselman.com\u002Fblog\u002F",{"_key":207,"_type":62,"children":208,"level":105,"listItem":106,"markDefs":231,"style":70},"a8fc8a0af57e",[209,213,218,222,227],{"_key":210,"_type":66,"marks":211,"text":212},"a8fc8a0af57e0",[],"We now have ",{"_key":214,"_type":66,"marks":215,"text":217},"a8fc8a0af57e1",[216],"c57e1ed3dbe5","better, AJAX-y support",{"_key":219,"_type":66,"marks":220,"text":221},"a8fc8a0af57e2",[]," for handling ",{"_key":223,"_type":66,"marks":224,"text":226},"a8fc8a0af57e3",[225],"53e24a1f8427","duplicate questions",{"_key":228,"_type":66,"marks":229,"text":230},"a8fc8a0af57e4",[],". We believe duplicate mapping is mostly a human-driven task, but we want to streamline the workflow as much as possible.",[232,234],{"_key":216,"_type":109,"href":233,"reference":111},"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Flinking-duplicate-questions\u002F",{"_key":225,"_type":109,"href":235,"reference":111},"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F04\u002Fhandling-duplicate-questions\u002F",{"_key":237,"_type":62,"children":238,"level":105,"listItem":106,"markDefs":252,"style":70},"97dba133dfd9",[239,243,248],{"_key":240,"_type":66,"marks":241,"text":242},"97dba133dfd90",[],"Part of our development style on Stack Overflow is to build features as they become needed, rather than coding speculatively, trying to guess what will become important later. Our ",{"_key":244,"_type":66,"marks":245,"text":247},"97dba133dfd91",[246],"659e22194179","UserVoice site",{"_key":249,"_type":66,"marks":250,"text":251},"97dba133dfd92",[]," has been very helpful in this regard, as we try mightily to retire the top rated user feature requests and bugs. Well, the ones we agree with, anyway..",[253],{"_key":246,"_type":109,"href":254,"reference":111},"http:\u002F\u002Fstackoverflow.uservoice.com\u002F",{"_key":256,"_type":62,"children":257,"level":105,"listItem":106,"markDefs":262,"style":70},"9809cd1bfae5",[258],{"_key":259,"_type":66,"marks":260,"text":261},"9809cd1bfae50",[],"How do you bid on software development projects without cutting corners and still stay competitive? Joel shares his thoughts. \"Your job is not to deliver a spec, it's to step into the client's shoes and figure out what their problem is, and how it can be solved with computers.\"",[],{"_key":264,"_type":62,"children":265,"level":105,"listItem":106,"markDefs":270,"style":70},"0ebff15ec1f4",[266],{"_key":267,"_type":66,"marks":268,"text":269},"0ebff15ec1f40",[],"I maintain this is the blessing and curse of contract software development -- you are a proxy employee during the contract. This can be good, if it's a client you like and have empathy with, or it can be bad, if it's a client that you don't respect, or that you have absolutely nothing in common with. Would you work for that company?",[],{"_key":272,"_type":62,"children":273,"level":105,"listItem":106,"markDefs":296,"style":70},"95947e8ecc88",[274,278,283,287,292],{"_key":275,"_type":66,"marks":276,"text":277},"95947e8ecc880",[],"On the topic of bespoke software, Joel recommends the oddly named book ",{"_key":279,"_type":66,"marks":280,"text":282},"95947e8ecc881",[281],"6079185e6a87","How to Castrate a Bull: Unexpected Lessons on Risk, Growth, and Success in Business",{"_key":284,"_type":66,"marks":285,"text":286},"95947e8ecc882",[],". Consider selling coffee makers to a hotel -- hotels don't really want a bunch of coffee machines (even if that's what they ask for), they want a ",{"_key":288,"_type":66,"marks":289,"text":291},"95947e8ecc883",[290],"em","system",{"_key":293,"_type":66,"marks":294,"text":295},"95947e8ecc884",[]," that guarantees they never have to think about coffee makers in their rooms again. This is what it means to be \"enterprisey\". This is what big consulting firms do.",[297],{"_key":281,"_type":109,"href":298,"reference":111},"http:\u002F\u002Fwww.amazon.com\u002Fdp\u002F0470345233\u002F?tag=codinghorror-20",{"_key":300,"_type":62,"children":301,"level":105,"listItem":106,"markDefs":306,"style":70},"47de89e0367f",[302],{"_key":303,"_type":66,"marks":304,"text":305},"47de89e0367f0",[],"If you're worried about backdoors in your code, first, don't work with scumbags. But if you work at an industry where there is a lot of risk, such as banking, then you need an audit trail on everything, and perhaps an internal audit department that does nothing other than check things periodically. A certain percentage of random auditing may be preferable to strict gates on every action.",[],{"_key":308,"_type":62,"children":309,"level":105,"listItem":106,"markDefs":314,"style":70},"25d229ff77b4",[310],{"_key":311,"_type":66,"marks":312,"text":313},"25d229ff77b40",[],"A discussion of O(1), which sort of seems like \"The God Algorithm\" at first glance. But you do have to define how 'big' that 1 is. There are dimensions of space and time here that aren't immediately apparent.",[],{"_key":316,"_type":62,"children":317,"level":105,"listItem":106,"markDefs":331,"style":70},"2d305a156d3b",[318,322,327],{"_key":319,"_type":66,"marks":320,"text":321},"2d305a156d3b0",[],"One quirk of keeping your database under version control is that you have to make a distinction between the schema, the data, and the fixed data. At the very least, have tools that let you diff your database! And ideally integrate with your build and deployment. Have you looked at the Rails way of handling database changes, with ",{"_key":323,"_type":66,"marks":324,"text":326},"2d305a156d3b1",[325],"be648996af5a","Migrations",{"_key":328,"_type":66,"marks":329,"text":330},"2d305a156d3b2",[],"?",[332],{"_key":325,"_type":109,"href":333,"reference":111},"http:\u002F\u002Fguides.rubyonrails.org\u002Fmigrations.html",{"_key":335,"_type":62,"children":336,"level":105,"listItem":106,"markDefs":350,"style":70},"953bc20fa08c",[337,341,346],{"_key":338,"_type":66,"marks":339,"text":340},"953bc20fa08c0",[],"Thanks to our podcast sponsor, ",{"_key":342,"_type":66,"marks":343,"text":345},"953bc20fa08c1",[344],"af370ccc6bed","Mint",{"_key":347,"_type":66,"marks":348,"text":349},"953bc20fa08c2",[]," -- they're looking for a great developer!",[351],{"_key":344,"_type":109,"href":352,"reference":111},"http:\u002F\u002Fwww.mint.com\u002Fjobs",{"_key":354,"_type":62,"children":355,"markDefs":360,"style":70},"35e6c2f559a9",[356],{"_key":357,"_type":66,"marks":358,"text":359},"35e6c2f559a90",[],"We answered the following listener questions on this podcast:",[],{"_key":362,"_type":62,"children":363,"level":105,"listItem":368,"markDefs":369,"style":70},"ba48d94ac0c6",[364],{"_key":365,"_type":66,"marks":366,"text":367},"ba48d94ac0c60",[],"\"Is it true that the more the complex the software system is, the simpler it is to manage, because there are more rules defining its behavior?\"","number",[],{"_key":371,"_type":62,"children":372,"level":105,"listItem":368,"markDefs":386,"style":70},"69d0017d881c",[373,377,382],{"_key":374,"_type":66,"marks":375,"text":376},"69d0017d881c0",[],"\"How do you win software development contracts, while still delivering quality?\" Based on an existing ",{"_key":378,"_type":66,"marks":379,"text":381},"69d0017d881c1",[380],"4d750e20ebad","question",{"_key":383,"_type":66,"marks":384,"text":385},"69d0017d881c2",[],".",[387],{"_key":380,"_type":109,"href":388,"reference":111},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F204572\u002Fhow-can-a-software-agency-deliver-quality-software-win-projects",{"_key":390,"_type":62,"children":391,"level":105,"listItem":368,"markDefs":396,"style":70},"cd20757d02e1",[392],{"_key":393,"_type":66,"marks":394,"text":395},"cd20757d02e10",[],"\"How do you deal with a large codebase, and disgruntled employees leaving backdoors in the code?\"",[],{"_key":398,"_type":62,"children":399,"markDefs":404,"style":70},"2ca87c057016",[400],{"_key":401,"_type":66,"marks":402,"text":403},"2ca87c0570160",[],"Our favorite Stack Overflow questions this week are:",[],{"_key":406,"_type":62,"children":407,"level":105,"listItem":106,"markDefs":417,"style":70},"5b8dfcb3e88d",[408,413],{"_key":409,"_type":66,"marks":410,"text":412},"5b8dfcb3e88d0",[411],"639a3a2e5cfb","Do you source control your databases?",{"_key":414,"_type":66,"marks":415,"text":416},"5b8dfcb3e88d1",[]," The answer is always yes! Yes! YES",[418],{"_key":411,"_type":109,"href":419,"reference":111},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F115369\u002Fdo-you-source-control-your-databases",{"_key":421,"_type":53,"alt":422,"markDefs":111},"960a970d6f19","  \n",{"_key":424,"_type":62,"children":425,"level":105,"listItem":106,"markDefs":435,"style":70},"b20a34ebd858",[426,431],{"_key":427,"_type":66,"marks":428,"text":430},"b20a34ebd8580",[429],"47b009afe66c","What's Up with O(1)?",{"_key":432,"_type":66,"marks":433,"text":434},"b20a34ebd8581",[]," Worth some thought.",[436],{"_key":429,"_type":109,"href":437,"reference":111},"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F332952\u002Fwhats-up-with-o1",{"_key":439,"_type":62,"children":440,"markDefs":471,"style":70},"223b2bb9db26",[441,445,450,454,459,463,468],{"_key":442,"_type":66,"marks":443,"text":444},"223b2bb9db260",[],"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},"223b2bb9db261",[448],"41add5c1f499","podcast@stackoverflow.com",{"_key":451,"_type":66,"marks":452,"text":453},"223b2bb9db262",[],". You can ",{"_key":455,"_type":66,"marks":456,"text":458},"223b2bb9db263",[457],"b10d6ce738b1","record a question",{"_key":460,"_type":66,"marks":461,"text":462},"223b2bb9db264",[]," 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":467},"223b2bb9db265",[466],"strong","646-826-3879",{"_key":469,"_type":66,"marks":470,"text":385},"223b2bb9db266",[],[472,474],{"_key":448,"_type":109,"href":473,"reference":111},"mailto:podcast@stackoverflow.com",{"_key":457,"_type":109,"href":475,"reference":111},"http:\u002F\u002Fblog.stackoverflow.com\u002Findex.php\u002F2008\u002F05\u002Frecording-podcast-questions-using-your-telephone\u002F",{"_key":477,"_type":62,"children":478,"markDefs":492,"style":70},"14bc81a48f38",[479,483,488],{"_key":480,"_type":66,"marks":481,"text":482},"14bc81a48f380",[],"The ",{"_key":484,"_type":66,"marks":485,"text":487},"14bc81a48f381",[486],"cd54d61d3b35","transcript wiki",{"_key":489,"_type":66,"marks":490,"text":491},"14bc81a48f382",[]," for this episode is available for public editing.",[493],{"_key":486,"_type":109,"href":494,"reference":111},"https:\u002F\u002Fstackoverflow.fogbugz.com\u002Fdefault.asp?pg=pgWiki&command=view&ixWikiPage=29053","2009\u002F05\u002F21","",{"_type":53,"asset":498},{"_ref":499,"_type":500},"image-2e7e2d828ffbb0404d422ecab697f29109a4339b-1500x1000-jpg","reference",{"code":502,"language":503},"\u003Cp>This is the 54th episode of the StackOverflow podcast where Joel and Jeff discuss bespoke software development, URL routing, the God Algorithm, and getting your database under version control.\u003C\u002Fp>\n\u003Cul>\u003Cli>\n\u003Cp>We need to talk to you about your flair. Specifically, \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Fnowearn-valuable-flair\">your User Flair!\u003C\u002Fa> It's a small badge you can embed in your own website to show off your identity and \"street cred\", such as it is, on Stack Overflow and Server Fault. If that's not enough, you can also \u003Ca href=\"http:\u002F\u002Fshirt.social-shirt.com\u002Fstackoverflow-shirt.html\">put it on a t-shirt\u003C\u002Fa>. Or dress up like \u003Ca href=\"http:\u002F\u002Fwww.eye-wash.com\u002Fwp-content\u002Fuploads\u002F2007\u002F11\u002Ffacebookcostume2.jpg\">the Facebook guy\u003C\u002Fa>. Hey man, these are your life choices, not ours!\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>A brief discussion of how \u003Ca href=\"http:\u002F\u002Fwww.asp.net\u002FLearn\u002Fmvc\u002Ftutorial-05-cs.aspx\">ASP.NET MVC URL routes\u003C\u002Fa> should be declared. We do it through an custom attribute attached to the top of the method signature, which we feel provides excellent locality of information.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Part of the promise of Stack Overflow was that it would be run by the community. We are trying to continue delivering on that promise by \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Fwelcome-new-community-moderators\u002F\">electing new community moderators\u003C\u002Fa>, and having a \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Fa-theory-of-moderation\u002F\">moderation policy\u003C\u002Fa> that all the moderators (including the core team) abide by.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Speaking of \u003Ca href=\"http:\u002F\u002Fstackoverflow.carsonified.com\u002F\">Stack Overflow DevDays\u003C\u002Fa>, \"the\" \u003Ca href=\"http:\u002F\u002Fmsmvps.com\u002Fblogs\u002Fjon_skeet\u002Fdefault.aspx\">Jon Skeet\u003C\u002Fa> is confirmed to be a speaker at the London DevDays; \u003Ca href=\"http:\u002F\u002Fwww.hanselman.com\u002Fblog\u002F\">Scott Hanselman\u003C\u002Fa> will be at the Seattle and San Francisco DevDays.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>We now have \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F05\u002Flinking-duplicate-questions\u002F\">better, AJAX-y support\u003C\u002Fa> for handling \u003Ca href=\"http:\u002F\u002Fblog.stackoverflow.com\u002F2009\u002F04\u002Fhandling-duplicate-questions\u002F\">duplicate questions\u003C\u002Fa>. We believe duplicate mapping is mostly a human-driven task, but we want to streamline the workflow as much as possible.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Part of our development style on Stack Overflow is to build features as they become needed, rather than coding speculatively, trying to guess what will become important later. Our \u003Ca href=\"http:\u002F\u002Fstackoverflow.uservoice.com\u002F\">UserVoice site\u003C\u002Fa> has been very helpful in this regard, as we try mightily to retire the top rated user feature requests and bugs. Well, the ones we agree with, anyway..\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>How do you bid on software development projects without cutting corners and still stay competitive? Joel shares his thoughts. \"Your job is not to deliver a spec, it's to step into the client's shoes and figure out what their problem is, and how it can be solved with computers.\"\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>I maintain this is the blessing and curse of contract software development -- you are a proxy employee during the contract. This can be good, if it's a client you like and have empathy with, or it can be bad, if it's a client that you don't respect, or that you have absolutely nothing in common with. Would you work for that company?\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>On the topic of bespoke software, Joel recommends the oddly named book \u003Ca href=\"http:\u002F\u002Fwww.amazon.com\u002Fdp\u002F0470345233\u002F?tag=codinghorror-20\">How to Castrate a Bull: Unexpected Lessons on Risk, Growth, and Success in Business\u003C\u002Fa>. Consider selling coffee makers to a hotel -- hotels don't really want a bunch of coffee machines (even if that's what they ask for), they want a \u003Cem>system\u003C\u002Fem> that guarantees they never have to think about coffee makers in their rooms again. This is what it means to be \"enterprisey\". This is what big consulting firms do.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>If you're worried about backdoors in your code, first, don't work with scumbags. But if you work at an industry where there is a lot of risk, such as banking, then you need an audit trail on everything, and perhaps an internal audit department that does nothing other than check things periodically. A certain percentage of random auditing may be preferable to strict gates on every action.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>A discussion of O(1), which sort of seems like \"The God Algorithm\" at first glance. But you do have to define how 'big' that 1 is. There are dimensions of space and time here that aren't immediately apparent.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>One quirk of keeping your database under version control is that you have to make a distinction between the schema, the data, and the fixed data. At the very least, have tools that let you diff your database! And ideally integrate with your build and deployment. Have you looked at the Rails way of handling database changes, with \u003Ca href=\"http:\u002F\u002Fguides.rubyonrails.org\u002Fmigrations.html\">Migrations\u003C\u002Fa>?   \u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>Thanks to our podcast sponsor, \u003Ca href=\"http:\u002F\u002Fwww.mint.com\u002Fjobs\">Mint\u003C\u002Fa> -- they're looking for a great developer!\u003C\u002Fli>\n\u003C\u002Ful>\u003Cp>We answered the following listener questions on this podcast:\u003C\u002Fp>\n\u003Col>\u003Cli>\n\u003Cp>\"Is it true that the more the complex the software system is, the simpler it is to manage, because there are more rules defining its behavior?\"\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\"How do you win software development contracts, while still delivering quality?\" Based on an existing \u003Ca href=\"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F204572\u002Fhow-can-a-software-agency-deliver-quality-software-win-projects\">question\u003C\u002Fa>.  \u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\"How do you deal with a large codebase, and disgruntled employees leaving backdoors in the code?\"\u003C\u002Fli>\n\u003C\u002Fol>\u003Cp>Our favorite Stack Overflow questions this week are:\u003C\u002Fp>\n\u003Cul>\u003Cli>\n\u003Cp>\u003Ca href=\"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F115369\u002Fdo-you-source-control-your-databases\">Do you source control your databases?\u003C\u002Fa> The answer is always yes! Yes! YES\u003Cimg src=\"http:\u002F\u002Fstackoverflow.blog\u002Fwp-content\u002Fuploads\u002F2017\u002F02\u002Fwhats-up-with-o1\" alt=\"  \n\">\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F332952\u002Fwhats-up-with-o1\">What's Up with O(1)?\u003C\u002Fa> Worth some thought.\u003C\u002Fli>\n\u003C\u002Ful>\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?pg=pgWiki&amp;command=view&amp;ixWikiPage=29053\">transcript wiki\u003C\u002Fa> for this episode is available for public editing.\u003C\u002Fp>","html","2009-05-21T12:00:00.000Z",{"current":506},"podcast-54",[508,516],{"_createdAt":509,"_id":510,"_rev":511,"_type":512,"_updatedAt":509,"slug":513,"title":515},"2023-05-23T16:43:21Z","wp-tagcat-company","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":514},"company","Company",{"_createdAt":509,"_id":517,"_rev":511,"_type":512,"_updatedAt":509,"slug":518,"title":520},"wp-tagcat-podcast",{"current":519},"podcast","The Stack Overflow Podcast","Podcast #54",[523,529,535,541],{"_id":524,"publishedAt":525,"slug":526,"sponsored":111,"title":528},"76c9771b-34e6-4d98-8641-ecefc711f0ef","2026-07-06T15:23:34.559Z",{"_type":10,"current":527},"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":530,"publishedAt":531,"slug":532,"sponsored":111,"title":534},"28e560af-f0aa-4d46-bd90-f435ad604aa7","2026-06-26T14:00:27.102Z",{"_type":10,"current":533},"paging-charity-how-can-engineering-leaders-avoid-becoming-bond-villains","Paging Charity! How can engineering leaders avoid becoming Bond villains?",{"_id":536,"publishedAt":537,"slug":538,"sponsored":111,"title":540},"4b22c2a3-3779-4966-93eb-5230391dbdce","2026-06-23T14:08:58.595Z",{"_type":10,"current":539},"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":542,"publishedAt":543,"slug":544,"sponsored":111,"title":546},"5cf362e1-fe7b-45af-b69c-914731c6a052","2026-06-23T14:00:00.000Z",{"_type":10,"current":545},"the-2026-developer-survey-is-now-open-for-human-developers-only","The 2026 Developer Survey is now open (for human developers only)!",{"data":548,"sourceMap":-1},{"count":549,"lastTimestamp":111},0]