Filling in the Gaps

Published February 2, 2007 on adamfortuna

    You may have noticed a gap in my posting for the early morning talks yesterday. Well I was still waking waking up when I went to those. I didn't take the same kind of notes I took in the other presentations, but here are my thoughts on ones I did go to.

    Building Sustainable Software with Frameworks – Matthew Woodward
    If you've listening to the Coldfusion Weekly podcast you'll know Matt (and Peter) are good speakers. His talk was a good way to kick start the stage for the frameworks conference by setting along some guidelines and best practices. This was more than just a set of standards to focus on, but advice for software development in general.

    He talked a good deal about not letting bugs stay in your application, and to have daily builds, which in the case of Coldfusion basically means having a working version on the head at the end of the day with more features than were there at the beginning of the day. This allows you to extract a current version of the site if it's ever needed and it'll be in working shape. Joel Spolsky agrees, and it's the first question in the Joel Test.

    Letting bad code into an application is obviously not a good idea, but sometimes shortcuts are made to reach deadlines. Matt describes this concept as programming debt. It may work for the moment, but somewhere down the line some programmer will have to repay the debt by fixing or refactoring the code. Even if you're a single developer cutting corners you'll have to repay your own debt someday.

    Lots of talk about creating a good atmosphere in the workplace with mentoring, discussion and debates. It's important to have a set of coding standards, but they must be adhered to and enforced in order to be useful. He recommends Sean Corfields standards list as a starting point for drafting your own rules.

    As far as code goes, there's one main concept to walk away with. Create a framework agnostic model layer! The sample application that Matt is demoing the code for (in MachII) is framework agnostic. I can't say it's usual to move a perfectly designed application between framework, but hey you never know. As frameworks evolve one might outpace another to the point that you want to switch to take advantage of those new features. Maybe you'll just be bored one day and want a chance to work with something else. Well it's not the most practical use, but having your framework and model completely independent is a running best practice. Going over this application is the first look at MachII I've had in a year or two and was pleasantly impressed with the code. He emphasizes having methods that do one small task and do them well. To demonstrate this, he went over a login form that returns whether a user was successfully logged in or not. The calling code doesn't have to know anything about how the login method works, it only cares if "success” or "failure” is returned. Good OOP practices = more sustainable software.

    SAM for Humans, by Jon Rowny
    I wasn't planning on going to this one originally, but after all that model talk I decided in Matt's talk I decided to head in another direction (instead of going to Chips Model driven development and code generation talk). While grabbing coffee before the first talk of the day I overheard a little conversation between two other guys there along the lines of

    guy 1: People think it's a framework!
    guy 2: But it's not a framework, there are no core files.
    me: Are you talking about SAM? I thought it was a framework.

    That about raps up my knowledge of SAM going into this talk, and was the cause of another line in the presentation explicitly
    stating that SAM is a methodology and not a framework. So what exactly is SAM? It's a set of bylaws originally outlined by Simon Horwith of AboutWeb. It came about as a result of being asked the question "If you don't use frameworks, what do you use?” over and over again. Since it's a methodology, it's open to interpretation. Although the main concept is that you shouldn't use frameworks, Jon's use of it is in cooperation with frameworks to make them better, although the code samples presented are sans-framework.

    Oh yeah, what's SAM again? Sensible Assembly Methodology. The core concepts are best practices, lots of planning and requirements gather, and work ahead of time, Object Think and reusable code. Basically it's all just best practices. For the reusable code part, instead of using a framework for it, he mentions using customtags heavily (some discussion of using <cfimport> to use custom tags which Corfield clearly explains as being superior to just calling it). Customtags in this case aren't just used for accomplishing little parts of application, but as a controller and a view with the objects as models. In his sample application you can create a new elseif statement in the customtag for a new page. This can then be called by specifying that new action name when calling the customtag. Adding a new one is pretty easy, and I'll admit the application is running fast. There's always debate about using frameworks, but in the end I do agree it's whatever gets the job done. For small applications I can understand using this, or perhaps Steve Nelsons idea, but when it comes to a big site I just can't get my head around not using a framework; well and staying sane.