Tampere
22 May, Wednesday
21° C

The library of essays of Proakatemia

Why is it hard to learn to code?



Kirjoittanut: Hassan Chakir - tiimistä SYNTRE.

Esseen tyyppi: Akateeminen essee / 3 esseepistettä.
Esseen arvioitu lukuaika on 7 minuuttia.
  1. Introduction

The ability to code is becoming increasingly important in today’s digital age, but why is it so difficult to learn? In this essay, we will explore the challenges of learning to code and potential strategies for overcoming them. We will also discuss the benefits of learning to code, both for personal growth and career success.

  • Why learn to code?

In today’s digital age, learning to code is becoming an increasingly important aspect of one’s skill set. Coding is important for a variety of reasons, making it a vital addition to a person’s toolset. To begin, the ongoing need for coding-related professions is an important consideration. In the near future, the job market is expected to witness significant expansion in fields such as web development, network and computer systems administration, and software development. As a result, learning to code not only opens up lucrative job prospects, but also provides opportunity for ongoing growth and progress.

Second, aside from its immediate applicability in certain work areas, coding instills a distinct problem-solving mindset. The process of learning to code fosters logical thinking and a methodical approach to problem resolution. This improved problem-solving ability, in turn, helps individuals become more competent at dealing with obstacles, making them useful team members in a variety of professional contexts.

Furthermore, the value of coding goes beyond typically technical occupations, penetrating unexpected fields. Even if you don’t want to be a coder, knowing how to code may help you in a variety of professional settings. Coding abilities may be used to automate repetitive operations, resulting in enhanced efficiency, time savings, and cost effectiveness. This versatility establishes coding as a flexible tool relevant to a wide range of vocations and businesses.

Furthermore, learning to code does not have to be a single task; it can be a collaborative and pleasurable exercise, especially in family contexts. Parents with school-aged children have a rare chance to embark on a coding adventure together, beginning with the basics. This shared experience not only promotes a sense of success, but it also encourages meaningful family time, making the learning process gratifying and fun.

Finally, in today’s digital economy, coding has emerged as a vital professional skill that cuts beyond job titles and sectors. As technology progresses, coding becomes more relevant in a variety of professional sectors. Whether you’re a marketer, a company owner, or just curious about the complexities of coding, learning to code may provide unexpected and major advantages. It not only prepares people to manage the complexity of the digital environment, but it also places them at the forefront of innovation and flexibility in a constantly changing technology context. In summary, coding has become a foundational talent, benefiting both career success and personal growth in a variety of ways.

 

  • Why do we see learning to code as a hard thing to do?

Learning to program can be a challenging task for many individuals. In the book “Making Software: What Really Works, and Why We Believe It” by Andy Oram and Greg Wilson, the authors explore the reasons why programming is difficult to learn.

One of the main reasons why programming is hard to learn is that it is an unnatural activity for humans. Humans are wired for natural language, and programming is the manipulation of an artificial language invented for a particular, relatively unnatural purpose—telling a nonhuman agent (a computer) exactly what to do. This means that programming requires complex mental gymnastics that only a few humans are able to do successfully.

Moreover, programming languages are not designed to match the way people think about tasks. According to Miller and Pane’s experiments, people may be able to specify tasks to another agent, but our current programming languages do not allow people to program the way that they think about the tasks. If programming languages were made more natural, more people might be able to program.

Another reason why programming is hard to learn is that it requires a different way of thinking. Programming requires individuals to think in algorithmic terms, which is a skill that needs to be developed over time. In his Pascal programming class, Elliot Soloway gave the same assignment regularly, called “The Rainfall Problem,” which became one of the most studied problems in the early years of computing education research. The problem required students to write a program that repeatedly reads in positive integers, until it reads the integer 99999, and then print out the average. The results showed that students struggled with the problem, even though it seemed simple.

Furthermore, the way programming is taught may also contribute to its difficulty. The book suggests that we need predictive theories based on models of how people develop their understanding of computing. On those theories, we can build curricula in which we can have confidence. However, we are still in the early stages of understanding why students find it so hard to learn to program.

In conclusion, programming is hard to learn because it is an unnatural activity for humans, requires a different way of thinking, and the way it is taught may not be effective. However, by breaking down programming tasks into smaller parts and focusing on natural language, we may be able to better understand how people naturally think about programming tasks and potentially improve the way we teach programming.

 

  • What do people understand About coding?

