Archive for the ‘Education’ Category
Where Science Teaching Went Wrong
Recently I found an excuse to dust off some old lab books of introductory science experiments. They were the curriculum for a 9th grade Physical Science I class at my high school; I wrote them as a summer job during college. I didn’t invent the experiments. Rather, the head teacher gave me outlines, and my job was to try them out and make sure they would work, so that prospective students wouldn’t get frustrated and turned off by science.
The excuse was a friend, a scientist, who is meeting a public service requirement of her studies by volunteering to teach science to schoolchildren, and to their teachers. I offered my science course as possible material for her classwork. As we looked over the experiments, we doubted a bit how even 9th graders might learn from them, or be as excited about them as I was when I built and tested them myself. Sure, the projects were easy, and they had worked. But would the experience of building these projects — static electricity demonstrations, electromagnets, motors — be enough to convey the principles behind their operation? Would the kids see the point?
Yesterday I was in the kitchen preparing a simple lunch of tacos and beans. Washing and cutting lettuce, chopping an onion, peeling a cucumber, grating cheese, warming the beans with some tomato sauce. In the quiet afternoon, I couldn’t help noticing the crunch of the knife through the lettuce. Or wondering how best to preserve the other half of the cucumber, now leaking water from its open end. And why do we grate cheese? So much science, here in the kitchen!
Now with the internet, you can search “science in the kitchen” and get pages and pages of websites with all sorts of neat science projects in the kitchen. Let alone YouTube with some pretty exciting and dangerous experiments. (Be warned!) I have no doubt that school science textbooks have taken this to heart and now include experiments that relate to the real world. And yet, science enrollment declines.
Even with the best of intentions, popular science experiments in the kitchen won’t do it. Science is not in school, nor is it in the kitchen. Science is not an activity, but a way (just one way) of looking at the world and making sense of it. What excited me in science class was not the sitting and listening to the lecture. It was making the connections with daily life outside class, and enjoying the beauty of the natural world with new understanding.
Those understandings could come from things as simple as basic cell structure in biology. There’s lots of water in a living cell, so when you peel and cut a cucumber, it gets wet. Or as complex as thermodynamics. One college winter, I learned that there’s really never a flow of “cold”, but only heat transfer. For a good month after that, climbing the steps to class, I would grasp the banister outdoors, and instead of feeling cold, I felt the heat flowing out of my hand into the metal. These experiences are what brought me back to study even more.
Science teachers have to have and share that excitement. If they’re not science experts themselves, no matter. They are learning adults, who can build their own understanding and catch the excitement from science mentors. The key has to be in giving the right answer to the question so many students ask: “But what is this good for?” The wrong answers are the allegedly practical ones — advancing technology, getting a job, or passing the test. The right answer, the one that should guide science teaching, and bring the kids back to class, is “Because the world around you is beautiful, and science gives you eyes to see it.”
No Free Lunch
Recently I read an article by Norman Balabanian (“On the Presumed Neutrality of Technology”, IEEE Technology & Society magazine, reprinted Winter 2006, pp. 15-25; originally published in 1980), where he addresses, among other things, the popular claim that people choose new technologies out of free choice. That if we use a technology, whether it be a car, or a refrigerator, or permanent-press clothing, we freely choose the benefits, and have accepted the costs. In several examples, Balabanian shows that we do not. We live modern life as part of an interlocking, consumption/profit-driven system which requires us to accept most of the new technologies, or starve.
I decided to do a small experiment in the household, to see up close what Balabanian was talking about.
The Experiment
I set out to collect and put aside all the food packaging that our family opened and threw away as part of our meals at home for one week. Not paper plates or napkins, or non-food trash such as newspapers. Just the containers that our food comes in. My kids wondered at first, but after a day or two I convinced them that even after school people still learn, and this was my self-assigned science project this week. As material rapidly piled up, I cut off “data” collection at 4 days.
What did I find?
I collected a half-full garbage bag of paper and cardboard, similar of plastic bags and bottles, and a few metal cans, for a total of 1 kg of waste material. By weight, the packaging was a bit less than 4% of the food net weight. Not much at all, but I was not concentrating on waste vs. recycling.
Rather, I was looking at the question: have we freely chosen to buy our food packaged?
Looking at the list below, I have to say “no”. Very few of these foods are available for purchase either at our corner grocery, or our large supermarket, without the packaging (i.e. take in your own container).
Reminds me of a cynical saying we used to have in high school: “You have a choice … and it has been made for you.”
The Challenge to Innovators
Don’t tell me how to recycle these materials. (We do already—as much as our city provides for.) That’s more forced choice: take the food in packages, and then recycle the packages.
Instead, suggest ways that we or the food distribution system could change so that we could eat our (reasonably) healthy diet without all the packaging in the first place.
Appendix 1: Four Days of Food Packaging
Food Amount (g) Type Wrapper Type Comments
Cheetos™ 55 Prepared Plastic Silverized
Pudding 330 Prepared Plastic
Fruit 1000 Prepared Plastic Styrofoam
Flour 2000 Prepared Paper
Cola 3000 Prepared Plastic
Milk 3000 Raw Plastic
Cereal 1200 Prepared Paper Waxed cardboard
Cereal 0 Prepared Plastic
Cottage Ch. 250 Prepared Plastic
Sugar 1000 Raw Paper
Potato Chips 50 Prepared Plastic Silverized
Eggs 1400 Raw Paper Cardboard
Soda Water 1500 Prepared Plastic
Smoked Salmon 100 Prepared Plastic
Granola 500 Prepared Plastic
Brown Sugar1000 Raw Paper
Yogurt 450 Prepared Plastic
Fruit Juice3000 Prepared Plastic
Margarine 2000 Raw Paper Waxed paper
Tuna Fish 320 Prepared Metal
Pineapple 825 Prepared Metal
Crackers 325 Prepared Plastic Silverized
Egglplant Spread 1000 Prepared Plastic
Mineral water 3000 Raw Plastic
Total Food Weight 27305
The Practicing Developer
I’ve often thought about the advantage that athletes and musicians have over software developers: time to practice—lots of it. Most time is spent in exercises and rehearsals, to produce the best peformance.
In software, everyone spends most of the time producing, with a bit of “time off” for learning new technologies. No wonder perfection seems so far off.
A friend pointed out that Dave Thomas has proposed CodeKata as a way of doing that practice. I read it, and while the ideas look good, I felt there was something missing. The “katas” (formal patterns in karate, and here, in design and coding) seemed somehow schoolwork-like and disconnected from real work. I could only imagine myself “practicing” on assignments where I needed the result, even if for something trivial like importing a bunch of e-mails into SharePoint (more about that another time).
I don’t have an answer today, but the question is much bigger than just finding time to practice in software development. So instead, have a look at these posts and presentations where people are discussing the issue, and see what you think.
Level 5 means never having to say you’re sorry (Jeff Atwood)
Big Macs vs. The Naked Chef (Joel Spolsky)
No Best Practices (James Bach)
Herding Racehorses and Racing Sheep (.ppt) (The Pragmatic Programmer)
Competence is a Habit (.ppt) (David Leach)
Learning for Standards Compliance
Standards compliance is the unsung hero of modern product usability. It’s how every appliance plugs into any outlet in your house. How gas from any gas station works in your car. There are even standards for the size of the spout so that you don’t put diesel in your gasoline-powered car.
So it comes as no surprise that where that most popular consumer appliance, the car, meets the most modern one, the computer, someone has made a big effort to define a standard. Specifically, the (British) Motor Industry Software Reliability Association has set as its mission, “To provide assistance to the automotive industry in the application and creation within vehicle systems of safe and reliable software.”
But what does that mean to the individual software developer?
Your company buys the standard (it’s becoming popular with many embedded software manufacturers, well beyond the car industry). Developers read it. Maybe there are a few lectures on the benefits and the details. But is that enough?
Fast-forward to a typical work day …
Scenario
Developer is in the middle of coding for an urgent delivery or bug-fix, and is confronted with a compiler warning, Lint-type warning, item in a coding standard, or code review comment. (If the company has done its deployment job well, all of these different types of warnings will ultimately be connected to the coding standard.)
What’s really going on for the developer
The developer has to understand the warning, standards item, or comment, and then decide:
- How to change the code to comply, while not breaking anything else
- When to make the change, in order to meet the deadline for the rest of the features/fixes in the delivery
The coding standard is no help for either of these decisions.
Both decisions are context-sensitive, and require guidance (or mentoring — call it what you want) to decide correctly.
Implication
For the producer, standards compliance includes a learning effort. And in software development, that learning effort can be significant and ongoing. The learning program must not only provide the understanding, but also the people to accompany developers as they confront these two decisions over and over.
The first step is participants’ acknowledging this reality. Second is identifying the mentors and allocating their time to read code and provide guidance. Then you can plan a learning program for code quality improvement through standards compliance— a program that works.
Mentoring is Kids’ Stuff
Here’s Ron Porter commenting on that 30-to-1 ratio of productivity we hear about. He talks about the top performers bringing the others up to speed. That’s not a way things work — it’s the only way.
In high school I was always on the “B” team in soccer. (Back then I was a 5 out of 30 at soccer.) My best days were when they mixed us with the “A” team — our defense with their forwards and goalie vs. their defense with our offense and goalie. Playing defense with an “A” team around me made me play better.
There are two reasons to try to make the “A” team; together they offer an opportunity for everyone. Either you are really good so you get on the “A” team, or you want to be good so you need to get on the (bottom of the) “A” team so you’ll improve.
Then Daniel Read asked how Ron mentored welders. (That’s what Ron was doing before he was programming, and perhaps before he started building boats.) Ron gave a 3-step program:
1. Stand up to superiors
2. Be willing to suffer ridicule
3. Keep records of everything
That’s my paraphrase — read how he said it: How to mentor a welder.
Ron, you’ve got it exactly right. I can assure you that it is “directly transferable to … other kinds of jobs.” Certainly not just programming. I sometimes think that programming (now called “software development”) is the only profession that thinks it’s so, so different. Yes software is different, but people in it are not.
About whether mentoring works like this everywhere: of course it does. It’s simply called “how people learn”. I wrote about it here. But don’t read me. Read Ivan Illich’s Deschooling Society.
When I’m not reading or working, I’m learning to roller blade. A pair of skates, a video here, a website there, and some practice. Gets me to about 1 out of 30. Apply Ron’s rule #2 though, and I go out to the park where all those kids skate circles around me. They’re all 10-out-of-30 going on 20-out-of-30 skill-wise. I watch them and even ask them questions. They’re fascinated for a moment that an adult might ask a kid how to do something. But they get over it quickly — acting like natural mentors. Which they are. And how about that — now I can actually skate around the neighborhood.
Mentoring is no mystery. It is kids’ stuff.
Struggling to Learn Together
For better or worse, the educational model of the school, particularly of the university, serves as the basis for training and learning programs in the workplace. It is also the model familiar to many new workers, since they have recently come from that same school environment.
One of the burdens schools face is deciding when to attribute work to a given student, in order to use that work to give student a grade. They deal with this challenge through codes of academic integrity.
How do these codes prepare students for, or hinder workers in, exercising a crucial success behavior in the workplace: cooperative learning?
To find out, I searched Google with the phrase “working together academic integrity“.
There were some positive guidelines here and there such as:
- It’s fine for the group to discuss problem sets, class topics, and so forth. It’s fine to ask others to explain methods and solutions you don’t understand. Together, you can go over the problems several times until you understand. (From University of Windsor.)
But the results also included restrictions such as:
- You may not give or receive help on the programming assignments, except from the TA or the instructor.
- You may not show your program to anyone else until after it has been graded.
- Unless working together on an assignment has been specifically approved, it is not allowed.
Clearly, universities are struggling to say the right things on these issues, and do not speak with a single voice.
But what’s really so hard about the issue?
Time out for some skiing
I’ve only skied once or twice in my life, so each time I was back on the beginners’ slope, taking lessons. Imagine this set of rules posted on a snow-covered wooden sign next to the practice area:
|
Integrity on the Slopes In order to ensure that each student is graded correctly and fairly in their skiing lessons, the following rules must be observed:
|
Who would pay for ski instruction under these conditions? Who would learn to ski?
A Simpler Idea
Back to academics, or rather, training in the hi-tech workplace, why not just say:
- Cooperative learning is essential: work with others
- All sources may be used; if not yours, credit the author
Is there anything more?
Models of Work and Learning
Code review has been shown to be 10 times more cost-effective than dynamic testing in finding defects and suggesting fixes. The reason: economies of timeliness — catch the problems earlier and they’re much easier to analyze and fix.
But still, when confronted with defects, what is your reaction: need to fix or need to learn?
If “need to fix” then choose Fagan Inspection for code reviews.
If “need to learn” then choose training.
If both, then choose mentoring and professional reviews.
On a related note, is learning separate from work?
If yes, then establish a good training program.
If no, then establish a good quality mentoring program.
Finally, in a company, who needs to learn?
If you believe that each individual needs to learn, then restrict information about individuals’ skill sets to individuals and their managers.
If you believe that teams need to learn, then make information about individuals’ skill sets available to everyone.
Whatever you do, think about the questions and your responses.
Make sure you choose the path that follows logically from your responses.
Sharing Reflective Learning
Chrishmorris talks about Reflective Practice and suggests keeping a diary of reflections on one's work. Even better, perhaps, than writing it down in diary would be talking with others about it, while it's still fresh in one's mind.
I work in a multi-lingual environment though everyone understands and speaks English quite well. But worse than speaking different languages is speaking the same words while meaning totally different things.
This challenge is hardly limited to software development.
The problem, though, is that in communication-focused fields such as, say, peacemaking or family counseling, at least people realize that communication might not be happening.
In software development, and in the modern office in general, everyone thinks communication is happening when in fact it isn't.
The beginning of a solution is regularly starting serious conversations with the goal of explaining (reflecting on) our own experience of a particular activity, and with the assumption that we probably start out using the same language to mean very different things.
When you are convinced, through feedback in such conversations, that the other person has understood you, and vice-versa, then some real learning has occurred.