Persistence is a soft skill every programmer needs because they cannot give up every time adversity strikes.Soft skills are traits that shape work habits. They influence how a person completes a task, interacts with others, and resolves conflicts. Unlike hard skills, which are technical abilities or knowledge, soft skills can be overlooked in curriculum. Often, they are perceived as personal qualities that cannot be taught. However, this is not true. This fourth article in the soft skills blog series is about training students to be persistent when programming.
7 Essential Soft Skills a Programming Unit Should Target
A programmer must be able to explore new ideas, problem solve, pay attention to details, invent original concepts, collaborate, and communicate with others. Not only that, they cannot be a person that quits each time things become complicated. After all, that is just an average Tuesday for a programmer! There are seven essential soft skills that every programmer needs. Teachers should consider them when lesson planning:
- team player
Persistence is a Soft Skill Every Programmer Needs
Persistence is continuing to work towards a goal despite obstacles. It is a strong work ethic that demonstrates determination and dedication. This trait is an admirable quality. It is easy to respect someone that continues to try and does not quit despite hardships.
Adversity is part of any complicated task. It can occur when pursuing a personal goal, completing a school assignment, or undertaking a work project. This means being persistent can help in almost any situation. Now that is a transferrable skill!
Persistence is a trait that is necessary when programming. Let’s face it, program development is complex and has many challenges. It can be frustrating to get everything to work properly, especially when there are deadlines involved. Nonetheless, programmers cannot just throw up their hands and stomp away from their device when things go wrong.
People who are persistent:
- focus on a goal
- adjust their plan based upon what is happening
- keep going no matter what troubles occur
- want to succeed
Develop Persistence in Your Students
Motivate Students with a Meaningful Task
Persistence is rooted in a task that is personally meaningful. The motivation cannot just be good grades or course completion (although those are excellent motivators). Instead, there must be an intrinsic quality to drive students’ actions. They must want to make the program and see it through to completion. Consider these factors when selecting a programming task. It should be:
- fun: Programming should be enjoyable. Provide a task that has interesting output or is fun for the user to play. This will engage learners.
- open-ended: Everyone in the class should learn the same programming skill. However, each student must apply those skills to make the work original. By adding personal touches, they become invested in the task.
- authentic: Give the program a real end-user. It could be a preschool class in the school, a fellow teen, or a parent. This becomes a source of motivation as students will want to create a high-quality program if they know that someone will be using it afterwards.
Set Goals to Maintain Focus
Now that you have established a programming task that students are interested in completing, the next step is to help them maintain focus throughout the coding assignment. There is often lots of enthusiasm at the beginning of a task, but this can wane when obstacles occur. Below are three ways to keep your students on track and constantly moving forward:
Record the Goal
Students need to write down their goal. It should include the purpose of the program they are designing. It is advisable to include a completion date. Throughout the programming unit, remind students about their goal so that they do not lose focus.
Divide the Goal into Small Achievements
Divide the task into smaller components. That way instead of it being one large goal, it becomes tiny achievements. Provide the task list so that students can chart their progress. For older students, you may want to post reminders at various stages of the programming unit. This will help them maintain focus as they gradually advance towards task completion. The task list can be a simple to-do list or it can be a fun board games that marks progress.
Form a Plan
Another way to help your students focus on their goal is to have them outline a workable plan. It should be on a sheet that they can refer to throughout the task. The plan could take the form of an organizer with spaces to record content or resources. It could also include a question sheet that guides students through decision-making. Still another idea is to build a flowchart that maps each step in program. No matter the appearance, encourage students to consult their plan often.
With goal setting complete, it is time to follow the plan. But wait! The plan is not cast in stone, with only one direct route from point A to point B. Rather it is a road map, with many paths that reach the same destination. Be warned. The map does not include the obstacles and detours along the way. Just imagine deep ditches, construction, broken bridges, and turbulent weather. Metaphorically, this is what happens when writing a program. However, those problems along the route are bugs in the code. Since there are going to be some troubles, your students need to be flexible in how they approach the task. After all, a persistent person adjusts the plan based on what is happening.
Adjust the Plan
When teaching your students to be persistent, encourage them to rethink their course when they encounter a problem. Explain that although they must focus on their goal, they should not be rigid in its pursuit. Instead, to overcome challenges they may need to adjust elements in their initial program design. This is not a sign of failure or weakness. In fact, it is a strength to recognize when something needs to change to continue to move forward. For example, students may need to provide less options to the user or forego formatting output if time is a constraint. Or they may need to let go of a feature that is too complex to code based on their current skillset.
Try Something New
Persistence is a soft skill every programmer needs. This is because when developing a program some features must be included, even if they are challenging. They cannot be left out or adjusted. Since they are a requirement, it means a solution must be found. What can students do when they encounter a problem they do not know how to solve? They cannot keep trying the same code and getting the same failed result. You do not want them to become so frustrated that they give up. Instead, they need to stop what they are doing and try something else.
Here are some strategies you can use to encourage your students to pursue their goal by trying something new:
- outline the efforts they have tried so that they don’t keep doing the same thing
- explain the meaning of some error messages so that they can understand the problem
- present an example to notice the similarities in how the code functions
- identify the issue and then provide a few suggestions that they can try
- supply the necessary code snippet but have the student place it in the correct spot
Engage in Positive Self Talk
A persistent person keeps going no matter what troubles occur. But what is the secret to their relentless pursuit? Yes, it is staying focused and being flexible. However, they also do not let self-doubt derail their efforts. Phrases such as “I can’t do it”, “This is impossible”, and “I am stupid”, are just some examples of soundtracks that can cause a person to quit. To help your students develop persistence, they need habits that strengthen their mind. You can do this as a small group discussion or written reflection. Here are some ideas for getting your students to change how they talk to themselves.
- add the word yet to the phrase, such as “I can’t do it, yet”
- remember a time you completed a difficult task and how it felt to be successful
- pretend you are talking to a friend what would you say
- what advice would you give to a fellow programmer that wants to quit
- recall a time when you wanted to give up and consider why you kept trying
- imagine you are a cheerleader, invent a cheer
- transform your negative self-talk into something positive such as “I am smart”
- reword part of a favorite song into an “I Can Do It” chant that you can sing or hum
Create a Support Network
Since persistence is a soft skill every programmer needs it is important to help your students become more resilient in the face of adversity. One way to do this is to create a support network. Students should be able to access resources to get answers to their questions. This is a great way to help them to keep moving forward. Also, you want to create a learning community in which asking for help is a source of empowerment, not a sign of weakness. Try these suggestions:
- have a friend look over the program as a fresh set of eyes can be helpful
- supply a reference sheet of commands students can use it to verify their code
- create a checklist of common bugs to narrow down the problem
A persistent person wants to succeed. A celebration of a completed program is a wonderful idea. However, for some students that may be too distant in the future. Do not wait until the end of a programming unit. Instead, acknowledge each accomplishment towards task completion. Below are some ways to celebrate success:
- check an item off a task list
- say or write a positive comment
- share an unfinished program to point out some of the amazing features
- present a program to a small group in a coding presentation
- pair up with a friend to play their game
- invite another class to be players of completed games
- award a certificate of achievement