Frustrations of Learning Code

In a week and a half, I will be starting the UC Davis Extension coding bootcamp to become a full-stack web developer. I have been preparing for coding bootcamp for about two months now. I have been warned that the experience is going to be intensive so I have taken calculated steps in preparing. I aim to be thoroughly versed in HTML, CSS, and basic JavaScript prior to class start. But in trying to be highly prepared, I have come across some frustrations of learning code. I will discuss them to help beginner web developers, and maybe even those who develop online tutorials and other coding resources.

Photo of Falon typing on laptop

When teaching myself HTML and CSS, the most rewarding process was building a tribute page. I challenged myself to add components that would familiarize me with many of the languages’ abilities. I did not realize what Bootstrap was until I had been working with HTML and CSS for several weeks. Previously, I thought that Bootstrap was something I was probably already using, like a limp of CSS. So I didn’t bother looking it up, and didn’t really understand what people were saying when they suggested I “learn it.”

To the experienced web developer this may seem silly, but an absolute beginner has no basis on which to gauge what is worth learning as a fundamental and what is supplementary. Bootstrap was easy to learn after I realized how powerful it is. I got excited and created a web page from scratch by following the Bootstrap Documentation. It is excellently written and going straight to the source saved me unnecessary outside commentary and confusion.

When learning JavaScript, I had a lot more trepidation with the sources I found online. One of my frustrations of learning code was that it was difficult to find practical examples that didn’t involve looping through my favorite foods or listing my all-time favorite colors. Most of the material I came across used overly playful examples that do not do justice to JavaScript. Nor did they illustrate the actual purpose of the different components of the language. For example, one of the more infuriating exercises I encountered is as follows:

Form an array with two colors in it. Create a function and title it favoriteColor. Use Math.random to choose at random a favorite color. The function should return either of the two colors in your array depending on the result of Math.random. (modified to protect the culprit)

My immediate thought was to create a simple if/else statement. Since there are only two items in the array, there is really no need to create a lengthy function. The exercise did three things:

  1. Overcomplicated a rather simple problem
  2. Did not accurately represent the purpose of functions
  3. Potentially helped learners come to the conclusion that coding is too hard

Exercises like these continue to perpetuate the idea that web development is difficult. Rather than using scenarios representative of practical function usage, some tutorials opt to use nonsensical and confusing language and problems.

Another odd exercise that I encountered in learning JavaScript came from a highly reputable series of books available on GitHub. In the problem, the author has you create a loop with a counter and decrementing balance from a bank account. He has you create a variable for your “mental spending threshold.” While mentioning the concept earlier in the chapter, I was still a bit uneasy about what he actually meant by this terminology.

Actually I was downright frustrated, having a hard enough time creating a program to calculate the other items he was requesting. So I Googled the phrase. This man is the only man who has used this exact verbiage. The author came up with an uncommon (and generally unheard of) concept for a variable that the learner was meant to interpret and understand.

The following is a recap of my general frustrations of learning code. These were encountered while researching and practicing the fundamentals of HTML, CSS, and JavaScript over the past couple months. Although, I did have some of these frustrations previously when I tried learning to code. I have included lessons that will hopefully help some people patch gaps in their learning. While there are more web development resources available than ever, there are also often details that can throw off the beginner. My aim is to make the discipline less intimidating. Anyone can learn to code with effort and time.

Frustrations of Learning Code

The following are the most frustrating aspects of learning the basics of web development that I encountered.

  1. Where do I write the code?
  2. Is this wrong or outdated?
  3. There’s an easier and more practical way!

Where do I write the code?

This should not be one of the frustrations of learning code. Yet, it inevitably is. For the seasoned web developed or designer, this seems like a stupid-simple question. I have attempted to learn web development many times of the past few years, and I was always stumped by this question. I was familiar with the interfaces used on online learning platforms (like freeCodeCamp), but knew that these were capsulated and could not be used to really build something. At one point, I asked a few web developers I knew where to write the code, and they introduced me to CodePen. But after playing around with it, I realized it was meant for smaller projects and front-end developers.

