Creating my first Full Stack Application
Phase 4 brought along an entirely new perspective and slate of challenges as I attempted to create my first full stack application. In this phase, I gained my first exposure to Flask and SQL, and the process of creating my own backend database. Building off of our previous framework, the goal of this phase’s project was to leverage our newfound understanding of Flask and Python with the frontend skills we developed in phase 2. As a result, this phase was arguably the hardest phase as I attempted to tackle new concepts with ones I had learned only a few weeks ago.
Up until this point, our knowledge of fetching information from the front end was limited to the scope of using APIs or replicating such with db.json files in our frontend. With the implementation of Flask, and SQLAlchemy, we began this phase by learning how to create models, or tables, and how to properly structure the relationships between them. Through practices like visualization, drawing out maps of different tables, and logically deconstructing how certain elements should be tied together, the concept of a full stack application became more clear as we manipulated our own backend server to feed our frontend development.
This concept of a full stack application really came to light as we progressed into our projects, which was our first time creating such a product. My group created an application called Joyride, which is designed to connect individuals with common interests who are looking to share transportation to different events and venues. Users are able to create and interact with either Transporter or Passenger posts, in order to interact with each other and find mutually beneficial ways to attend a venue, such as obtaining a ride in exchange for an extra ticket or gas money. Since we wanted potential users to create their own profiles, and host each post to be continuously manipulated by each user, we had to create our backend to handle the proper relationships between each user and post, and create the appropriate routes for our information to be received by our frontend. Throughout this process, it was interesting to learn how we could create our own tables, and use different methods like to_dict() and serialization rules to modify the way our information is displayed in order to create a more controlled manipulation and fetching process for our data.
Creating a full stack application naturally brought a wide array of new problems that I encountered as I progressed throughout my project. My partners and I were exposed to new trains of thought such as the best method to construct our project from start to finish, how we would divide the development of both our front end and back end to ensure that both systems were running and successfully communicating with each other, and more technical aspects like navigating GitHub branches and successfully merging our lines of code while maintaining a working main branch. Due to the recency of these topics, we also faced difficulty in making certain decisions similar to our phase two experience, such as where we should hold certain state values and where our primary fetch of information should be. As a result, aside from the technical and knowledgeable components that gave us trouble, we also gained more insight into the nuances of working with other developers, who might have different insights and ideas, and how to navigate these differences in order to reach a common goal.
Considering that the scope of this bootcamp is to lay the foundation for full stack software engineers, it was interesting to see the several layers and components that go into creating an entire full stack application, regardless of a project's inherent simplicity. While this bootcamp progresses, it is becoming increasingly exciting to see the potential I might have as I continue to add new skills, while honing pre existing ones. As I hoped for in the beginning, I am also noticing a maturity in my logical thinking and deconstructing skills through practice and repetition. Everytime I learn something new, I’ve found myself fixating more on how much more information exists that I don’t know, rather than celebrating the information I’ve newly learned. Yet for the first time, upon completing our very first full stack application, I found it a little easier to appreciate my personal growth. On a more conceptual level, it is also very reassuring to know that it is within my capabilities to construct a full stack application, while understanding the different components, implementations, languages, and flow of well-written code.
Building off of phase four’s group project, phase five is when students are meant to create their own full stack applications for the first time. Although creativity may not be my strong suit, it’s exciting and daunting to consider how I might be able to uniquely utilize the skills I’ve acquired the past 12 weeks to work on a project for my personal interest. Something I’ve always been interested in throughout my career as a “student” is language. Having been raised by parents who came from Korea, my exposure to different languages came at an early age. In kindergarten, my parents were even told I might need ESL as a result of only speaking Korean at home. Although I thankfully caught up in my English skills in my early years of schooling, I maintained my Korean by attending Korean school on Sundays, and also came to study both Spanish and Latin throughout middle school and high school. After losing touch with all these languages for quite awhile, I found myself greatly appreciating whatever information I was able to retain during my time working at a radiology office. As patients from all different backgrounds and nationalities came to our office for no reason other than health concerns, it was warming to see the grateful expression on the faces of people as I attempted to help them in their native tongue if I was able to. Although I was obviously much more successful in English and Korean, even my limited Spanish seemed to make these check in processes so much smoother for patients who often say they come in worried about language barriers. As a result, one idea I have is to leverage all the skills I have acquired into developing a language application. Even though I’ve always struggled to consider myself creative, and to think up unique ideas, I believe there is equal fulfillment in being able to fill a certain void that exists, and could potentially be useful. Without prematurely delving into my ideas, I hope to use my upcoming weeks to look further into how I might successfully construct such an app that uniquely fills a void that I could theoretically implement back in my office in the future.