3 Simple Rules for Solution Management

Having a properly structured project—or more properly, solution—is absolutely vital to ensuring a development initiative’s success. In a pinch, a developer needs to be able to pull the solution from source control, force a restore of the database and any other external dependencies, make minor and appropriate configuration changes and have a building, functional solution. There are alot of nuances to making this work in practice, but the essence of keeping things manageable can be expressed in three rather simple, yet meaty, rules.

  1. Always use some sort of source control.

    There are a number of source control solutions available to cover nearly any development situation from the lone hobbyist to huge geographically distributed teams. Exactly which one you use should be driven by your requirements and infrastructure. But developing without a source control system in place is irresponsible to your clients or employers or just yourself. You don’t even have to get involved with managing the system yourself—hosted SVN solutions are available for a few dollars a month. And several sites offer free, public source control systems for open source projects.

    Why is this source control system such a cruical component? Because every software solution needs one, and only one true source. Otherwise, when that hard drive, supplied by the lowest bidder, dies a horrible clanking death, you will be challenged to restore the status quo ante mortem.

  2. If it is an integral part of the project, it is in source control.

    It used to be common wisdom that binaries do not belong in source control. The argument against this revolved around the fact that binaries are comparatively huge and cannot be differenced so it was expensive and made little sense to store them in a controlled sense. Neither of those facts are false, but if the operational goal of using source control is to provide one true source for everything you need for to make It fly, then those binaries should be in source control. Things this would include are items like 3rd party libraries (including unit testing frameworks), databases, art files and especially technical documentation. If someone needs to do emergency maintenance while I am sitting beach-side in Dubai, I really would prefer not to be disturbed.

    One very interesting tangential question here is “should a database drop be included in this system?” My general answer is a resounding yes, with an understanding that this could be logistically impossible due to the size or sensitivity of these files. If that is not the case, all efforts should be made to attach a sample database to the source-controlled solution in order to ensure that a developer is dealing with a one-stop shop.

  3. Redeployment to a virgin environment must be a minimum fuss operation.

    How many times have you received a project which, even if it builds on the first attempt, requires hours of tweaking and futzing with configuration files, system settings and database details to make it actually work? This should never happen.

    In a perfect world, you should be able to get the solution from source control, run a script and everything should just work. This scenario is often a bit hopeful for many complex applications. But redeployment should be a simple, repeatable operation at worst. This means that there should be a database creation and/or restoration script, including appropriate code to re-wire users and roles. And it also means that any estoric system settings dependencies shall be scripted.

I intentionally avoided giving specific recommendations here as exactly what to do really depends on the nature of your project and your environment. This is not to say one cannot learn from concrete examples. For that, I would start with SubText, the .NET blogging package, as it is very, very well organized in general. Furthermore, the project in many way resembles a custom long-lived, medium scale web application. The kinds of things most of you probably are working on. Enjoy, and keep those solutions well-managed.

kick it on DotNetKicks.com

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • http://www.inergyllc.com JasonRCS

    Source Control and VS

    I have tried to use AnkhSVN and SVN, but it gets bogged down with large projects (I have one now that is about 200 meg) Has anyone had any luck with source control other than VS Team or SourceSafe that works well with VS? It does not have to be free, just affordable for a team of one.

    Thanks,

    Jason

  • wwb_99

    I have heard good things about VisualSVN (http://www.visualsvn.com/). Not free, but cheap enough ($49) and it has a 30 day free trial.

    Honestly, for a team of one, presuming you don’t have a requirement to do major remote access, SourceSafe is reasonably adequate. Or at least adequate enough and better than nothing.

  • silverCORE

    for a team of one you can always use sourcegear Vault…its free, for a single user.

    its great, and you can access the source control server over the internet too.

    it sure can handle big projects

  • http://www.hypothesistech.com/ neliason

    silverCore, thanks for the recommendation. Vault looks promising. I like the SourceSafe import feature.

    I’ve always hated VSS. I dont find it to be very intuitive. Its interface is poorly designed. But inertia and integration with VS has kept me using it.

  • Dave Dragon

    Good Tips!
    Besides Source Control, you should use Version Control as well.

    The Value of Rapid recreation of a pristine environment can’t be underestimated.

    -Dave Dragon
    Ride it like you stole it

  • dhtmlgod

    I use SVN for large projects without a problem. I’ve used AnkhSVN and VisualSVN, VisualSVN is the better of the two (can’t find my key tho!). Great post Wyatt, I’ve recently moved every proejct I’m working on (30+) to a Continous Integration enviroment, and SubText was something I looked at when planning how to set everything up. CI is amazing! I’ve just started a new job where they have contracted most of their .NET stuff out, so moving everything to a CI implentation will be perfect for working with the other contractors

  • jobr700

    You may have the right to use Team Foundation Server Workgroup Edition. It depends on which VS / MSDN subscription you have.
    See this
    whitepaper
    (page 8) for some info.
    I know the subscription fee is high, but if you have it the source control is included for up to 5 users.

    Otherwise I would look at Plastic SCM since it seems to have a good set of feature and a low price.
    http://www.codicesoftware.com/