Where do I put the code? This insanely rudimentary question is being totally mishandled by online tutorials because it’s hardly ever addressed. One day, I finally stumbled on a tutorial that told me to download Sublime Text. I downloaded it immediately and felt elated at the breakthrough. Shortly after, I found another tutorial that introduced me to Chrome console (control+command+j on mac). This was another breakthrough. I have been using it frequently since to tinker with JavaScript loops. Before finding out about console, I was familiar with inspect. However, I was unaware that it was a tool used by developers to play around with breakpoints, styling, and more.

Lesson: Many online resources assume what you know, even if you are a very beginner asking where do I write the code? If you think something is wrong or missing, you may well be right. Don’t settle for the first tutorial you find, or even the fifth. Continue browsing until you find a tutorial that is walking you through all the steps you need to really understand the material.

Is this wrong or outdated?

When you spend enough time looking for good online learning resources, you come across a wide range of discrepancies. Many of these are attributable to newer versions of technologies, like Bootstrap 4 and ECMAScript 6. However, there are also many ways to write code in general. This threw me off at first. Being a writer, I am used to following grammatical and spelling parameters set out by the American English language and MLA. However, much like writing, no two coders write code in exactly the same way. Spaces, cases, and naming conventions vary among the community. So beginners are called to be especially alert to differences, and recognize that web development is not as exact as it is made out to be.

One of my big concerns was writing clean code. This is probably one of the preemptive frustrations of learning code, a sort of shield I put on to keep the bad code away. I have heard friends speak time and again about the differences between good and bad web developers. And I have heard horror stories about nightmare code, woven with dependencies, improper comments, and lacking documentation. While I have still not determined for myself what good and bad code looks like, I can at least be aware of the varying styles. In this, I can do my independent research on each new piece of information that I learn. Though this process, I encounter repeat information, which actually helps me learn. The more times I go over concepts, especially from different sources, the more familiar and less threatening code seems.

Lesson: I question each and every online resource that I use. It’s in my nature to be inquisitive and ask questions. Through my general skepticism, I am confident that I will be able to detect inefficiencies and form my own style of writing code. My suggestion for avoiding wrong and outdated information is generally being vigilant and open to new methods. I also suggest consulting direct sources. You can find a wealth of fundamental information in documentation.

There’s an easier and more practical way!

For many years, I got caught up in the “web development is hard” hype. In fact, it’s probably one of the top frustrations of learning code. This hype really helps those making money off of teaching code. If you say something is hard, you are elevating the status of what you do and hence the value of your product. But what if we just thought and believed that things are easy? Merely changing my attitude towards web development has allowed me to go a lot farther with it. If I continue the narrative in my mind that web development is easy, then I am helping myself align with the learning process. Adversely, reminding myself of how hard web development is only dissuades me from even trying.

If coding is easy, then I can learning it. If I can learn it, I can continue to improve. Removing that mental barrier was the most important part of this process for me. I suspect the same is true for others who have dabbled in code. The easier, more practical way is understanding that finding the right resources and counting on the right books and material is part of the time you spend learning to code. Ideally, there would be a centralized location you could go where no assumptions would be made about what you know already (hem, seriously where does the code go?).

So yes, I listed “there’s an easier way” as a frustration. This is because when we make assumptions about a learner or we use non-practical examples, we contribute to the frustrations of learning code. Rather than keeping it simple, elegant, and practical, many of these resources alienate and dissuade learners.


I have a lot yet to learn and anticipate that web development will keep me interested for a long time. Please let me know in the comments if you have encountered any of these frustrations while learning.

Additionally, feel free to connect with me on LinkedIn.


Writer Turned Web Developer

In this new blog category, Web Development, I will examine the similarities and differences between the mind of the writer and the mind of the web developer. In this, I will also look at the fields as a whole, and attempt to determine why the two disciplines are considered nearly on opposite ends of the spectrum. People often allude to rough measures of a person, segmenting them into either creative types or mathematical and scientific types. This crude rendering of people limits their scope of imaginatively melding two “opposing” disciplines.

