Contents tagged with Software Development

  • Software Books Ordered

    I just ordered some more books, on recommendations from a few of my peers.  I'll post my thoughts on them once they've arrived and I've had a chance to read them. The Art of Agile Development: James Shore, Shane Warden: Books Lean Software Development: An Agile Toolkit (The Agile Software Development Series): Mary Poppendieck, Tom Poppendieck: Books Domain-Driven Design Quickly: Floyd Marinescu, Abel Avram: Books For those of you who have already read these, what did you think?  Which one should I read first? more

  • Book: Working Effectively With Legacy Code

    Working Effectively with Legacy Code (Robert C. Martin Series): Michael Feathers: Books I've just finished the above book, which was recommended to me by Jeffrey Palermo a few months ago.  It is one of the most useful software development books I've read since Code Complete.  I wish I'd read it years ago, and I'm finding myself refactoring and rethinking my approach to current systems I've been working on for some time to make them more testable and easier to work with -- and I'm already seeing improvements.  Seriously, if you're writing software, you should buy this book and move it to the top of your professional reading list.  It's the book that Refactoring … more

  • Comments in Code Indicate Functions Trying To Escape

    I interviewed a couple of college students earlier this week for internship positions with Lake Quincy Media, and one of them reminded me of my own college days when we were graded in part based on how well commented our code was.  In school, comments are typically there as a "check the block" measure to ensure that the professor doesn't take off points for not having them, but in the real world comments can actually serve a good purpose.  One of the things you learn with experience is the difference between comments as a waste of space that clutters up your code files and comments that are actually meaningful.  However, for the purpose of this post, I'm going to look at a … more

  • Triskaidecaphobia

    Office 13 is going to actually be called Office 14, since there are some people who assign some negative significance to the number 13 (see Triskaidekaphobia).  Since this is clearly a significant concern in the world of computing, it seems natural to me that other areas of Microsoft's platform should work harder to avoid this unlucky number. On a slightly related note, I was glad to see that the Westin Seattle actually is honest about the numbering of its floors, and does *not* label the 13th floor 14 in an effort to appease people's superstitions.  Scott Cate and I stayed on the 13th floor this week, and even had the super-duper unluck of having 13 on our door twice (in a … more

  • CruiseControl.NET Caching Old Project Locations SOLVED

    As I mentioned in my previous post, we're just wrapping up a continuous integration solution for a client (and if you're not using this for your team, you should be.  If you don't have time to do it, contact us to do it for you.  You'll thank me later.) and one of the last requirements changes was an update to where on the build server's hard drive the project files should reside once they're checked out from source control.  After making this change in the cc.net.config file for the various ccnet projects, and also making the change in the source control provider's working folder association for the build account username, I figured things would just work.  I forgot … more

  • The Evolution of Status Pattern

    An interesting pattern that I see in many of the applications I've worked with is the notion of status, and how it tends to evolve over time.  This is probably familiar to most of you, though perhaps you've never thought about it.  Consider the following scenario: Requirement - The system should have Users, to control access via authentication. At this stage, the developer creates a User class and a User table with a few fields like UserId, UserName, Password, Email, etc.  Status is implicit - if there exists a row that matches the given UserId (or UserId and Password for authentication), then the user's status is valid.  Otherwise, not.  Ah, the beauty that is … more

  • Two Kinds of Knowledge

    Rick posted earlier today about how he's having a tougher and tougher time remembering the exact syntax and details of how to do relatively simple programming tasks, and instead finds that he's going off to find past code he's written (or blogged about) all the time.  Is it the early onset of senility, or is this typical?  It's the same for me, and it reminds me of something I learned in high school about things one knows.  There are two kinds of knowledge (and this predated the Internet so the latter was not nearly as easily accessed): Things You Know and Things You Know Where To Find. Things You Know Things you know are stored "by value" in your brain.  I call this … more

  • Book Recommended To Me

    I just ordered this book on the recommendation of a couple of MVC people: Working Effectively with Legacy Code (Robert C. Martin Series) Also testing out RoyO's Amazoner tool, which appears to have worked correctly.  Nice!  What is Amazoner? Amazoner was designed to make one thing very easy if you're a blog writer who's also an Amazone Associate:The abilty to recommend books that you like using your associate ID EASILY. Note that I don't actually have the book yet, so I can't tell you how I like it.  But I will.  Some day. more

  • Agile For Customers

    Tom Hollander wrote about why your customers will love agile (even if they think they hate it) last week, and made several interesting observations about how agile methodology has taken hold in many companies and teams, and why customers should really be fighting for it, rather than fearing it.  He notes that, while generally project management principles aren't particularly sexy or interesting to developer types, many developer types are totally into Agile.  I think some of this has to do with a very good marketing job on the part of Agile's proponents.  You've got things like "Extreme Programming" that make coding sound like competing in the X-Games.  And then you've … more

  • Use Unit Test Framework to Test Production DB Consistency

    For Lake Quincy Media's AdSignia Ad Server, I wanted to be able to ensure that the database had some internal logic rules checked periodically.  What kinds of rules?  Well, probably an example would be best.  Suffice to say up front, though, that we're talking about more than NOT NULL or enforcing referential integrity.  For example, part of the ad engine's job is to redirect requests to ads to their destination URL on the advertiser's page.  These URLs are stored in a field in the database.  Occasionally, through cut-and-paste, there would be newlines in the URL field, which would be difficult to detect visually, but which would cause the redirect to … more

  • CIO Magazine on Agile Development

    The latest issue of CIO Magazine has a featured article on Getting Clueful: 7 Things CIOs Should Know About Agile Development.  It includes quotes from a bunch of developers, including some names you'll surely recognize if you follow Agile discussions at all, like Scott Ambler.  In addition to gurus like Scott, there's also yours truly in there, talking up the value of well-tested code as a long term gain on a short term investment.  If you're trying to adopt some agile practices within your organization, and expecially if you're looking to incorporate test driven development or continuous integration, this article might provide some good supporting evidence for your case with … more

  • Developer Acronyms for 2007

    I've learned a few new acronyms this year and thought I'd start this post to let others share their favorites as well.  Some of these are new to me, and some are classics that I thought were worth including even though they certainly predate 2007.  Where possible I've included a link to find more information on the acronym/topic. AJAX - Asynchronous JavaScript and XML CAPTCHA - Completely Automated Public Turing test to tell Computers and Humans Apart (Carnegie Mellon) CI - Continuous Integration (see also CruiseControl.Net, Team Foundation Server 2008) DI - Dependency Injection (see also MSDN) DRY - Don't Repeat Yourself - aka Once and Only Once - no duplicate code … more