The Joys, Struggles, and Ultimate Triumphs of Coding: My Experience Learning the Language of Java

I had originally signed up to take Intermediate French I for my final semester at Wesleyan College. Unfortunately, I was informed that the class had been cancelled when I returned to campus after the summer, though the professor still gave me the resources I needed to learn higher-level French on my own time…I haven’t opened those books since receiving them…

In my defense, however, I haven’t had the time. In order to fill the three-credit void that was left in my schedule, I decided to take a computer science course– Java Programming I– substituting one language class for another. I had always thought of computer science as a mathematics-engineering hybrid, and, for years, was convinced that (realistically) such a field was probably not for me. I was not a mathematician, and, though I had used computers all my life and wander the internet like it’s my job, I still sought the help of the Geek Squad for issues that turned out to be embarrassingly easy fixes.

So, the first day of class arrived, and I downloaded the NetBeans IDE to use as the primary tool for Programming I. The initial lecture was easy enough to understand: we covered the difference between hardware and software, binary numbers, networks, how data is stored digitally, variables, strings, white space, syntax, semantics, how to print lines and, of course, errors. Each subsequent class provided new information and new tools within the Java language that can be used in creating unit converters, user interfaces for web pages, distance calculators, username/password generators, car loan calculators…you name it. The possibilities are endless.

With the midterm fast approaching, I can honestly say my coding skills have improved within these first couple of months. While improvement is certainly to be expected on some level throughout the progression of any course, they have improved in the sense that, not only am I learning the proper phrases, symbols, and syntax to use in order to develop fully-functioning, bug-free programs, but I am also learning patience, persistence, and problem-solving on a level deeper than I have before.

Perhaps it’s the instant feedback that makes coding so rewarding, and how, through the click of a button one can “run” the program for which they have spent significant time and effort writing code and interact with it on the spot. But it is also through this instant feedback that one feels more encouraged to persist and to “finish the job” until perfection is reached and the program is completely debugged with no errors. For those passionate about coding, or who simply want a program to run properly, there definitely exists a genuine drive. Successfully finishing a project in any programming language is a mathematical, visual, symbolic, digital, interactive, and, it can be argued, artistic representation of what someone can accomplish. A project as simple as the creation of the aforementioned car loan calculator can be exceptionally frustrating for beginning coders, but, for those who stick with it, persevere, and work through the many quirks of programming languages and computers in general, the reward (however modest) of a completed, working program is enough to turn anybody on to learning how to write computer code.

Becoming more familiar with Java programming has also given me a deeper appreciation of the underlying logic behind forms of digital media that I had previously only analyzed from a cultural/theoretical perspective. While not all digital media that I have encountered was necessarily created using the Java programming language, I have still been able to better understand how coders generally must think in order to develop smoothly-running projects that can somehow benefit/entertain users. Computer programmers occupy a strange, rigid threshold that lies between “technically-oriented” and “creative,” and must find a delicate balance within that threshold that will allow them to produce remarkable digital content. When coding, not only must one be familiar with their programming language of choice, but also with the output and efficiency of their project, the latter of which requires one to “think outside the box” with respect to the precise rules that must be implemented in order for the program to work.

Photo courtesy of: https://medium.com/