Surprising Findings on Software Reuse
Kevin DeSouza and his colleagues in a recent article in the Communications of the ACM published some surprising findings regarding software reuse: reuse happens more by novices rather than by experts, within projects rather than across them, and in transient teams rather than permanent ones. The statement regarding the higher propensity of rookies to reuse compared to older professionals rang particularly true to my ears.
Recently I wanted to experiment with a VoIP bridge on my office's phone. I bought the requisite hardware and started experimenting with setting up the Asterisk PBX software system on FreeBSD, the operating system I typically use for server applications. I encountered a number of difficulties, like obscure dependencies and driver incompatibilities, and started considering the frightful possibility of me having to select and install a Linux platform from scratch to obtain a working system. A colleague remarked that this was a typical student project, and I therefore decided to hand the task over to a Markos Gogoulos, an intern who had joined our group for a few months. Markos, by no means a rookie, had recently graduated from the University of the Aegean department of Information and Communication Systems, a place that seems to consistently breed no-nonsence computing professionals.
I was surprised when Markos finished the project I considered a tarpit in record time and with resounding success. What he did was to follow a piece of advice I wrote in Code Reading and also give in my classes, but did not follow myself: when reuse at one level of granularity (method, class, package, system) fails, try to reuse at the next higher level. Markos, instead of struggling like myself to install the Asterisk software on an existing platform, he deployed Asterisk@Home, a CD-based system installation that provides Asterisk bundled with the CentOS GNU/Linux operating system distribution and all other required software. I spent some time hardening the system and removing functionality from it (the delivered system even included a CRM application), but nothing like the time I would need to build a working system from scratch.
Read and post comments