A NOTE ON PROGRAMMER KNOWLEDGE
by Lee Fesperman

 

 

 

Regarding Dominic Fox’s article On Persistence and Data Management in his weblog (http://codepoetics.com/poetix/index.php?cat=2), dated 12/28/2004, he does pretty well in examining, and distinguishing between those two concepts. However, he goes off the track in the following paragraph:

 

Fabian Pascal’s oft-repeated accusation that application programmers are largely ignorant of what he calls "database fundamentals" is probably true, but it’s true for other reasons besides the general inadequacy of the US education system (see Pascal’s Database Debunkings, passim). It’s true because database fundamentals - the mathematical foundations of the relational model - are not what programmers need to know in order to write programs, and would not actually be much help to them if they did know them. How much of Knuth’s TAOCP (a densely mathematical text, way over the head of your average ignoramus) is about relations as such?

 

Programmers need to know a lot of things to develop applications. They need to be familiar with much more than just the ins and outs of a specific programming language. They have to be conversant with development and production operating systems (certainly the tools and often to the system call level), installation/distribution systems, source control and build systems, IDEs/compilers/linkers and I/O as well as other subsystems. They often must understand scripting languages and configuration formats (e.g., XML). Modern programming languages require knowledge of a variety of APIs. And programmers have to understand interface concepts and conventions – command-line, GUI and/or web, etc. protocols (plus html, javascript, and so on. Why is database knowledge any different?

 

Programmers also have to understand related business processes, of course. They usually need to know project organization, design, documentation as well as support, training, mentoring. Perhaps database fundamentals require more in-depth study, but they are a major part of modern application systems. Database is a common thread through all of the components in the application. It incorporates much of the business concepts and logic. The individual pieces of the application can be rather lightweight, focused on a limited aspect of the overall processing. Thus, database knowledge would be an essential aid in integrating with the entire application.

 

 

Ed. Note: I concur, of course, with Lee’s comments. I will add, however, that part of the problem has to do with programming languages forcing procedurality on data handling. Had the data component of programming languages been more akin to the declarative/set oriented nature of database access and operations (where appropriate), there would not be such a gap in programmers data management foundation knowledge.

 

What is more, there has been a serious degradation of education of fundamentals, to the point of, for all practical purposes, nonexistence, including programming fundamentals. And increasingly programmers are self-taught, and know nothing beyond products/tools.

 

 

Posted 8/12/05