Historically, the board has not had a strong technically oriented membership. That's been changing in the last few years. I believe about 2/3 of the current board actually has some background in tech, and half of those are actively involved in a tech career.
As probably all of you know, our site uses Django, a Python web framework, for the backend. Django, and most other web frameworks, make use of a model-view-controller architecture. Many of you may not be familiar with that, and in light of the recent questions about the proposed UI overhaul I thought it might be worth laying that out a bit more.
I'm not going to delve into the differences between procedural and object-oriented programming languages here. But all modern programming languages are built around the idea of modularity--you don't have a single massive program doing everything, you divide the program into different modules, each of which handles part of the overall program, and you divide those modules into sub-modules and functions and procedures, so that the program as a whole may consist of dozens or hundreds of relatively small chunks of code, each of which is individually easier to debug.
Model-View-Control is a software architecture common with data-centric programs, and very common among web-frameworks. In this architecture, the program is divided into three main modules, each of which may consist of numerous sub-modules, sub-sub-modules, etc.
The Model module handles *all* the interactions with the data source (most often a database, as in our case). Users do not interact directly with the data source, nor with the Model module itself. The Model module knows about the database, but does not know about the View module, the Controller module, or the user.
The View module handles all of the display code. It knows how to ask for data from the Model module (but not the data source) and displays information to the user. The View module may display widgets that allow the user to interact with the Controller module, but otherwise does not know about the Controller module. The View module only pulls data from the Model module, it does not send data to it.
The Control module is the one that has the code that actually interacts with the user. It may call the View module to refresh a display or to display a new page when navigating from one page to another. But it does not itself know what/how the View module goes about doing those things. The Controller module also updates the data source (adds/changes/deletes) THROUGH the Model module--again, all interactions with the data source go through the Model module, and the Controller module must pass changes through it. And then it calls the View module to redisplay the page or to display a new page.
Most of our tech team members have skills in programming the Model and Controller module functions, but are weak on the View functions. They all understand the basic functionality of View code, and can and have written very utilitarian View code, but optimally the View should incorporate input from people who have actually studied and understsand the principles of web design. A good design is often built along principles that involve design principles that incorporate studies of human behavior.
Further reading:
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controllerhttp://en.wikipedia.org/wiki/User_interface_design
--
Lionel English
shoebutton on Google Talk