When people think of software engineering, the first thing that may come to mind are code, algorithms, or math. When I first started learning how to program, the math and technical side of me (my father’s side) thrived. The fact that you could solve mathematical problems with a snippet of code and have it adapt to a multitude of problems appealed to me. That’s when my artistic side (my mother’s side) kicked in and saw that there was a way to be creative with code. Enter: Javascript.
I recently started taking a Software Engineering class focusing on Javascript. Javascript is probably the most interesting language that I have learned so far, next to machine language. While the basic structure is fairly similar to Java or C, I feel like it can be so much more. I also felt like it was that much easier to pick up because I had already learned various other languages previously. One thing that really hooked me on Javascript though is that in many other languages like Java or C, variables and functions need to have “types”, in that once they are assigned a certain type, you can only do certain things with them relating to that type. In Javascript, you can have a variable be a number, a string, or an object at any point in the same program; the data is up to your own interpretation. This reminds me a lot of machine language, in that you can take a piece of data and treat it as a number, string, object, or all of the above. Generally such lack of structure or discipline in coding is frowned upon, especially if your code is to be used as part of a larger project, but personally I feel like it opens up avenues to be much more creative and tap into that artistic side as long as your code does what you say it will do.
Much like art or with any type of skill, practicing is the only way to get better. If one were to draw a valley landscape ten times, one would definitely see improvement on the 2nd or 3rd time drawing the exact same landscape. Maybe you could match the colors better, or get the shape of the treeline truer to form. I feel like it is the same thing with coding. I had a chance to be exposed to a cross-fit style of coding, in which one had a limited amount of time to create a working solution to a problem, and repeating the process until you were able to get the desired results within the time frame. Each iteration of rewriting the code let me implement the fixes to my bugs as I freshly put the code into the screen instead of having to go back and rework the code like I did on my first attempts. Artwork can be far less forgiving, because once you make a mistake, you’ll likely need to start from scratch anyway. In either case, you can learn from your mistakes and prevent yourself from making them the next time. I’m of the opinion that practicing your coding can only let you be a better programmer, so I feel like this style of learning will only be beneficial to me.
After taking the first few steps into the software engineering world, I feel ready and excited to dive even further into it. Even though I feel like I have learned alot on week two of a 16 week course, I know that there’s so much more to learn, experiment, and create with. I look forward to the experiences that are to be gained with software engineering, and how to become a better software developer. In the art world, every new tool or medium gives you the chance to try a different style of creation. Like with art, I expect each new software development or addition to augment the final product in a way that is unique to that tool.