3 ms·
Extreme programming could be a better alternative. Have the experienced person solve the problem while the novice types out the solution. It's better than sim
by fnid2 17y ago
Extreme programming could be a better alternative. Have the experienced person solve the problem while the novice types out the solution. It's better than simply reading the solution, because you're hearing the rationale for the lines as they are being written. Writing them burns them into your brain.
Perhaps we can group sophomores with freshmen. The sophomores are tasked with solving the problems and the freshmen are tasked with typing out the code. It also primes the seemingly naturally introverted programmers for group based activity that will benefit them in the long run.
- swolchok 17y agoPerhaps we can group sophomores with freshmen. The sophomores are tasked with solving the problems and the freshmen are tasked with typing out the code. It also primes the seemingly naturally introverted programmers for group based activity that will benefit them in the long run. I think this is an awful idea because the average freshman will learn from the output of the average sophomore, which is not good at all.
- techiferous 17y agoThis is a technique that teachers use and it can be effective if done right. Of course you have to make sure the "sophomores" know what they are doing. It works for a variety of reasons, including more one-on-one time and the fact that you learn best what you teach (yes, the sophomores will be learning, too).
- samdk 17y agoAt least in my case, this wouldn't have worked at all. Most of the stuff I wrote as a sophomore was orders of magnitude more complicated than what I was doing as a freshman. I wouldn't have understood what was happening at all.
- fnid2 17y agoThat's okay. It'll be that way forever. I look at code I wrote 6 mos ago and gasp at the inefficiencies. If the freshman finds a better way, all the better -- the sophomore learns more too!
- samdk 17y agoThat's not ok at all. You can't toss someone who doesn't understand what a function is into large-scale application development (which is what I was doing first semester sophomore year) and expect them to get anything out of it. There's merit (a lot of merit) to the idea of pair programming as a way to learn programming. I just don't think the logistics of freshman/sophomores working together are realistic.
- fnid2 17y agoI'd argue that you should do just that. Throw them right into the middle of it. Dive right in! I think they'll get a lot out of it. As an intern after my freshman year, I had no idea what a database was, but I was thrown right into it and got a ton out of it. I have been observing how people learn and how things can be taught effectively. I noticed that the best teachers of a concept are those who have learned the concept most recently. If you've been programming for 20 years, it's hard to empathize with someone who has never coded before. But if you only started coding last year, it's easier to convey the thought processes required to learn the new information -- whatever field of knowledge it is in. A sophomore can explain the concept of the function to the freshman and in the process learn it better him or herself. It's a win-win.
- AndrewDucker 17y agoCourse you can! That's pretty much what we do with new starts where I work. Give them a mentor, get them stuck in, they pick up the basics very quickly and the complex stuff during the few months after that.
- sophacles 17y agoThis idea is called cognitive apprenticeship. A freind of mine will be getting her Ph.D. soon, based on research into this in the realm of physics education. Apparently over there it works very well. One of the big problems with teaching/learning in general is that "experts" (defined as those who know the subject matter well) don't know how to think like n00bs. Seriously -- once you know something fairly well it becomes "simple" because you've gone ahead and rewired your brain. It actually becomes difficult to understand why the n00b just doesn't get it. Cognitive apprenticeship solves this much like you are describing. The basic idea is that the sophmores will be able to better help the freshmen than the teacher will, because the sophmores are better able to remember their own struggles than the teacher is. Basically, the sophmores are in a state where they understand it the "good way" and also still understand the "wrong way". This puts them in a pretty good position to help.
- extension 17y agoI think there needs to be a much larger than one year gap between learning programming and teaching programming. It's just too easy to write bad code and not know it, or to think you understand something when you don't (see above OOP anecdote). All those bad habits and misconceptions will continue to rot as they are handed down from one freshman class to the next. After you've spent years learning, practicing, and mastering a topic and you've tried and failed to find anything more to learn about it, then teach it to others.