Why I Want to Learn Full Stack Web Development

Kyle Andruczk
4 min readJun 19, 2021
Companies developed on Ruby on Rails (Source: RubyRoidlabs)

For my first blog post, I want to talk about why I want to learn web development front-to-back.

Coming into the Yale x Flatiron web development bootcamp with a bit of theoretical coding experience, it at first seemed intimidating to learn the intricacies of database management, front-end frameworks, and highly abstracted languages such as Python, JavaScript, and Ruby. Most of my prior experience consisted of working tediously on C problem sets in college courses, meticulously allocating memory dynamically and trying to wrap my head around abstract data structures. I had tinkered with object-oriented programming in C++ and had very basic web development skills with Flask thanks to having taken Harvard’s CS50 (jointly taught at Yale) my freshman year, but this hodgepodge of coding knowledge was unfortunately not enough to sufficiently build a dynamic web app from the ground up.

I had previously come up with ideas here and there for interesting web apps, but consistently found myself frustrated with trying to follow YouTube tutorials or inane StackOverflow posts and wanted the structure of a formal course.

Luckily, I had some COVID credits to use and discovered that Yale offered a full-stack web development bootcamp through the Flatiron School — focusing primarily on Ruby on Rails.

Having completed the program’s pre-work module and now having learned the basics of Object-Oriented Programming with Ruby, I can confidently say that I have been pleasantly surprised with web development. Below are the two things I’ve most liked about web development so far and the main reasons why I want to continue learning the practical skills of full stack development.

High-Level Languages are the Foundation of Modern Computer Science

After breaking free from the pointer-based chains of C, seeing the beauty of modern programming abstractions in Ruby is amazing. From the wonders of being a loosely typed language (sorry TypeScript aficionados), to everything being an object, to implicit return statements, the past 40+ years of innovation since Kernighan’s revolutionary invention have been kind to developers. I like hexadecimal as much as the next coder, but declaring an array without even thinking about datatypes or pointers and using Ruby enumerables over indexed for-loops is magical.

Take, for instance, the basic task of outputting “Hello World!” to the terminal 10 times.

In C, the code would look something like this:

#include <stdio.h>int main(){    for (int i = 0; i < 10; i++)    {        printf(“Hello World!\n”);    }return 0;}

Preprocessor directives, explicit returns, escape sequences, oh my! While it may compile quickly, it sure would be confusing to the average non-programmer. Now compare this code to its Ruby counterpart:

10.times do    puts “Hello World!”end

Much better. Semantic, intuitive, and for most use cases in web development a negligible execution time difference with C although it is interpreted and not compiled.

Object-Oriented Programming and Data Models

I now understand why Object-Oriented programming (OOP) is so central to modern web development. So much so that it inspired C’s successor, C++, due to its lack of classes.

The foundation of OOP is the concept of classes, which may be simply (and reductively) described as a grouping of methods and attributes into modular blocks. Thinking and coding with classes allows one to develop data models which are related to each other.

For instance, think of a simple ride sharing app. A User has a Ride though a Driver, and consequently a Driver has a Ride through a User. We can model this relationship (has-many-though) with three classes, with Driver and User classes being related through a Ride class. Thus, a Driver has many Users through a Ride, and vice versa.

The many-to-many relationship between the Driver and User classes

I hadn’t made the connection between relational databases and high-level programming languages until I learned about Object-Relational Mapping (ORM). Each table in a database can be represented as a class, each row in the table can be represented as an instance, each column as an instance attribute, and each cell as an instance attribute’s value.

Thus, one can connect the concepts of many-to-many relationships one may use in OOP with relational database structuring, such that there is an easy shift between the two — OOP and ORM have thus fundamentally changed how I view web development.

Overall, learning web development is liberating as one can yield the tools that run today’s society with a plethora of career paths and educational opportunities that follow, and the lovely syntax of Ruby and the logical formatting of OOP inspire me to continue learning web development.

I hope that this blog post was insightful and can help others along their web development experience!

--

--