O G R A M M I N G E L I Z A B R O C K I N S T R U C T O R , N A S H V I L L E S O F T WA R E S C H O O L Hi! I’m Eliza Brock. I’m an instructor at Nashville Software School, where I teach the advanced software development course. I’m here today to talk to you about my experiences in teaching programming. ! To start off, let’s talk about what programming is, exactly.
O U T T H I N K I N G P R O G R A M I N G I S : In my view, programming is, primarily, an analytical process wherein we take human thought and shape it into something that can be expressed to and via a computer in a very literal way.
P R O B L E M P R O G R A M M I N G I S I think that the most fundamental skill required by and developed in programming is the ability to properly frame problems.
• Train A leaves the station at 2:15, going 20 miles per hour • Train B Leaves the station at 3:00, going 45 miles per hour • When do they collide? My favorite way to illustrate this is with the Train Problem. ! 2 trains leave a station. The first train travels 20 miles per hour. The second leaves 45 minutes late traveling 45 miles per hour. When do they collide?
X : 1 5 2 0 M P H T H E H A R D WAY: ! T R A I N A L E A V E S T H E S TA T I O N A T 2 : 1 5 , G O I N G 2 0 M I L E S P E R H O U R T R A I N B L E A V E S T H E S TA T I O N A T 3 : 0 0 , G O I N G 4 5 M I L E S P E R H O U R ? I’m not going to lie. The first time I was shown this problem, I thought “Oh, snap. We’re going to have to use calculus”. On the surface, this is a hard problem to solve, with multiple moving objects going at different speeds. ! However, my teacher’s purpose in showing us this problem wasn’t to teach us math. It was to teach us about how to frame (and reframe) problems.
F R A M E T H E P R O B L E M T R A I N A L E A V E S T H E S TA T I O N A T 2 : 1 5 , G O I N G 2 0 M I L E S P E R H O U R T R A I N B L E A V E S T H E S TA T I O N A T 3 : 0 0 , G O I N G 4 5 M I L E S P E R H O U R B X : - 1 5 2 5 M P H A X : 0 In this case, you can take all the pain out of the calculations by treating Train A as a fixed point, and using relative velocity. It doesn’t matter where the trains are in space. It only matters that Train B is 15 miles away from Train A and headed towards it at a relative velocity of 25 miles per hour. ! This is the single most valuable thing I learned in physics and I think about it constantly in my work. The moment you reframe the problem, it solves itself.
T H E R I G H T S T U D E N T P R O G R E S S O V E R T I M E As long as our skills are going up and to the right, we’re doing it right. It doesn’t matter if you start out at 10% or 90%, as long as you’re learning. While we’re at it, though, comparing yourself to your peers is a losing game
The reality is that every student has a spectrum of skills that they’re working on. Each person has strengths and weakness that can’t be summed up with a ranking.
I T, N O T R E A D I T Trying to learn programming without actually programming is about as effective as trying learning to ride a bike without a bicycle.
O G E T U P A N D T O T H E R I G H T 0 25 50 75 100 Progress Over Time 0 3 6 9 12 It doesn’t matter how fast you’re going and it doesn’t matter if you have set backs. Your job is to get up and to the right. If you’re concerned that someone else is getting there faster, remember that…
U P I D Q U E S T I O N S . A S K T H E M A N Y WAY S E R I O U S LY. W E ’ R E N O T F O O L I N G T H E M W H E N W E S AY, “ T H E R E A R E N O S T U P I D Q U E S T I O N S ” . There are stupid questions. Ask them anyway. ! *Seriously. We’re not fooling them when we say “There are no Stupid questions”. Of course there are. But, we all have to go through phases of learning when we don’t yet have a frame of reference for asking good questions. It’s fact of life.