Interview with Prof. Poi
Home Schedule Prime Directives Engineering Log Coding Standards Software Submission Checklist Dr. Hacker

 

The following is a transcript of an interview between Dr. Hacker and Professor Poi on February 7, 2002. In the following interview, Dr. Hacker's comments are prefaced with an H: and Professor Poi's comments are prefaced by a P:

H: Thanks very much for being here today with us, Professor Poi.
P: It's my pleasure to be here, Dr. Hacker.
H: Professor Poi, the students in ICS 413 and 613 have been dutifully hacking away on their Account Info projects, but as they start to really think about their designs, there is a growing sense among some of them that they don't really understand what the ultimate goal of the Account system is. Without that understanding, how can they most effectively design the system?
P: That's a very astute observation.  I would give those students an A. 
H: OK, I'll do that.  From the perspective of Extreme Programming, the students seem to be suffering from the lack of an "onsite customer".  Unfortunately, we haven't covered XP yet, so they don't know this.  They just have a vague uneasiness that they don't really know what's going on.
P: Yes.  I've always said that are two flavors of cluelessness in software development: inevitable and avoidable.  Some kinds of cluelessness are inevitable: you simply can't know for sure, for example, how your users will react to your system without actually building it and then doing some high quality observations. However, other kinds of cluelessness are avoidable, such as a failure to actually attempt to interact with your customers as an integral part of the development process.  Developers do that out of ignorance, fear, or arrogance, but cluelessness is the result all the same.
H: Interesting.  But back to the issue at hand.  Can you help us get a little more clueful about where we're going with this system?
P: Well, I can give you a sense for my goals and hopes for the system. I'm not sure how we'll get there at this point.  To begin with, at one level, I'm interested in exploring the domain of academic department web services.  If you look at an academic department, there are lots of opportunities for web services to improve the quality of the academic experience for students, faculty, and administrators. I've been building a list of some useful services over the past several months... Wait a second, let me try to find it.
(rustling of papers is heard in the background.)
H: Professor Poi, for someone who portrays themselves as the epitome of high tech sophistication, isn't it kind of archaic for you to be writing things down on paper?
P: Well, I do have a Palm Pilot, and when I first got it, I was of course quite infatuated and recorded everything in it.  (more paper rustling noises)  But, it turns out that for me at least, there are some things where paper and pencil is simply the most usable medium for the job at hand. 

OK, I've found it. The list is kind of long, so I'm just going to read it off and not talk extensively about what each service would do:

  1. A news service that supports email broadcast of interesting announcements (and reminder emails about events) to interested people in the department;
  2. A job listing service where local employers can post information about their companies and current (or ongoing) job opportunities;
  3. A profile service where users (including undergrads, grads, faculty, staff, alumni, and employer affiliates) can indicate their interests, contact information, and so forth.
  4. A textbook exchange service where users can post texts for sale (or texts wanted) and hook up with each other;
  5. A tutor service that provides a schedule for when departmental tutors are available, what their areas of expertise are;
  6. An FAQ service that posts questions and answers regarding the department or particular courses.
  7. A registration service that allows people to register for an account on the system, allowing them to participate in the various services.  Most of the site's services are not publically available.
  8. A resume service that allows people to post their resumes and allows employers to search for resumes of interest.  This includes a notification mechanism, so that employers will be automatically notified via email when a resume of interest comes in, and students will be automatically notified when a job of interest gets posted.
  9. A "what's new" service that serves as a kind of departmental electronic newsletter.  Anyone can submit items, and they are automatically collated together into a web page. A moderator approves content before it goes out.
  10. An update notification service that sends an email to each registered user once a semester, informing them of their current settings on the site, and requesting that they update their information if necessary.
  11. A curriculum planning service, which allows students to plan out a future schedule. The curriculum planner can help students figure out the sequence of classes they need to graduate (and how long it will take them). It can help the department to plan courses by understanding what students are hoping to take in upcoming semesters.
  12. A professional skills inventory service. There are many skills that the faculty hope students will acquire while they are in this department.  The inventory service can help students to assess how they're doing and suggest ways to improve their skills. It can help faculty to better understand how they are succeeding and failing in preparing the students for their life beyond the university.
  13. A student course evaluation service. This would allow students to provide anonymous feedback on courses. (There would have to be some constraints on what constitutes an acceptable posting, and since only registered users could post, the department could take action if someone is promoting violence, for example).
  14. An opinion poll service.  Frequently, an issue will come up in which the input of the department would be useful. For example, should we provide Linux in the grad labs? The service would send an email containing a link to a web page where you could answer the opinion poll in less than a minute and the responses would be collated together and posted in another web page accessible to everyone. Since only registered users could vote, duplicates are avoided.
  15. A technical report library service. 
  16. A calendar-based interface to department events and seminar room reservations.
  17. An alumni service, which enables graduates of the department to remain connected with what's going on.
  18. An image map interface to the department, that shows the floorplan of the department with clickable images over each office to find out who lives there and other information.  The image could be updated in real time to reflect, for example, which faculty have office hours scheduled for that moment in time.