Rather than assume the type of a person, we can suggest that individuals have chosen tracts of learning. In this, they have purposefully neglected particular disciplines in lieu of focus on others. Specialization is not always a bad idea. But specialization is neat, and modern fields are clotted with likethink. So to differentiate specialization, I propose that future specializations will live in hybrids. For example, the writer will be a web developer. The mechanic will be a skilled musician. These dual specializations will live in the workplace and differentiate labor where it has previously been narrowly-defined and limiting.

As a writer, I wanted to challenge myself to do something far out of my comfort zone. I have always been intimidated by computers and in awe of web developers. So web development was the clear choice for this particular challenge. Knowing this, I enrolled in a six-month long full stack development program starting January. For the past month, I have been learning HTML, CSS, and some JavaScript.

I was recommended a book called Geek Sublime by Vikram Chandra, in which the author talks about his life as a writer and web developer. In his first chapter, he states “Both writers and programmers struggle with language.” On the following page, he writes “coders – like poets – manipulate linguistic structures and tropes, search for expressivity and clarity.” Writers and web developers both work in structure and language orientation. In his The Art of Computer Programming, Donald Knuth speaks poetically about code. He coins a term, “literate programming”, which speaks to the craftsmanship of code:

The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variables means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that reinforce each other.

The web developer, then, has foundational organization in common with the writer. He seeks to properly name, and form the narrative in sensible progression. Each variable has effect on the others in both disciplines. Both literary and programmatic narratives suffer under the creation by a hand unconcerned with discipline and revision. I suspect that commonality of the disciplines only begins at this. The interconnectedness of thought across disciplines forms the paradigm of human thought. Once we establish more similarities, we may come to a closer understand of the primary function types of the human brain within the realm of problem processing when it comes to naming conventions and narrative creation.


The New Work Order

The new work order is coming as technology advances and brick-and-mortar shops wriggle out as our means of obtaining essential and nonessential products and services expand. Customer service experiences that overly cater to customer requests, no matter how indulgent, are on the decline. In the old rigid world of retail, the motto remains that “the customer is always right.” Retail is going away, and hopefully at an exponentially quicker pace than it’s currently leaving. The industry festers and teems with permissive attitudes that spoil the very experience of obtaining material goods. Where purchasing directly from a shop was once a personal transaction between salesperson and customer, the process has become so sales-driven that it has lost authenticity. The customer is skeptical – what are they selling me? Free samples come with a catch. Behind the scenes, the customers are ridiculed for making informed decisions about their purchases. Preferred customers are those with no regard of price comparison, automated “yes” impulses, and pay the most quickly.

We see some online sales taking similar approaches to retail practice – multiple pop-ups, invasive chat windows, and prompts to add-on items. Last year, TurboTax went so far as to add an item to carts without the consent of customers. If customers did not catch and remove the item, they would unwillingly make the non-refundable purchase. The ethics of customer service need to change. They have at points overprotecting the customers (eg. 100% guarantees) and at other times give companies the upper hand (eg. manipulative price points to give the appearance of higher savings). In this, aware individuals are beginning to seek out those businesses that operate ethically. It’s often difficult to tell, with so many companies also speaking highly of their ethical policies where their actions do not reflect stated intent.

hill photo by Dan Gold

Part of the problem of immoral business practice rests in consistent displacement of guilt and blame onto the idea of the corporation. The life of the organization is not only preferred and sustained over the livelihoods and just treatment of employees (without which the organization would not exist), but now we hear common phrases in the workplace about an etherial “corporate”  that “made us to do it” or “isn’t giving us what we need.” When all of the employees in a company blame a mystical other, there is nobody actually accountable for a choice, action, and statement. Through this, there is also nobody who is accountable for creating a change.

Additionally, when suggestions are proposed on an individual level, they are automatically disregarded. There is an unclear path to which suggestions go. And many times when suggestions are made, they enter an ether never to be requited. The immoral business practices continue to live on because there never quite seems to be someone taking direct responsibility. Decisions are made behind a mask, or an overhead name – the company’s name. Choices are faceless and nameless unless they result in astonishingly positive results. These results are chalked up to a face because they are thought to increase morale among employees.

