“It seems every other week,” Samuel writes, “there’s a story about outsourcing gone bad. Maybe we’ve been lucky, but for the past decade or so, we simply couldn’t have survived without our friendly team of offsite developers.”
“You see, I work for a manufacturing company, and our main campus is located a good half-hour away from the outskirts of a suburb of a sparsely populated Midwestern city. Every business in town – from the dry cleaners to the restaurants – is owned or subsidized by the company. Just about every resident works, worked, or will work for the company. ”
Samuel continues, “now as charming as it all is, it’s all but impossible to recruit local software developers, and convincing ‘city folk’ to relocate is never easy. In ten years, I was apparently the only one crazy enough to move back after discovering all the wonderful things that suburban- or urban-living offered. Hence, all the outsourcing.”
“Unfortunately,” he added, “outsourcing had gotten a bad rap lately, and the powers that be decided to bring everything in house. The job of hiring a development team was left to me. As ‘interesting’ as the hiring process was, I thought I’d be best to share a tidbit from the now day-to-day life.”
The task was relatively simple, but since it involved some file operations (downloading, processing, and then deleting files from a vendor), I assigned it to my strongest developer. This is what he came up with for the deleting files part.”
DirectoryInfo dir = new DirectoryInfo(pathToDelete); // subDirs DirectoryInfo[] subDirs = dir.GetDirectories(); foreach(DirectoryInfo subDir in subDirs) { // subSubDirs DirectoryInfo[] subSubDirs = subDir.GetDirectories(); foreach(DirectoryInfo subSubDir in subSubDirs) { // subSubSubDirs DirectoryInfo[] subSubSubDirs = subSubDir.GetDirectories(); foreach(DirectoryInfo subSubSubDir in subSubSubDirs) { // subSubSubSubDirs DirectoryInfo[] subSubSubSubDirs = subSubSubDir.GetDirectories(); foreach(DirectoryInfo subSubSubSubDir in subSubSubSubDirs) { // ******************************************** // should be enough; if not, I can add more here // ******************************************** } // files FileInfo[] subSubSubFiles = subSubSubDir.GetFiles(); foreach(FileInfo subSubSubFile in subSubSubFiles) { subSubSubFile.Delete(); } } // files FileInfo[] subSubFiles = subSubDir.GetFiles(); foreach(FileInfo subSubFile in subSubFiles) { subSubFile.Delete(); } } // files FileInfo[] subFiles = subDir.GetFiles(); foreach(FileInfo subFile in subFiles) { subFile.Delete(); } } // files FileInfo[] files = dir.GetFiles(); foreach(FileInfo file in files) { file.Delete(); }
“I wish I could say the rest was any better, or that this wasn’t produced by my best coder. But hey, at least I can say it wasn’t outsourced!”