H: Holy smokes, Professor Poi.  That's a huge list of services.  That will take years to implement completely.
P: Yes, it will, and I'm sure that as the project starts to take off, we'll come up with at least as many additional useful and interesting new services.
H: OK, so reading between the lines on your paper (which has obviously seen better days, by the way, I can see the coffee stains),  the Account Info project is the first step towards this.  But when I look at these services, I see the potential for Account Info to be almost everywhere.  A user is involved for initial registration, for the profile, for the future curriculum, as an author of technical reports, as the creator of a resume, and so forth.  I can feel a massive relational database design project with Account Info as its centerpiece forming in the back of my head.
P: I know.   The feeling is indistinguishable from a migraine, isn't it?
H: Spot on.  You're caught between two problematic situations. Either you try, on the one hand, to design the database for all of these services up front, and then engineer in a bunch of complexity that you won't benefit from for months or years or maybe never at all if the service doesn't get implemented.  On the other hand, you could design a minimal database to begin with and then constantly modify its structure each time something new is added, but that's going to lead to database schema incompatibilities and version upgrade problems and so forth.  Yikes.
P: In addition to that, you've got a maintenance nightmare.  Assume you're a poor student who wants to make a change to the curriculum planner.  Now you have to understand the database schema for the entire system in order to make sure your change to the schema won't have a ripple effect on other systems.
H: So how do we get around that?
P: My view is that we should attack this project as a set of loosely coupled "plug in" web services that communicate as little as possible between each other.  Each web service maintains its own database (which could be as complex as a relational database, or as simple as a properties file).  Each service also exposes a "service API", which is a set of methods that other web services can invoke in order to access information from that web service.   The benefit of this approach is that people should be able to more easily figure out how a single service works without having to wade into a huge monolithic underlying relational database.
H: The problem, of course, is that you're going to have constant problems with redundant information.  You're completely throwing out the goal of normalization.
P: Precisely.  I claim that in this situation, normalization is a bug, not a feature.
H: Whoa.  Don't say that too loud. I can hear the ICS 321 professors freaking out already.
P: Look, I like normalization.  Some of my best friends are normalized.  Normalization is great when you  have relatively static and relatively well understood requirements, and where efficiency and data integrity are mission critical.  But software development is always about trade-offs, and you don't gain those nice benefits without losing something else.  What you lose with a highly normalized information system is flexibility and the ability to understand one part of the system in isolation from the rest. Normalization is a kind of optimization, and optimization virtually always results in tighter coupling among system components.
H: So you're designing this system to be hacker friendly, at the expense of an occasional burp in data integrity, such as a user temporarily being characterized as an alumni in one part of the site but as a student in another part of the site.
P: Exactly.  By the way, you and I both know that when we refer to Hacker, we are referring to its traditional, honorable use of the term, as opposed to Cracker, those dishonorable pest-like script kiddies who break into systems and cause mischief.
H: Believe me, with a name like Dr. Hacker, my intentions are misunderstood continuously. So getting back to Account Info, the idea now is that this will be a very minimal representation of users, just enough to find out who exists on the system and so forth. And a web service could, for example, request a Collection of all currently defined users in order to accomplish its task.
P: Quite so.  The idea of hacker friendly brings up one of my other goals for this system. I would like to see this system developed, deployed, and evaluated initially in the ICS department, but then released as an open source project into the wild.
H: Cool. So it might be hosted on source forge or something?
P: Yes. If you would permit me to fantasize a little, I'd love to see the ICS students in this department be responsible for developing not only the best academic department web site in existence, but also responsible for designing it in such a way that it can be adapted and installed in other departments as well.
H: Kind of like the Tomcat of department web sites?
P: Yes, a kind of reference implementation, with source code fully available, that is used by many departments all over the world, that is enhanced and extended by dozens or hundreds of hackers to keep up with new technologies and ideas, but that is sponsored and managed by a continuing stream of ICS undergraduates and graduate students in software engineering. It would be something that would give every ICS software engineering student a world-wide reputation in academia.
H: That's a nice fantasy.  So what are you calling this system?
P: I have no idea.  I'm hoping the students will come up with something.
H: Well, Professor Poi, that's all the time we have for today.  Thanks for being with us.  I hope you'll stop by again soon.
P: It would be a pleasure.