Abdelrahman Elsirafy
4 min readFeb 8, 2021

--

The Bittersweet Growth Behind Programming

I’m currently in my first module at Flatiron School’s Software Engineering program and thought I had considered / best prepared myself for all the possible challenges to come. One crucial (and probably the most important) factor I overlooked was mental health. One’s ability to learn and the rate they are capable of doing so plays a huge role on self-image. I always considered myself willing, determined, and logical when it comes to learning which in itself should should seem like enough but I couldn’t have been more wrong.

The last week of each module at Flatiron is dedicated to showing your understanding of the material learned throughout the month by building a project (or application, I should say) which reflects your progress and how new knowledge is being implemented. Granted this recent one was only the first of five, the application required not much more than simply interacting with the user to fulfill whatever purpose the program’s function was while incorporating the use of an external source of data, such as a requesting responses from a website or actually collecting specific elements off of a particular webpage. It didn’t seem too bad at first but it eventually hits you when you’re looking and a bunch of blank files that should technically be communicating with one another, each playing a specific role in making this program come to life and serve a purpose. Keep in mind, all the coding done prior to this was test driven, meaning that the instructor establishes parameters for how we code a program to work as it should. This keeps us on track to learning and implementing the material being taught. As for our project, it was completely in our hands how we executed the application and all that was expected was eloquent and proper use of the code.

You might be scratching your head thinking how this even applies in building a program, but think about it this way: a math teacher can show a student a million ways to use numbers, but for the sake of proficiency, there’s usually a preferred method to using those numbers rather than just yielding the result they’re looking for in the moment. The teacher most likely would prefer seeing his or her student using exponents rather than simply multiplying a number by itself however many times. Sure, it works and achieves the same thing but what the student might overlook is the lack of dynamic. It’s the same principle as needing to know the use of division rather than simply knowing how many 2’s go into a 10 and it’s the same dynamic as a programmer needing to know how to code efficiently.

The hardest challenge of building the application, was not knowing if your mind was approaching methods in the right ways or if you’re even thinking like a programmer at all. It almost makes you consider if it’s a trait that is teachable at all. Throughout our building we’re expected to do frequent updates of changes to program as it’s not only being kept locally on our computer, but kept in a virtual cloud (known as a repository). As it pushes your programs changes to the repository you can see the changes made since your last push. At about three quarters of the way through completing my application, which I believe was around no less than 300 lines of written code, I saw that I had rewritten 96% of my existing content since the last update I pushed. Seeing that alone made me question if I was even doing any of this project right, or even worse, thinking I understand material that I actually have completely wrong and don’t understand at all. Having those thoughts in itself can be so exhausting both emotionally and mentally and it can definitely have negative impacts on confidence.

So why do we do it? Well, for every bit of it that can impact us negatively, we have an incredible amount more to gain from it. As scary as it was looking at those blank empty files in the beginning, it made it that much more incredible looking at a program doing everything I intended it to do when I was done. The fact that I took a simple idea in my head and turned it into a reality in front of my eyes made me feel a sense of accomplishment I’d never felt in my life. It was a tool I’d never had before and still can’t believe I even did as I’m typing about it. Can the program still be improved? Probably. Does it look it was designed by a toddler? I’m sure it does. Does it matter? Absolutely not because I made that functioning application out of thin air with my own two hands and most people know that to be magic. If you ask me, or even just noticed the changed and evolved mentality throughout this blog post, it was worth every damn hair I ripped out getting that application to work and absolutely can’t wait to see what comes next.

--

--