Have Libraries Killed Programming?
Mike Taylor has written a blog lamenting the rise of the copy/paste programmer, in a blog post entitled Whatever Happened To Programming?
Nowadays, a big part of Taylor’s job involves pasting libraries together and impedence-matching. Re-hashing someone else’s software into a new program is, in Taylor’s opinion, not what ‘real’ programming is about. He wants to write the libraries he uses, because “the thrill of starting with nothing and making something” is what drew him to software programming in the first place. In his perfect programming world, you always start with a clean slate, and have all the fun of building something completely new. Then, the developer comes to the long process of documenting and testing the program ready for public consumption – but this is coupled with a sense of pride, because what you’re documenting and testing is truly yours.
For Taylor, ready-made libraries suck the fun out of the creation process: ‘phase one.’
“Instead of designing beautiful data-structures and elegant algorithms, we’re looking up the EnterpriseFactoryBeanMaker class in the 3,456-page Bumper Tome Of Horrible Stupid Classes (Special Grimoire Edition), because we can’t remember which of the arguments to the createEnterpriseBeanBuilderFactory()method tells it to make the public static pure virtual destructor be a volatile final abstract interface factory decorator.” Mike Taylor.
This is not Taylor’s idea of fun. Worse, phase two becomes rapidly less fun when you’re documenting and testing something you haven’t completely designed and written yourself.
But, is it all that bad? Don’t libraries spare the developer from writing the same basic, mundane code over and over, giving them more time to focus on more complex, outside-of-the-box coding? Maybe it depends on what attracted you to coding in the first place; and whether you prefer creating something from scratch, or whether your focus is simply on providing a solution to a problem.
Blog visitor Parnell Alexander Springmeyer goes one step further, and suggests a distinction should be made between ‘programmers’ (such as Taylor imagines a programming role to be) and a ‘coder.’ In Springmeyer’s opinion, programming “ requires an adroit intellect and creative spirit” whereas the only requirement of a coder, is a decent library.
Although Springmeyer’s division of the programming community into ‘true’ programmers and coders, is a controversial one, a quick run through the ‘comments’ sections of Taylor’s blog, makes it clear that there is a divide amongst the community. Some developers feel that having a pre-existing base to build on, allows them to concentrate on the more creative side of coding. But, there are those who feel stifled by pasting together someone else’s libraries. Are libraries beneficial or detrimental to a programmer’s creativity? Ultimately, it all depends on personal opinion – although you have to wonder how complex the programs of today would be, if the developers always had to start from zero.