11

I teach programming, and it is painful to watch my students slowly arrow around the screen, backspace over something, then retype it. It would take less than a second for him to have grabbed his mouse, double-clicked the word and started typing the new word, all without looking down.

I taught them about editing and keyboard shortcuts at the beginning of the curriculum, yet they do not all take everything on board (who does?). So now months later I am left with the question of whether to urge improvement on them like a mother bird, or just let it go. As programmers, their time will be valuable, and their enjoyment of work improved by the ease of getting work done. But is it up to me to reinforce this after having made it thoroughly clear early on? This is not just about editing, but all sorts of practices like naming conventions, coding standards and so on, which I did in fact present already and have said that the industry expects these things. Editing is simply one obvious example.

Addition: It is not for me to dictate how students should work, but I would be remiss if I did not point out better ways to accomplish things. The question is: to know if I have made the point or when to stop trying to make it. "A word to the wise is enough", but how many of us are wise, especially while learning many new things at once? An example of coding standards is a student who doesn't like Properties. Well... They are useful or they would not have been invented. I couldn't convince this person.

  • 4
    "naming conventions, coding standards and so on" are different because they affect the quality of the output. – ff524 May 23 '16 at 15:06
  • 3
    I tend to think a lot more than I type, especially when programming. I use many different editors, with different shortcuts. Learning them all would take time, and I can't make them habits because, for example, gvim is different from a Firefox text entry box. I agree with @ff524. Spend your classroom time on working with a set of naming and coding standards, and let them edit however they like. In the 32 years I spent in industry, I never had a manager complain about my editing speed. – Patricia Shanahan May 23 '16 at 15:16
  • 4
    @nocomprende By "Windows" do you specifically mean "Microsoft Windows" or windows-based GUI's in general? The first editing system I learned was typing punch cards. I even learned to program an O29 Keypunch program drum. That skill is now totally useless, because it is decades since I've seen one outside a museum. By the time your students have been working for decade or so whatever editing you are teaching now will be as obsolete as punch cards. Program design skills are much, much more durable. – Patricia Shanahan May 23 '16 at 15:49
  • 1
    I one of my current projects is Apache OpenOffice. MS-Windows builds for it use Cygwin. I typically use Gvim as my Cygwin editor, along with sed, nawk, and perl for bulk operations. I use a similar mix on my Linux machines. I also use Eclipse, Netbeans, Firefox text boxes (what I'm typing in right now), Thunderbird, OpenOffice, LibreOffice, the Python script editor in FreeCAD, and the Arduino API. – Patricia Shanahan May 23 '16 at 16:02
  • 2
    "It would take less than a second to have grabbed the mouse..." - no matter what you measure, a keyboard shortcut in Emacs or vim can do it faster than if you grab the mouse. I'm not entirely sure what that means... – S. Kolassa - Reinstate Monica May 23 '16 at 20:37
9

I'm not a coder but I am familiar with learning something for the first time. As a teacher, you have reached a level of mastery that allows you to do things automatically. As such, you are able to monitor your learning and catch mistakes that you make.

Students on the other hand, are completely overwhelmed with learning the basics of your field. We all remember learning to tie our shoes and or driving a car. There were many things that were not done in the most efficient manner when we learned these skills. Now however, these skills come second nature and we all have are own shortcuts to do them that we expect are children to acquire the first time we teach them, which of course they don't to our frustration.

In short, your students are experiencing cognitive overload just learning the basics and cannot process doing more than what they are doing now. Once the learn it the hard way they will start looking for ways to be efficient and fast. At this point, you can stretch them by showing them the faster way. To expect industry standard from a rookie is perhaps asking for too much from cognitive perspective.

  • Mmkay, I agree about the cognitive overload. However, if my student has been using computers for a few decades and not learned something helpful about using a GUI generally, is that something I should reiterate? Surely there is not cognitive overload in the ability to just use a computer overall? If he hasn't picked up a useful technique on his own after so many years, maybe it is time to point it out? Or is once enough? – user28174 May 23 '16 at 23:53
  • I'm not familiar with your students so I would not want to speculate. If you are emphasizing basic stuff for them that they learned the wrong way there probably is little excuse. If this is new for them perhaps patience is another option – Darrin Thomas May 23 '16 at 23:55
4

Ah a fellow traveller! Welcome friend.

I agree it is so painful to watch, and there is such a professional dilemma on wether to grab the keyboard or not. I have developed my own attitude over the years, in that my time is sometimes precious and is spread thinly over many students. To remain polite I sometimes say "Do you mind if I quickly fix that for you?" and then just do the magic edits. Voila! I then move on to the next student.

Other times, when I am less short of time I let them work through it. Having me smiling and waiting patiently at their side is intimidating enough to remind them that they need to up their game. You have to do both as it can sometimes be demoralising if you always grab the keyboard. You want them to improve and not give up in despair!

One things I find is essential is not just to teach the quicker mechanisms, but to demonstrate them yourself. I sometimes "code live" in a lecture. I throw some code up that I know is bad and needs an edit, and pretend that I have to make some heavy changes. I use all the tools at my disposal like regular expression replacements, keyboard macros and IDE code re-factoring in a blur. Bish, Bash Bosh - loads-of-code. The smart ones get it when they actually visualise how long it would have taken them to do the same task. I also make (fantasy) hints that the faster you cut code the faster you can earn the dosh when a real coder. This annoys them because they all thought they were real coders before coming to class.....

Another tool I find useful are screen capture videos of me doing it. Helps the slower learners catch on, and is easier for them to emulate than some dry hints sheet. My stuff is on YouTube BTW (under my name).

  • Thank you, great suggestions. I can't seem to figure out the Chinese characters at the end of your name. – user28174 May 23 '16 at 15:22
  • @nocomprende The Characters are my name. in Mandarin: tāng lái'ēn – Brian Tompsett - 汤莱恩 May 23 '16 at 15:25
  • Do you think the students can follow what happens on the screen when you use shortcuts? In my opinion, it is quite likely (for instance) that they miss the little visual cues that you saved a file when you press ctrl+s (or ctrl-x ctrl-s or :w or whatever you use). – Federico Poloni May 23 '16 at 17:23
  • @FedericoPoloni Good point. I verbalise what I am doing in a personalised situation and used verbal cues and subtitles in videos to help amplify some of the actions that are happening. – Brian Tompsett - 汤莱恩 May 23 '16 at 17:28
  • There is screen capture software that will subtitle your video with the hotkeys that you press while recording. I can't name any, but I've seen videos made with it. Look into that! – user985366 May 10 '17 at 19:19
2

I strongly agree with Darrin: if you're teaching "Algorithms 101", the spend their time learning about algorithms, not IDE's, etc. If the students go on to become developers or researchers, trust me, they will pick this up along the way when it truly becomes useful to their everyday life. And with much less effort than when first being introduced to the core concepts of computer science.

My graduate school experience had a slight permutation of this issue. I was getting a statistics PhD and almost all of my classes used R, in a fairly intensive manner. At one point, I mentioned to my professor that it would be really helpful to myself and other graduate students to hold some sort of "R bootcamp"-like course. He said that they intentionally do not hold this course: it's part of their trial by fire plan. If you can't figure out R while learning about statistics, you probably won't do well as a statistician.

Fast forward 8 years (wow, seems like it was yesterday...), I guess I passed the trial and I consider myself a competent statistician and programmer. But I still strongly disagree with this approach! The extremely valuable skill I was developing at that time was understanding the fundamentals of statistical methodology. Sure programming in R's important, but it's not what I was in those classes for. I can't help but think that distracting us from the core of the course with the development of somewhat orthogonal skills was not the best structure.

It may well be helpful to expose them to various tools which they can pick up if they work out well for them if they like. But if you start insisting they use these tools, you start to water down your course.

  • OK, but this is not a trial, at my workplace we are not here to winnow people but to get adults making a career transition to have a new career: paid employment. Our goal is to get them to succeed. If I can point something out in a few seconds about what they are already doing that will save hours of this person's life, why would I not do that? Only a cruel person would function that way. I am asking about how far to take it and when to let it go, because they will not take it in right then. – user28174 May 24 '16 at 12:31
  • 1
    @nocomprende Well there's clearly grey areas. On the two extremes, of course it's okay to tell them "You know you could do that faster with ctrl-C, ctrl-V" or "I like Eclipse". On the other extreme, putting material not related to the coursework (such as use of IDE's) on an exam, as homework, etc., seems pretty clearly not okay. I think a general rule of thumb is "if it's not related to the subject matter it shouldn't be required". – Cliff AB May 24 '16 at 12:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy