Posts on general development topics
published: Thu, 27-Oct-2005 | updated: Sat, 6-Aug-2016
Here are the articles I've written on general development topics.
On-line interviewee testing
At work, we have several openings for talented C# and C++ developers, with various areas of expertise (ASP.NET, multi-tier architectures, web services, compact framework, etc). To help with the flow of résumés, HR are investigating using on-line testing services to sort the wheat from the chaff. Read more...
New thoughts on writing database applications
Over the past few weeks, we, the Architecture team at Configuresoft, have been involved in designing the Next Generation architecture for our product. My area of responsibility is the "middle tier", which ranges from the layer that accesses the data from the database engine, all the way up to the presentation layer, the bit just under the UI. Yeah, lotta work. Read more...
Using TDD when you don't know the technology
This came up in a discussion at work. "We need to write code to access technology X, which uses COM. How do we do it using TDD?" Technology X is very deep and rich and looking at the API is an exercise in frustration: how to we get to where we want to be? The task seems overwhelming. Read more...
Moving to an Agile process
Recently at work we've been in discussions about introducing a new development process. We're growing fast enough that it's now time to rethink how we develop it. The product's options and configuration has increased in complexity so much that we're relying more and more on automated testing to increase quality. Although the newer code has unit tests, unfortunately a lot of the more mature (which actually implies more thoroughly tested) code is still unit-test-free and is only shown to work through rigorous acceptance and system tests by the QA team. Read more...
Sql is so twentieth century
Sometimes I forget how quaint the SQL language can be. There I am merrily coding away in C# and .NET within Visual Studio, Intellisense guiding the way, the compiler saving me from the most egregious mistakes, and then I have to write a bit of SQL as a stored procedure. Suddenly it all comes to a screeching halt, not because I don't know the language, but because there is so little real-time developer support. Read more...
Exceptional rant
I found an interesting story about a process-deficient software company this morning (via Larkware). The story itself was interesting for sure -- it's about the need for developers to fix their compiler warnings and keep them fixed, a proposition with which I heartily concur and follow -- but it was the comments that got my goat. Read more...
Encapsulation is not Information Hiding
I came across this article by Nat Pryce in the PlanetTW blog. It came at the right moment. (Update: it'd help if I gave the post a title.) Read more...
Specify IFormatProvider
This is one of the errors that FxCop spits out and it gets depressing, it happens so often. "Depressing, why?" I hear you ask. Mainly because I've never taken the time to understand what it's on about. Well, tonight I had time to work it out, not that it took a lot of working out. Just one of those things that if you took the time to understand it, it would hold no horrors. (Updated: 15-Mar-2003) Read more...
Unintentional Programming
We're having a minor discussion here in development about a bug I found. The bug is completely benign at the moment (indeed, I only found it through a code review, not through using the product), but code could easily be written to fire it. Read more...
Why interfaces?
Even for those developers who are expert in OOP design and programming principles seem to stumble the first time they come across interfaces. It's hard to see why interfaces are so important compared to, say, pure abstract classes. Read more...
What is good-enough software?
The problem with the term "good enough software" is that it seems to have a slightly grubby connection: software that's just good enough to pass muster. It isn't polished, it isn't clean, perhaps it isn't even maintainable (a one-off program, for example). Read more...
Business logic in the database
In my view of multi-tier architectures, the business layer resides in a separate layer from the data storage layer (a.k.a. the database layer), at least when thinking about logical layers rather than physical tiers. In fact, all that appears in the data storage layer are stored procedures to Create, Retrieve, Update, and Delete records (the CRUD procedures). This simple schema has worked pretty well for me in the past. (Updated 3-Mar-05) Read more...
It's all multi-tier, all the way down
I've been writing a bit recently on multi-tier architectures and the issues that arise when designing, developing, and testing them. Meanwhile, I've also been researching a couple of patterns for an article I'm writing for The Delphi Magazine: Inversion of Control and Dependency Injection. Read more...
Before the rush at Bespokeware
It was four o'clock in Bespokeware, our à-la-carte software and hardware shop, about an hour before the evening rush of tired-and-stuck programmers hit. It was always the same on a Thursday: they'd over promised at the beginning of the week and come Thursday afternoon realized that they only had one day left to complete their projects. And that meant more business for us as they came rushing in looking for help. Read more...
Testing in isolation
One of my current projects is writing unit tests for a body of code. It isn't germane to this discussion why these unit tests weren't written from the get-go; let's just accept that the code 'works' but that it's getting to the stage where it's becoming brittle. The client just wants proof that the code works. Read more...
Stateless Objects
The term "stateless object" came up in a conversation today, and although the term was familiar -- I'd definitely heard it before in relation to web applications -- I was not sure what exactly it meant. Read more...
Some answers on TDD
In which I answer a few general questions about how I use Test Driven Development (TDD) in my own work. Read more...
Design and Code Reviews
Of late, I've been thinking about design and code reviews. They're a natural part of much software development, but should be more prevalent.It's only through someone else reading your work and critiquing it that it gets better and you become a better developer. Read more...
A linker is needed for .NET
How many .NET applications do you run on average? Do you remember the first time you had to install the .NET Framework? If you're a developer, it probably was for Visual Studio for .NET. How about for the average Joe? Read more...