This post was written by intern Olivia Shi. Also check out her thoughts on her first experience with professional software development.
When teachers said to me that I would be coding in different languages as a software engineer to make the computer execute the tasks I wanted, I never fully understood what they meant. At the time, as someone who was bordering on becoming trilingual, I knew what it meant to learn a new language. To me, it meant sitting in the classroom with books filled with Chinese vocabulary and short stories, lacing together different characters that would form a sound my 同学们 (classmates) could understand. It meant listening to my учитель (teacher) spew instructions at us and hoping to catch a few key words that I recognized.
Coding was completely different! I never had to learn new characters or symbols to string together into a sentence and I never had to panic when I wanted to ask to use the restroom but I didn’t know how! (It’s “я могу пойти в ванную?” or “我可以去厕所吗?” if you’re curious) Of course I could understand the difference between coding languages in terms of syntax and declaring variables, but in the end, all I had to do was use English and math to tell the computer what to do. If x is less than y, do this; else, do this. It made sense to both me and the computer, what else was there to be said?
That mindset changed when I transitioned between coding for the back end and coding for the front end during my internship at 4Degrees. I knew that the fundamental differences between the two during my time here was that back end coding crunched the numbers from databases using Python and then handed it off to the front end code to nicely display them with JavaScript and HTML. When working on back vs. front end code, I expected to do just that; crunch the numbers and have it mysteriously display on the page, or make a nice page and just display the values already prepared for me. What I didn’t realize was that instead of thinking of the two as individuals working next to each other, it was more like a giant thought process that both parties played a role in.
In the first project I completed, I was introduced to this idea of a flow of communication between languages. I was given a table and at the tops of the columns that contained numbers, I was to display a sum. In the Python file, I parsed through each row of each column to add each value in order to calculate the sum. It was exactly like doing the math in my head except in this case, my head was the computer. Great, I did the math but no one knows that until I say something out loud. This is where the front end code comes into play. Using HTML and Jinja, I am able to take this mental math and put it out into the world. The HTML file is my mouth and at the tops of every column that has a number, it announces the sum in the way that I want it to.
In the second project I completed, I had to add undo buttons to our CSV upload page so the user could undo imports of information. Between HTML and JavaScript, I was practicing how to communicate with the user. Now this was no longer a statement by displaying a fact, but it was rather holding a conversation and having a reply for any answer. When the user clicked the undo button, the JavaScript file allowed me to send a reply back and display a different option. When the user wanted to undo that undo, I coded an answer with JavaScript and brought them the best reply. With every button clicked or information submitted, JavaScript would reply with the appropriate message that the HTML would voice to the user.
The third project I completed used the methods in the first two to really come full circle. I had to change the display of a modal to show the profile pictures, emails, and names of the contacts that could be associated with a certain deal. In Python, I had to figure out how to get the information I needed to communicate with the user using HTML, so when they decided to add the contacts, I could use JavaScript to ensure the correct response. In Python, I found the emails, names, and profile pictures of the contacts and assigned them to variables to send to HTML to add the correct padding, sizes, shapes, colors, etc. when presenting that information on the page. When the user clicked on the contact’s name, JavaScript took the contact out of the modal and added it to the list of associated contacts on the deal page. This was now a team between the front and back end to get the information needed and cater to the user.
Seeing the relationship between front and back end coding made me realize and appreciate the similarities and differences. Thinking of the two as completely different processes eliminates the idea of a partnership and the importance of understanding both components to create something valuable. Sure you can have the greatest thoughts but without a voice or action, no one knows about the next best invention you’ve come up with. It works the other way too where you could constantly be talking or doing things but without meaningful thought behind each sentence or action, they start to jumble into fluff. In both cases, nothing progresses and you’re left with two separate cases of inefficiency.
Working on these small projects with 4Degrees has brought a new perspective of software engineering to me. This field is filled with people skilled in different languages whether it be C++, Java, Ruby, and so on, but these can all be learned and mastered in their own way, whether it be classes, bootcamps, or even Google searching. What is more important is the hidden language between gaining information and communicating it, which can only be done through understanding the flow between both. As the cliches like to put it: Teamwork 使梦想 работу! (Teamwork makes the dream work!)