White wine or red?
Thursday, January 22nd, 2009As I talked to a friend tonight about deep sea creatures, I realized I’d be a very bad marine biologist.
The first thing I’d want to know about a new sea creature is how it’d taste as sashimi.
As I talked to a friend tonight about deep sea creatures, I realized I’d be a very bad marine biologist.
The first thing I’d want to know about a new sea creature is how it’d taste as sashimi.
I usually despise fire alarms.
…especially when the building I’m evacuating isn’t actually burning; and it feels like -14ºC outside.
Today was different. I bumped into Karen, a former co-conspirator of mine. I was going to say former instructor but I realized I never took any of her courses.
She told me that students of her Operating Systems course are generally having a hard time doing the assignments. She thinks that some remedial C workshops would help alleviate things.
The core problem is that students taking that course typically don’t have much exposure to low-level systems programming at that point in their academic careers. The course requires them to implement various OS concepts within OS/161, a simplified operating system for teaching.
Students being introduced to a large code base they’re not familiar with… hmm… doesn’t that ring a bell?
I smell potential research subjects.
How can you measure familiarization? How can you tell how familiar someone is with a software system? It’s not enough to say you know it when you see it.
What does it mean to be an expert in something? At my research group meeting yesterday, we collectively decided we can operationalize1 expertise in at least three ways:
Of course, those definitions presuppose that there are such things as experts. Greg suggested that I measure expertise relatively: Wei is more of an expert at Eclipse plugin development than Tom but less than Fiona.
1Learn a new word every day
Yay, school!
You don’t have to know the subject matter of a book to figure out what’s in it. The table of contents gives you an outline of how the material is organized. The index helps you find specific terms and concepts. If you know the language its written in, even better!
Most people can pick up books (or other mainstream print media) and learn from them. I don’t know what specific mental processes are involved—but it happens.
Like delving into the pages of their favourite novel, some people can unzip the latest sources of their favourite software product and figure out how it works. Open source development is viable because its contributors tend to be self-sufficient.
There is very little literature (or maybe even none?) about how people familiarize themselves with a software system. Many software development companies give novice employees around four months for this learning process. Some people can ramp up faster. Some need a little or a lot more time. I want to know what accounts for those differences. We need to get the fast people to divulge their secrets.
People? I’m classifying us three ways: Those intending to learn software development; those who already have some experience with some parts of the development process; and finally, those who don’t care. I don’t care about them either–at least as far as my research is concerned.
Familiarize? That’s the set of activities that results in acquiring knowledge and/or experience about a particular domain.
What’s a software system? My definition: the set of human-readable documents that detail the requirements, analysis, design, and implementation of a software product.
Human-readable document? There are two types: diagrams/pictures; and those that contain a series of glyphs containing semantics that someone, somewhere, at some point in time actually understood. This definition may even be broad enough to include source code written in Perl or XSLT.
Software product? Think YouTube. Firefox. Vista. Stuff that makes the lights turn red just as you approach the intersection.
Software development? According to Wikipedia, it’s:
…the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.
Oy–I’ll define those terms later. I’m not sure I’m even happy with that definition.
And so begins my journey.
Update: Jorge pointed out my original definition of human-readable documents excludes pictures. I’ve changed the definition.