As the world becomes more integrated with technology, more and more people will be drawn towards education in coding. This not only includes the traditional approach, secondary education, but also includes the many who are teaching themselves or attending fast-paced bootcamps. While some are drawn to the field with only thoughts of making high salaries, many are taking this important step to become more involved and more understanding of the rapidly evolving world around us. For good or for worse, there is an increasingly higher number of people involving themselves with coding and technological expertise.
There are many languages to master in coding and even top engineers and programmers can’t claim to be a master of all the languages as new ones pop up and older ones die out from lack of use. Still the acceptance to coding is very inviting. There are many resources available for beginners to introduce themselves to simpler langauges (to the human eye) and many introductory courses and books start off new programmers with fun and light exercises (often times this involves making small memorable childhood games). While not purposefully harmful, this can unintentionally create a wall for those hoping to take their initial interest in coding and software engineering to a more professional setting.
Why do so many interested beginners never make it past their first “How to” book or why do interested students lose confidence after their first classes? In my opinion, they haven’t been properly conditioned to understand the degree of difficulty that will eventually follow. Coding and software engineering like any path in life takes hard work, effort, and the determination to see it through. Without the right mentality, it is easy to fumble or even crash and burn, as one would in any field. Those who are ready to expect better of themselves and give more than they are hoping to earn will see a path open up.
How can one place themselves in the right mindset and set themselves up for future success while avoiding the pitfalls discussed earlier. One such pedagogy that encourages the proper professional mindset is athletic software engineering. Part of this practice incorporates the use of fast-paced excercises (WODS) that are designed to stimulate quick-solving thinking and provide just the right amount of stressful stimulus to encourage effort and to rudely awaken those who planned to originally just “get by”. There is a difference in approaching problem solving when the difference in time allowed varies from weeks to minutes. While these exercises may not allow for the most optimal solutions to problems, the urgency they create stimulates other important focuses. They force programmers to really work on the problem in a hyperfocused environment. It also eliminates the bad habit of procrastinating on school assignments that might later translate into poor time management on professional projects. Despite the possibility of discouraging some students with this method, athletic software engineering can foster strong talents in problem solving and coding.
As stated earlier, there are many languages that programmers will encounter in their education and in their professional experience. One such language that can help beginners bridge the gap between having the mindset of a beginner and the mindset of an aspiring professional is Javascript. Prior to learning Javascript, I had been exposed to a number of introductory programming languages: Java, Python, and R. Each had their benefits for new programmers. Java currently holds the place in most universities as the first and foremost programming language students are exposed to. Likewise Python exists as an alternative introductory langauge with its user-base focusing on working with datasets. As a past professional in a laboratory setting, many people were introduced to Python and R as a package deal. However, the context and purpose of learning these languages were a means to an end and usually focused on completing one singular task. This left me with strong skills in certain areas but less of an understanding on how to tackle problem solving as a whole. Javascript has been a very interesting language to learn thus far. I am particularly fond of the absence of type declaration when initializing variables (for the most part) and the concept of functions being first class. I hope to integrate the aspects of athletic software engineering into my learning of Javascript.
This wasn’t meant to be a tirade against “phony” coders or opportunitic individuals. However, it stands that programming and software engineering are difficult fields that require great technical knowledge as well as the proper mindset for success. Even if individuals find themselves no longer hoping to pursue these fields, by learning under the structure of athletic software engineering they can also find success in other areas. I hope this inspires new programmers to find the proper motivation and maintain focus in their efforts.