More on databases and business logic

This particular entry in the “forever war” of whether to use object-relational mapping or stored procedures does a better job than most in these ways:

  • It changes the argument from “either-or” to a situational one.
  • It broadens the scope of database objects in the discussion beyond stored procedures to include functions, triggers, views, constraints, and referential integrity.
  • It rates the suitability of each database object to a particular task.

I found the article especially relevant to my current job because of how many projects I’m responsible for that have huge amounts of business logic captured in stored procedures hundreds of lines long.  As far as I can tell, much of the reason for the length of these stored procedures is that they’re being used to represent workflows.  SQL doesn’t look like the best way to implement those to me, so I suspect I’ll be looking at Windows Workflow Foundation a lot more closely in the very near future.

Source Code Control

I came across this post from Joel Spolsky last week (though I’m just now getting around to blogging about it). We’re using Team Foundation Server for source code control at work, and we’ve managed to have the problems of check-ins breaking the build and too few check-ins to have a good delta of changes at the same time.  While the applications we build at APS Healthcare aren’t the size of an operating system as far as lines of code, the branching-and-merging idea Spolsky describes would probably be useful to us.

Common causes of the System.NullReference exception

I came across this blog post today while researching a problem with one of our applications. The most interesting thing I found about this article was the comparison between VB.NET and C#. It’s one of a few I’ve seen that goes beyond the syntactic differences to deeper issues. The examples in this article show cases where C# wouldn’t even compile code that runs in VB.NET (and throws exceptions at runtime). C# makes you work harder to write code that compiles and throws exceptions at runtime. It’s yet another argument in favor of C# I hadn’t considered before reading this post.

Working with IT agencies

I have to deal with IT agencies a lot more now as a software development manager than I ever did in previous roles.  So coming across a blog post titled “IT Agencies and the Devil” was pretty funny.  If starting an IT agency is as simple as the author suggests, it certain explains why there seem to be so many of them.

So far, I can single out one such agency for providing people that are consistently high-quality–Software Consortium.  The guys they’ve sent to work on the projects I’m responsible for have all turned out excellent code and been very good about knowledge-sharing.