From Nine Months to Two Years:

Kyla Oyamot
7 min readApr 29, 2021

I feel like I’ve been here before. But this time it’s different. This is the actual end of my beginning. This time, I knew what to expect. This time, for the first time, I am confident in my communication skills, and especially my technical skills.

I have been enrolled in Lambda School for two years now. What was supposed to be a nine month program in User Experience Design turned into a wondrous transition to Web Development. Although my journey has been long, I feel in my bones, I am exactly where I am supposed to be. My 5th round of Labs.

For the last eight weeks, I have had the privilege of working on a cross-functional team to create new features for a pre-existing, data driven application called CitySpire. The team consisted of 2 iOS Developers, 4 Data Scientists and 4 Web developers including myself.

CitySpire aims to ease the pain of often having to go to multiple sources to find enough information on a city a user is interested in moving to. CitySpire provides data like rental and housing prices, air quality index, walkability score, daily and monthly weather forecast, and so much more. CitySpire also provides a livability score based on data pertaining to that city.

What’s under the hood?

When entering the project initially, I will admit I was a little intimidated. The original team structured the repository a little differently than I normally do, I wasn’t as familiar with testing as I should be, the project uses Ant.Design, which I knew of, and had designed within Figma, but have never implemented in code before. So I spent the first week of the project getting familiar with the ins and outs of CitySpire.

I was also worried about meeting my team members. I wondered things like: “Will they like me?” “Will I be able to contribute?” “What if they get upset if I ask for help?” “Will everyone show up?” “I hope they like to work together.”

Upon meeting my team, I felt immediate relief. I worked closely with all of them, and we Zoomed and pair-programmed with each other nearly every day. I learned so much from them, as I have tried to show them some tips and tricks myself.

The first thing we did as a team was figure out the tech stack, and spoke about what we brought as individuals to the team.

CitySpire is a React web application that uses Redux for state management. Frontend has been deployed using AWS. The database is a PostgreSQL relational database deployed on Heroku and is built using Node.js, Express, and Knex.

A small change for a big impact

Thinking about the user, one thing that really stuck out like a sore thumb was the search feature. It required users to type in the city and state, then press the search button. It sounds simple enough, right?

Upon further inspection of the search feature, I discovered a major flaw in the logic. The input expects the user to type in the name of the city, a comma, a space, followed by the city’s state. If the user does not follow these rules, a 404 not found page is received.

The reason for the specific rules is because of this function:

Another thing I realized is that users are also expected to spell city correctly, and only use the two letter abbreviation for the state instead of spelling it out, or they will also get the 404 not found page.

The reason the search has to be so specific is because the Data Science endpoint requires {city: “New York”, state: “NY”} in order to return results.

“Why is it our users’ responsibility to make sure they compensate for our limitations?” This was my immediate response to this pain point. With this thought, I went to work. I brainstormed over the various ways to solve this problem: Use a spell check? Find an API that displays every city in the country? Display all cities that are similar to the misspelled city? I didn’t necessarily want to use a separate package, or an outside API. I wanted to use the information that we had already available to us. This led me to the idea of asking my Data Science teammates to create a get endpoint that returns all cities, I also created an object of a list of all abbreviations of the 50 states. Then, using Ant.Design’s Autocomplete feature to guide users to the correct format that the endpoint requires.

Originally, I did not take into consideration that many cities from different states share the same name, which made the data that was received from the Data Science endpoint very, very large.

This caused the Autocomplete to bug out from so many of the same suggestions. I circumnavigated this by using filter():

After mapping out each unique city, Autocomplete worked beautifully. Then, using the object of states, I used a Select component from Ant.Design to create a drop down. Now, users no longer have to think about how to enter the state correctly, and they also understand that city and state are required.

If only I had more time

Although the feature above did not take 8 weeks to implement, it is what I am most proud of. I also was able to work on the backend on the favorites endpoint, and created a more personal user dashboard.

I feel like time flew by, and I’m not quite ready to quit yet. But alas, all good things must come to an end. My takeaway from this experience is overall positive. I overcame a few personal adversities, and we did lose a team member toward the end, but the teamwork and communication my team had through all disciplines was amazing. It honestly kept me going. While I am not satisfied with the amount of work I got done, I feel my contributions to this project has made this application a little easier for users to navigate.

Altogether, my cross-functional team was able to ship a fully functional iOS app:

Make necessary changes the the UI and make it responsive:

Improve search functionality(as seen above), and create a personalized user dashboard:

Data Science also made great strides adding many new endpoints for future developers to access:

Looking forward

I think the future of the product is bright, especially with the new endpoints that have been added by our talented Data Scientists. Future features could include adding more functionality to the user dashboard, using graphs to utilize the visualization endpoints provided by the Data Science team.

Technical challenges I foresee future teams may have will primarily be with the backend. Currently, there are synching issues with the IDs and creating favorites. While it works, it was discovered that it has to do with either the migrations or seeds. Sadly, my team ran out of time before we were able to fix it.

What now?

For once in my life I look to the future with confidence in my skills. And am grateful for my experience during these last 8 weeks. The engineers I worked with have been amazing and hard working. After taking a few days to reflect, this project has done a few things for me:

  1. It has shown that my Lambda School education has empowered me to become an excellent Web Developer.
  2. I love working on a team.
  3. I don’t mind when people look to me for direction.
  4. It has helped to grow my confidence not only as a developer, but also as a communicator and team member.

--

--