Copying vs. Studying

Just swap “Node” for “you” below, and you have my life:

“Now you’re the reason that I can’t sleep at night and I can’t go home
I know it ain’t right, gotta leave you alone
But I can’t, whoa no
But I can’t, whoa no”

— Gary Glark, Jr. Can’t Sleep

I do not know if this is a good thing that I need to be proud of or a bad thing that needs to be fixed (and definitely not admitted to publicly), but I can’t go to sleep when I’m stuck on a problem in my code. I cannot just say “Tomorrow!”. I try. I shut off the laptop and go to bed, but then I grab the phone and hone my Google-fu skills.

Honestly, I used to think Gary Clark, Jr. was singing about a woman, but I don’t think he is. What is the point, really? Relationships end, and by the time any song is published, the man or woman who was so desirable at the time the song was written has long since been relegated to ex. Now code. Code is forever. Even Fortran is still out there. It won’t matter what language you use, the logic will be the same. If you need to iterate over an array, you’ll do so in Java, C++, or Next New Language. If you don’t use code, you’ll use your own mind. Grocery shopping with an app or in person, you’re scrolling or strolling. LOGIC IS FOREVER, MAN!

So right now NodeJS and Hangman are the reasons that I can’t sleep at night. I feel that this last homework has less time to plan, sketch the decision tree, pseudocode, find fault in my plan or missing bits, code than the previous homework did. I feel the crunch and therefore I my head does not feel the pillow. The beauty of code is that there are many ways to set up a game; the frustrating thing about code is that there are many ways to set up a game. Other ideas interfere as I plan. I feel like I’m shopping hungry and without a shopping list. “Oh, I’ll try that. Ooooh, and that. Or that. And that.”

The nature of homework is that I do this by myself for myself. This means I have no one to discuss this. Ok. I do, but since I am not working with my classmates, we rely on who is on Slack at the time you need help. The other option is Google-fu, but how much of that is too much. Hangman, trivia games, RPGs, tic tac toe (naughts and crosses) are all out there many times by those new or old to coding. When does research become a crutch? Right now my attitude is that if I find anything that is too similar to my homework, that I cover the keyboard with a notebook and use pen to write out what the person has done. Take their code and turn it into a decision tree. No cutting and pasting. No putting it on a screen next to my laptop and typing what they have written. I feel that this is ok. Like having the odd numbered problems answered in the back of the book. Check to see if you’re on target. If you see an answer you didn’t get, then work back. You’re given an answer, so on your own, try to get there.

I used to be a teacher. I have issues with copying or plagiarising. I hope anyone would. But isn’t some type of copying part of learning? Aren’t the notes we take a form of it? I know my students copied my examples. I know that they also copy Davinci in art to learn. I think as long as there’s no copying and pasting or writing in parallel, it’s not too slippery of a slope. Study. Learn from someone know knows something you do not, but we should try to make sure we are learning from someone and not copying. Ask ourselves questions as we study other people’s code. What is she doing here? Why did she do it this way and not this other way? How did he validate if it’s a letter? We don’t have textbooks. If we want the point of view from someone other than our instructor, we have only what appears on StackOverlord, YouTube, and other magical Google-fu results.

Since all of the code I could think of is already out there, I have to have my own form of honour code. It’s my loss if I copy and paste. It’s also my loss if I just look, say “Oh, I see”, and code while switching back and forth between screens. It is not my loss if I study, analyse, compare, and then try it on my own and return back to my coaches.

COFFEE: 1
ENERGY: 6
FOCUS: 6
HAPPINESS: 8
LOCATION: Tammy’s
STRESS: 9
AMPM: am AND pm
NONFICTION: t

Glitch, please.

Last weekend, I attended a Girl Develop It (ATX) meeting called Intro to NodeJS. I have a list of Node tutorials and am making my way through them. They are all helpful, but nothing beats having a human there to immediately notice a furrowed brow or a raised hand. Oh, but wait. There is something just as great: Glitch. Glitch is a Fog Creek baby, so it’s the baby sibling of Trello, FogBugz. (Trello is now part of Atlassian, so I still consider it a sibling, but an older one who got married into another family.) They have a look and style to their projects that is inherently playful. It is no surprise to me that the people behind those other projects came up with Glitch.

I come to software development from teaching. I still do teach. I hope never to fully leave it. I do not think kids or adults will learn as fast if you do not encourage copying, playing, breaking, and tweaking.

Copying? Heck yeah. Copying and saying it’s your own? No. However, you are foolish not to take something finished and excellent (for the most part) and copy it. Feel it being created with your own hands. For art, a child trying to imitate daVinci will probably not recreate the master, but she will look at how proportion is used. Maybe even realise that the eyes are not at the top of the head. In a forward to a collection of his favourite short stories, David Sedaris said that he used to type his favourite paragraphs to get the feel. There is a difference between copying to learn and copying to take credit. If you don’t know that difference, I don’t know how to talk to you.

In our tutorial, we used Glitch. We could see our changes immediately, remix (think fork) our own, add npm packages easily and not bother with installing, … When I’ve thought about trying something for Node as I learn, I kept thinking that everything had to be huge. It seemed daunting. All I want to do is practice with require, extends, Express, etc. I love my tutorials and can code with a parallel project, but what if I want to start from nothing. Where can I see it happen? Do I have to create a file structure I may or may not want to keep around? Glitch allows me to copy others by remixing and then from there I can adjust the code to see what breaks it or what changes where. What happens when I do this? Or that? I can even get code from GitHub that I like to play with on Glitch. (Full disclosure: I have not tried that, but it is something they say I can do.)

Playing is the other thing I believe in as a teacher. Playing is a child’s way of manipulating. We don’t play on the streets. It’s not safe. We also don’t play with code by creating a file structure and installing every possible package just in case we need it. Just thinking about that stresses me out. If I know exactly what I am going to make, then I’m all about my Sublime, file structure, packages, and away I go. But when I just want to play and have no idea where I’ll go with it? Glitch, please. Need Lodash? Easy. Add a package and move on. Want help from friends who are ahead of me in what I’m trying to learn? Invite them to help and code with me. They don’t even need to be near me.

I still have a lot to learn with Glitch. I have not had all the time I’ve wanted to play with it, but I try to return to it daily to learn something new. During the week, I am so loaded to the nostrils with challenges that my weekends may be the best time for extended Glitch time. I think I’ll replace my Daily CSS Images challenge with a Sandbox Challenge and have an hour of Glitch and an hour of Codepen so that I can code with the freedom of screwing up.

All that praise aside, the best part is that it’s created by awesome developers to help the n00bs like myself get better. How stinkin’ nice is that?