Neophilia and Software
Tuesday, September 29th, 2009Neophila: The trait of being excited and pleased by novelty. Common among most hackers, SF fans, and members of several other connected leading-edge subcultures, including the pro-technology ‘Whole Earth’ wing of the ecology movement, space activists, many members of Mensa, and the Discordian/neo-pagangeek). All these groups overlap heavily and (where evidence is available) seem to share characteristic hacker tropisms for science fiction, music. The opposite tendency is neophobia.
- New Harper’s Dictionary (via Wikipedia)
Yup, I’m a neophile. But I’m also seasoned enough to know that the new - while exciting and intellectually interesting - isn’t always better. The question is to use the right tool for the job at hand. That may be the newest thing, but it may be the old and familiar too. This requires some assessment of quality of the tool for the task. Unfortunately this is a step often skipped in the software world.
For software engineering to become a real profession, we need to recognize the following:
[Engineering is] The profession in which a knowledge of the mathematical and natural sciences gained by study, experience, and practice is applied with judgment to develop ways to use economically the materials and forces of nature for the benefit of mankind.
- Wikidictionary on Engineering
Software engineering can’t just be using the coolest and newest things. Instead it is building software that satisfies goals in a measurable way, uses scientific and mathematic principles, and economically and efficiently uses those principles to benefit us as software users. Using the right tools at the right times is a key step in moving from software developers to software engineers.
As software geeks, we can experiment and test the new tools. That’s fine. But we need to draw a clear line between experimentation and research vs deliverable production software. Not all software is - or should be - production grade software. But for production software, an engineering approach is key. The software techniques and tools used need to be subservient to the goals of the project. It’s hard to remember that in the heat of writing code.

