ALTERNATE UNIVERSE DEV

The Stack Overflow Podcast

Podcast #54

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.

  • We need to talk to you about your flair. Specifically, your User Flair! 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 put it on a t-shirt. Or dress up like the Facebook guy. Hey man, these are your life choices, not ours!

  • A brief discussion of how ASP.NET MVC URL routes 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.

  • 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 electing new community moderators, and having a moderation policy that all the moderators (including the core team) abide by.

  • Speaking of Stack Overflow DevDays, "the" Jon Skeet is confirmed to be a speaker at the London DevDays; Scott Hanselman will be at the Seattle and San Francisco DevDays.

  • We now have better, AJAX-y support for handling duplicate questions. We believe duplicate mapping is mostly a human-driven task, but we want to streamline the workflow as much as possible.

  • 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 UserVoice site 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..

  • 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."

  • 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?

  • On the topic of bespoke software, Joel recommends the oddly named book How to Castrate a Bull: Unexpected Lessons on Risk, Growth, and Success in Business. 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 system 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.

  • 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.

  • 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.

  • 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 Migrations?

  • Thanks to our podcast sponsor, Mint -- they're looking for a great developer!

We answered the following listener questions on this podcast:

  1. "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?"

  2. "How do you win software development contracts, while still delivering quality?" Based on an existing question.

  3. "How do you deal with a large codebase, and disgruntled employees leaving backdoors in the code?"

Our favorite Stack Overflow questions this week are:

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 podcast@stackoverflow.com. You can record a question using nothing but a telephone and a web browser. We also have a dedicated phone number you can call to leave audio questions at 646-826-3879.

The transcript wiki for this episode is available for public editing.

Episode source