The new work order has a face and a name.

The dissociation between indulgent customer service and etherial choices made by a corporate head make for a rather unaccountable staff as well. They exchange time for money, and each individual values his or her time on his own meter. These attributions are often arbitrary and cause internal resentment. The mode by which corporations, especially those retail-based, operate does not leave much room for individual contributions beyond those strictly assigned by in-store and corporate managers. The lot of this type of work is mechanical, uncreative, and substantially detrimental to the human spirit.

The new work order is technology-based and requires personal educational investment.

The future of jobs is in highly-specialized positions and remote work. Through this shift, retail will fall off the wayside. As environmental, ethical, and consumerism concerns begin to loom more potently, malls and shopping centers will become ruins of a past littered with spontaneous purchases, mounting credit card debt, “self-treating”, and a general unawareness of waste and excess. Digital waste will become the new consumerist problem. Technology will drive people to learn new skills and challenge themselves. Ethics and authentic interactions will coagulate in the business sphere and workers will see their personal needs come closer to matching the needs of a greater “company.”

The new work order is cooperative and creative.

When we look at the word “company”, we see that it implies cooperative and accompanied work. Cooperative structures are far more in line with this principle. When workers have a real-life stake in a company, they feel pride and ownership in the work that they do. In such, work is not a paycheck, it’s an impassioned act of cooperatively working towards a shared goal. Non cooperative companies attempt to emulate the same pride in work without the benefits of ownership. In this, they often fail to placate those exact people who could push them forward. They placate those who have no means to think creatively of an alternative to working for an etherial other.


Changing Course

Changing course is sometimes a requirement, sometimes a habit, and sometimes a break to building up. In dire situations, we need to reevaluate our circumstances. If we habitually change course, perhaps we are seeking to find a proper fit for our personality. And if we build up momentum and a want for change, we may one day reach a point of break. At this point, it will be inevitable that we form change. Changing course demands some vigorous restructuring of our own daily lives. It also demands an alternation in mindset, which is the driving force for opposing forces like stagnation and settling.

When we change course, we make decisions. They are not necessarily explicit, but we engage in non-attachment. We seem to think non-attachment will throw us into the ether, unable to grasp at an solid foundation of who we may be. But non-attachment does the opposite. It instills in us a more balanced and more stable glance at the potent real self. It’s to ask: who are we once we thrust ourselves out of our comfort zones? If we are only a self inside of an organization, a hobby, a relationship, a victim state, then we are rendered as a non-active individual. This is seen in people who are so intricately wound up within their micro-community that their realities become skewed.

Mountains photo by Rohit Tandon

The feeling of comfort may coincide with the feeling that though some things in the micro-community will change, there will always be base foundational components to which the individuals cling. All humans may have experienced this intrenchment to varying degrees. Some are engrossed by the preaching of a financial god, some deeply glorify an abusive person in their life, and others neglect to truly identify their active roll in a micro-community – relinquishing all accountability for their actions during the period of time that they are deeply within an organization.

Impossible

Improbable

Inevitable

The act of changing course, whether it was brought upon one or the individual sought it out,  seems like nothing other than fate guiding the narrative. It may seem inevitable that a decision was to be made, where the idea itself was once an impossibility. In changing course and being non-attached, the individual draws himself as a fluid participant. He is acting; and in fact, change course takes a form of certainty in the uncertain that many people who never truly live will call mad. Others will see desperation and some may even vocalize trepidation. In doing so, they reveal their own insecurities. For anyone trying to dissuade an individual from achieving a solid goal that he has set his mind on is only calling forth his inability to listen and follow through on his own goals.

Changing course marks a heightening of self-awareness when the individual is cognizant that the change will reconfigure his life. This change is done in uncertainty of results, and certainty only in the amount of effort that he will put into the endeavor. He will parcel out successes not on the validations of others, but on the merit of his actions. He will identify stamina as the life force forging talk into action, and action into change.