What are the most common pitfalls new programmers face? originally appeared on Quora - the place to gain and share knowledge, empowering people to learn from others and better understand the world.
Answer by Colleen van Lent, Lecturer at the University of Michigan, Instructor of Web Design for Everybody:
- Lack of confidence,
- Hesitance about putting in the time to learn about and utilize a good editor,
- Viewing setbacks as failures rather than commonplace events, and
- Seeking out the wrong kind of help with questions.
As soon as I read this question I went online to see if I could find a great article I once read about things you should never say to a new programmer. I couldn't find it, but the main takeaway was that a new programmer should be given the time to do small programs using the language of their choice. Unfortunately, instead of hearing positive encouragement, new programmers are often told that their problem choice, language choice, editor choice, and/or general approach to learning is all wrong and they should do x, y, and z instead.
I think that the most common pitfall is to lose confidence early in the process. In an ideal world more people would write funny anecdotes about their many programming failures. And they wouldn't' be fake, "braggy" failure stories that just make newbies feel worse. Programming takes time, and it takes persistence. It is one of the few areas where making mistakes is both common and devastating. One moment you have a working program and the next you have nothing.
The second pitfall may sound a little odd, but it links back to the confidence issue. If you learn to embrace a good editor, it will make your life easier and save you a lot of time -- not to mention you look and feel kind of cool when you really utilize all of the shortcuts for saving, indenting, commenting, running your code from the editor instead of the command line, etc. However, some students are so overwhelmed with the syntax of coding that it takes time to convince them that exploring the editor is worth their time.
The third pitfall is realizing that a lot of things don't work out of the box, particularly when it comes to installing and using packages/libraries. This past term I had the opportunity to teach a course on Intermediate Python programming. I could have focused on data structures, but instead I tried to focus on problem-solving (both software and hardware issues). One of the projects in the class was to create a Pygame program. Out of 80 students, *maybe* a third were able to run the demo program on their first try. The rest had a myriad of problems ranging from Operating System differences, to package install problems, to competing software for resources. One student even had to do a separate project because we were never able to solve all of the installation problems. And that is okay. It can be very empowering to realize that sometimes when things don't work it isn't necessarily because of something you did.
The fourth pitfall I mentioned has to do with seeking help. I highly recommend coding with a friend, however make the effort to avoid immediately referencing other people's code for the same assignment early in the process. It is really hard to "unsee" code. If you are asking others for help, do it with a pen and paper, not in front of your laptop or theirs. In order to learn programming, it's better to talk about your big picture problems, not specific lines of code.
There are a lot of other ways to fall off the rails (for instance, not committing regular time to a project, coding to finish instead of coding to understand, failing to follow rubrics very carefully, etc.). Your best bet is to create a supportive team, work together in a common location, help each other with small debugging and installation issues, and remember to walk away every now and then. Coming back from a small break can make a huge difference.
-- This feed and its contents are the property of The Huffington Post, and use is subject to our terms. It may be used for personal consumption, but may not be distributed on a website.