Software Freestyle

28 Apr 2022

Forgettable free flow

  Taking an idea and idea and putting it into words can be difficult. Taking an idea, putting it into words that are a coherent sentence, having those words spoken in a rhythm, and finally having them rhyme is nearly impossible. I say nearly because there's a specific subset of people that do it so well they can make careers off of it. The art of the freestyle is revered throughout the hip-hop world; The "flow of the dojo" so to speak. A "proper" freestyle has the ability to captivate the audience, especially if it's done correctly. But due to the lack of structure and a lack of planning most people fall short of that task. But if we look at hip-hop music in general, people enjoy freestyles, but people don't enjoy them as much as songs in the "Top 40". In fact if we look at some of the most popular songs in the current age of hip-hop, you'll notice that a lot of them include autotune, lack lyrical complexity, and are simple to sing along to (even the 'naughty' ones). This is why one could argue that the structure of what makes a "good" rap song has changed in the past decade. On a personal note, I thoroughly enjoy the new 'party music' scene. I think that creating songs for people to vibe to while making people feel happy and excited is respectable in its own right. Regarding the subject of hip-hop's metamorphosis, you could say that there are patterns in which people use to create music. The same goes for software engineering where there are certain patterns that help developers create the system that fits them best. It's basically like having to 'freestyle', but you've been practicing with the beat, saved up decent bars, and know who your audience will be. These developmental models are known as design patterns.

Putting your money where your mouth is

  My greatest weakness when it comes to design patterns is the issue of not actually using them, or unknowingly using them and not being cognizant of its existence in my application. For the most part, when I create an application I'm mostly 'freestyling'. I know what the application is supposed to achieve. I'm aware of the framework that I'm using. I also understand the gist of Object-Oriented programming, but I don't necessarily understand 'design patterns'. For example, when using the meteor framework there is the Publish-subscribe pattern which utilizes a class of publishers which provide information to subscribers. Subscribers can gather data from the publishers without them knowing. Thus, there's a design pattern for information to propagate from the backend to the frontend of a project. I would like to imagine that this pattern is used when making a song in many languages, where you don't really know who is going to end up with the song, but putting it out there gives more power to the system to pull from various data collections. There's also the Model-view-controller pattern . Which is probably the most common type of design pattern that I've seen. I would liken this to the fundamental song format of:

Verse 1 → Hook → Verse 2 → Hook → Bridge → Final hook to bring it home.

  For the most part everyone uses this format, but it seems only the best and brightest superstars can find success with it. Meanwhile, I’m just here freestyling my heart away hoping that my project works. I hope I’m able to use the skills I’ve learned from ‘freestyling’ and apply them in an industry setting. More importantly, I hope I can be cognizant of design patterns that I can fully grasp the idea of it, so I can ‘sing’ with the best of them.