Carleton SWE Externship Experience: CarlPool

A carpooling app designed for Carleton students
INTRODUCTION
In two weeks, I collaborated with Carleton students with alumni guidance working on an invaluable project that addresses a pressing need of students on campus without a car or reliable Uber/Lyft. We proposed a solution to coordinate carpooling, making transportation more accessible and cost-effective.
PROJECT SELECTION
On the first day, our mentors Isaac Haseley and Kevin Christianson helped us define our project by allowing us to develop meaningful problems and solutions. My teammates Hudson Purdy and Raaid Iqbal and I brainstormed several problem statements following the template: “As a [persona], in a [circumstance], I need [need] so that I can [outcome].” Then, we evaluated what makes a “good” problem and solution. A good problem is real, consequential, and inspiring. A good solution is valuable, usable, and unique. Finally, we voted on the top five relevant issues; and carpooling was selected.
DESIGN PHASE
After defining the problem, we tackled the design process of deciding our project’s type of application, layout, and core functionality. We also had to analyze the tradeoffs between frontend, backend, and database choices, as well as understand how these systems interact with each other. For example, I researched the pros and cons of using React versus raw JavaScript for web app development, and Swift versus React Native for mobile app development. Then, I weighed the options and recommended the optimal ones based on the skills and goals of our team.
Based on the feedback from our mentors, our team decided to use React for the frontend, Flask for the backend, host the web app on Vercel, and utilize Azure Database for PostgreSQL. Because of our short time, we hoped to learn new tools with which we were familiar with the programming languages; React uses JavaScript to display UI components and Flask uses Python to create RESTful APIs.
PLANNING PHASE
Kevin explained a couple of techniques software engineering teams use to manage projects. One effective approach is agile planning, where teams deliver small, incremental product iterations and gather feedback before moving on to more complex features. This helps ensure the final product aligns with client expectations and reduces the risk of developing features that may not meet their needs. For example, if our goal is to build a car, one way is to assemble all the components – wheels, engine, seats – into the final product. Alternatively, we could start with a simpler solution, like a skateboard, which gets us from point A to point B but may not be as efficient. From there, we could iteratively improve by first creating a scooter, then a bike, and eventually a car.
We structured our two-week timeline into two sprints, focusing on achievable tasks to ensure steady progress. By prioritizing key deliverables, we aimed to accumulate and present a functional MVP by the end of the externship. My first task was to create the initial design of our React app, I followed the mocks to lay down the buttons and space needed for the core features.
CHALLENGES
We had daily standups with our mentors to demonstrate our progress and receive feedback before moving on to the next iteration. These meetings were useful because we learned from each other about the technologies we were working on.
Since I was in charge of the frontend, I had five main buttons functioning: a ‘New Request’ button that displays a form allowing the user to request a ride by inputting their contact information, departure time and location, destination, required seats, and offer per seat; a ‘New Availability’ button that follows a similar format to the ‘New Request’ button but it is for the user to offer a ride; a ‘Requesting rides’ tab button that features all the requested rides by users; a ‘Offering rides’ tab button that shows all the offered rides; and a ‘Log in’ button that uses Google OAuth.
Due to time constraints, we could not fully integrate the frontend and backend to save user information and provide users with more functions. For example, we have a ‘Delete’ button for user’s posts, allowing them to delete their posts. However, we could not get that button to work, the post would reappear shortly after reloading the page. After the externship, we planned to continue working on the app to fix the ‘Delete’ button and add new features such as ride filtering, displaying only user posts, and enabling users to edit their posts.
Here is a link to our web app: https://externship2024.vercel.app/
