My "Hello World" to Software Engineering

19 Jan 2022

From Trouble Free to Tribulations

In my junior year of high school, I took an introductory computer science class. That class taught us the basics of programming and what the computer science field is all about. There wasn’t much depth to the class but it sparked an interest in me to want to learn more. I went on to take the AP computer science courses which took a deeper look at Java and some overall computer science concepts such as networks and web design. Going into college, it was an easy choice for which major I was going to pursue. Since I had a strong background in Java, the first two ICS classes were not too bad. However, I began to struggle in ICS 212 trying to pick up the new environment of C and C++. The semester felt long but in the end I am happy with the work I produced and the knowledge I gained. Now, with ICS 314, I will once again have to find my way through another environment so that I will come out a more developed programmer.

Javascript Versus the World

After using Javascript for a week and a half I understand why it is such a powerful language. Javascript, compared to Java and C++, is more lenient. Some examples would be allowing names to have spaces in them, being able to store different types of variables into a single array, and being able to return a function from another function. These and many more features of Javascript make it a more flexible language than what I have previously learned. The language also has more tools for organization and simplicity such as the sub-properties in objects and being able to add new properties into objects using an assignment statement. The new features included in ES6, such as destructured assignments and arrow functions also help with simplifying and comparing code. The flexibility and organization that Javascript provides is an excellent language for software engineers to use because it makes coding and collaboration efficient.

Learning a New Way of Learning

From the first day, it was clear that the teaching structure for ICS 314 was different from other classes I had taken before. The centerpiece of this new learning structure were WODs. WODs, or “Workout Of the Day”, are timed coding activities that force you to be efficient and accurate with your code. We are given a set amount of time where we have to solve a problem. If we are able to completely solve the problem we get full credit, otherwise it is a zero. The WODs follow an idea of Athletic Software Engineering (ASE) which looks to build competency and efficiency in students. I like the idea of having to be efficient with my code. Work environments always have deadlines so being able to write good code as fast as possible is important to me. One concern I have with WODs is the all or nothing grading system. This is the most stressful part of the WODs for me because it means that my code must be absolutely perfect or it won’t pass at all. To prepare myself for this, I will be doing as many practice WODs as I can to help build my confidence. Although these WODs seem tough, I think it will give me an advantage over other programmers who have not had this experience.