According to the book “Making Software: What Really Works, and Why We Believe It” by Andy Oram and Greg Wilson, linguists generally agree that humans are “wired” for language. Our brains have evolved to pick up language quickly and efficiently. However, programming is the manipulation of an artificial language invented for a particular, relatively unnatural purpose, telling a nonhuman being (a computer) exactly what to do. This means that programming is not a natural activity for us, and only a few humans are able to do the complex mental gymnastics to succeed at this unnatural act.

The book also suggests that based on Miller and Pane’s experiments, people may be able to specify tasks to another agent, but the existing programming languages for the meanwhile do not allow people to program the way that they think about the tasks. If the programming languages were made more natural, would the majority of students then be able to program? Could people solve complex problems involving significant algorithms in the more natural language? Would a more natural language be good for both novices’ tasks and professionals’ tasks? And if not, might students still have to deal with learning the professionals’ language at some point?

To further explore this question, the book suggests an approach similar to Lister’s modification to McCracken’s approach: choose a smaller part of the task and focus just on that. To program requires telling a machine what to do in an unnatural language.

Miller asked participants in his studies to create directions for someone else to perform. The participants were given descriptions of various files (such as employees, jobs, and salary information) and tasks like: “Find the name of the employee who has been with the company the longest.” The participants were then asked to write down the steps that someone else would have to follow to accomplish the task. The results showed that participants were able to create directions that were clear and unambiguous, but they struggled when it came to more complex tasks.

In conclusion, while humans are wired for language, programming is not a natural activity for us. However, it is possible that if programming languages were made more natural, more people would be able to program. Additionally, by breaking down programming tasks into smaller parts and focusing on natural language, we may be able to better understand how people naturally think about programming tasks and potentially improve the way we teach programming.

 

  • The learning curve of a coder

Generally, before going deep into learning actually how to code. People mostly think that the learning process only starts as hard, and they become professionals and masters by the time they got to a certain level of experience. Essentially the learning curve can imagine like this:

However, the learning curve is way bigger than the previous graph. Furthermore, the previous graph is only the first step of the journey and the tip of the iceberg.

The real journey to learn coding looks like this:

The Hand Holding Honeymoon is the initial stage of learning to code in which is used well-designed and highly polished materials that guide people step-by-step through the fundamentals of coding. A beginner will acquire basic syntactical knowledge of a programming language and experience a sense of achievement and confidence. These resources provide with sufficient assistance and feedback to help you overcome the initial challenges and difficulties that people may encounter.

The Cliff of Confusion is the stage of learning to code in which a person encounters a significant increase in difficulty and complexity as they transition from guided tutorials to independent projects. They feel incompetent and helpless, as they struggle to accomplish anything on their own. Beginner’s primary challenges are constant debugging and not quite knowing how to ask the right questions as they fight the way towards any kind of momentum. The experience can become frustrating, confusing, and self-doubting, and most people at this stage consider giving up or returning to the tutorials.

The Desert of Despair is the stage of learning to code in which the coder faces a prolonged and isolated struggle as he attempts to navigate a complex and uncertain domain without clear guidance or adequate resources. He often feels lost and directionless, as he pursues various paths that seem promising but lead to dead ends or circular loops.

The Upswing of Awesome is the stage of learning to code in which the desert of despair is finally left behind and a coherent understanding of how to build applications is developed. However, the code is still fragile and isolated like a house of cards, and it may collapse under any change or pressure. Confidence is gained because the sites appear to run, a few useful patterns are mastered, and the interfaces are cool. But looking under the hood is terrifying and getting to the final result code, which is code that is reliable, secure, scalable, and maintainable, is still unknown.

 

  • Conclusion

Learning to code is hard, but not impossible. It requires patience, perseverance, and practice. By understanding the four stages of learning to code, the challenges and opportunities ahead can be prepared for. Some effective strategies can also be used to survive each stage, such as finding a mentor, joining a community, setting realistic goals, practicing deliberately, and celebrating achievements. Learning to code is a lifelong journey, and the process should be enjoyed as much as the outcome. Coding is not only a valuable and rewarding skill, but also a fun and creative way to express oneself and solve problems.

 

REFERENCES:

 

Oram, A., Wilson, G. 2010. Making Software: What Really Works, and Why We Believe It. O’Reilly Media.

Malnke, H. 2020. Why Learn to Code? The Surprisingly Broad Benefits of Coding. Rasmussen university. Why Learn to Code? The Surprisingly Broad Benefits of Coding (rasmussen.edu)

Hudgens, J. 2017. Skill Up: A Software Developer’s Guide to Life and Career: 65 steps to becoming a better developer. Packt Publishing.

Trautman, E. 2023. Why Learning to Code is So Damn Hard.  Internet Archive. Why Learning to Code is So Damn Hard | Thinkful (archive.org)

 

Post a Comment