?

Log in

No account? Create an account
swapcontext(&bloomington, &ithaca); - Lindsey Kuper [entries|archive|friends|userinfo]
Lindsey Kuper

[ website | composition.al ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

swapcontext(&bloomington, &ithaca); [Jun. 13th, 2010|12:32 am]
Lindsey Kuper
[Tags|, ]

Three weeks ago, I did a potentially insane thing. I moved to an apartment I'd rented sight unseen in a town where I'd never been and where the closest person I knew was a four-hour drive away. Then I immediately started a demanding new job, and at the same time began taking an accelerated, semester's-worth-of-material-packed-into-six-weeks course that I didn't feel particularly prepared to take. Alex oniugnip feared for my sanity, and I did, too. I'm tough, but I'm not indestructible, and this particular combination of actions had every right to lead to disaster.

It hasn't. In fact, it's been great. It's been kicking my ass, but in a good way; I can't believe how much I'm learning. Yesterday I turned in the second assignment for the course, which was to implement a user-level cooperative thread library using the POSIX context functions. I'm not going to say my implementation is particularly good, but it seems to work! And I made it myself!

Before this, the last time I took an OS course or wrote C was eight years ago as a terrified and clueless undergrad. Back then, I didn't ask questions much, because I was afraid of being found out as an impostor who didn't know anything. For some reason, it didn't occur to me that it was fine to not know anything because, after all, I was there to learn, not to prove my knowledge. So I didn't ask questions and, as one might expect, didn't really learn a goddamn thing. I barely knew what my own code did.

Alex and I often talk about how if only we could go back and do our undergrad degrees again, we would totally destroy them. That was a large part of my motivation in wanting to take an undergrad OS course this summer and paying no small amount for it out of pocket. I wanted to see if that was really true. Well, I wouldn't say I'm wreaking total destruction! on CS 4410, but I'm more than keeping up. If I don't understand something, I actively address my lack of understanding by asking a buttload of questions, and I never, ever, ever, ever, ever write a line of code I don't understand. I can't believe I ever thought that was acceptable.

LinkReply

Comments:
[User Picture]From: lindseykuper
2010-06-14 01:52 am (UTC)
I think I agree with the bad-students-make-good-researchers idea, but in a different way than you're describing. A student who runs out of time to do the second half of the test because they got distracted coming up with a brilliant, nuanced answer to a question on the first half -- that could be a good researcher. But I think that being unwilling to ask questions is a good way to fail at research. To do research, you have to be willing to be wrong, to make a fool of yourself. And I really think there are very few situations where there's no human help to be had. It's often helpful just to talk to someone about the problem, even if all they can do is scratch their head and say "huh" with you.

A few times, someone has come into my office and asked me about some topic I don't really know anything about, and I just try to ask questions as best I can in response to their questions, until eventually they think of something and they say "Ah! Thanks!" and scurry off to do more work.
(Reply) (Parent) (Thread)
[User Picture]From: lyceum_arabica
2010-06-14 04:58 am (UTC)
fair enough :-) I agree it's *never* good to be scared of talking about your work, or worried what people will think (especially since likely: a) they're lost too, or b) they will be as soon as they hear your question and realize they'd never thought of that, or c) they know the answer, but only because someone had already told *them*). People who can be helpful are often the people who've been helped themselves in the past, and who are happy to help others.... er, so it's good to let them help. And when there is help available, making use of it can save an awful lot of pointless frustration.

My point was closer to "screwing things up when you're young has the incidental side-effect of building character". :-)

I had a bad tendency to skip class when I got bored, get behind, and then find it necessary to teach myself from the book the entirety of the class on the weekend before the exam (at which point, it's rather bad form to bug the TA... if there even is one). But now, when I find a term in a paper that I don't know, and I discover that it's just the tip of a whole field I'm not familiar with but need to be in order to proceed... it's a comfortable situation for me, one I've gotten through before. I just hunt down a tutorial, or the applicable wikipedia articles and start working. I can get through morasses of poorly written, unfamiliar material surprisingly quickly.

And I imagine, on a similar basis, you're less alarmed than me when you have to wrap your head around complex programming environments. You've had experience programming around things that didn't make immediate sense before, so just the fact of being in that situation isn't debilitatingly scary. You can get in and hack at things until you're able to understand everything... while if I have to work with a piece of a language/system that isn't clearly defined, I tend to flee in terror and abject frustration. Note that you have a summer internship, and I haven't written a program in nearly two years.

So... in undergrad, I really should have slacked off less, and I gather you would've had an easier time if you'd felt more comfortable asking questions... but screwing things up is its own experience, and it can be useful too.

I've had conversations with people at the schools you go to when you *don't* screw anything up (Purdue & UIUC) where people seem weirdly impressed by this type of self-reliance/independence/durability (which isn't uncommon around IU). I think the ability to feel comfortable just getting your hands dirty and untangling things when you've got no idea what you're doing must be an 'imperfect but persistent' student trait. The kids that were sensible, diligent students, followed all the rules and aced all their classes in undergrad are actually caught off guard when there's not a well-built structure to support them. But those of us who did admittedly stupid things, but still kept going, tend to keep our feet better when we have to work without a structure.

I've actually had a conversation where a Purdue faculty member explained this phenomenon to me in detail, so I'm reasonably sure I'm not *just* rationalizing my spotty past. :-)
(Reply) (Parent) (Thread)
[User Picture]From: lindseykuper
2010-06-15 04:37 am (UTC)
My point was closer to "screwing things up when you're young has the incidental side-effect of building character". :-)

Ah! Yeah, no doubt. But I'd suggest that it's not necessarily that we're screw-ups -- sometimes it might just be that we're the first in our families to be computer geeks, or the first in our families to be academics, or both of those things, and so we're used to stumbling through and figuring it all out for ourselves as we go along, unlike folks who have a parent or two who do this and brought them up in a culture of it.

I have to chuckle just a little, though, at the suggestion that I "can get in and hack at things until [I'm] able to understand everything". Man, I wish! That almost never happens. Understanding other people's code is hard. At my job, today (the beginning of my fourth week there) was the first day that I actually got through review and committed some code that was part of a larger system. I had been committing some things before, but until today, everything I'd committed had basically been code that wouldn't affect anyone else. I absolutely don't understand everything about the larger system that my stuff is a part of, and one of the most difficult things is figuring out which parts it's important to understand and which parts I can just not worry about.

I wonder if at IU, we sometimes have Ph.D. students who are more self-reliant and flexible than students at other schools because they're back at grad school after having spent some time working. They may not have any research experience when they come in (raises hand), and perhaps they don't know how the research process works (raises hand again), but maybe at some point they read To Mock a Mockingbird or The Little Schemer or Gödel, Escher, Bach and thought, "Dang, this stuff is way more fun than my job. I'm going to go hang out with the people who do the fun stuff." That path to grad school is very different from that of the people who are at prestigious schools because they've been planning things that way their entire lives.
(Reply) (Parent) (Thread)