I had little expectation before my time in Seattle. I had no idea that the next ten weeks at CBRE Build would bring me some of the most valuable learning experiences I have had thus far…
Imagine being dropped in a city on the other side of a 2500+ mile-wide country at 1 pm on a Sunday. Before even adjusting to the time difference, it’s Monday morning and you are walking into a 30-some floor building’s elevator, surrounded by people many of whom are in suits and button ups. Walking out of floor 18 and being directionally disoriented, you are greeted with a giant, lit-up sign of a fortune 500 company. After a couple 360 degree turns, you see through a glass double door a really cool, animated screen that says “CBRE Build”. You smile with lots of excitement but also feeling anxious as you walk through those doors, and suddenly a wave of energy and really strong coffee scent hit you. The rest is history.
That introduction feels a bit like it could be in an episode of Silicon Valley, but that was my exact experience that I had ten weeks ago before joining the CBRE Build team in Seattle. I had recently finished my sophomore year of college with some experience in software engineering from a prior summer internship at a startup, but I had little expectation before my time in Seattle. I had no idea that the next ten weeks would bring me some of the most valuable learning experiences I have had thus far.
Tribbles, ETL, and A Great Learning Experience
At CBRE Build Seattle, I became part of Tribbles, a team working on the Deal IQ application – a web application aimed to ease the day-to-day activities such as managing financials that brokers deal with (no pun intended). Having little knowledge of the commercial real estate industry, I was introduced to a plethora of terminologies during the first few weeks (still learning more now!) from meetings with different teams and doing some research on my own.
The problem I was solving involved an Extract-Transform-Load (ETL) pipeline that was used in multiple products at CBRE to consume data from the legacy counterpart of Deal IQ called MyTransactionAccounting (MTA). The previous version of ETL was dependent on Django ORM and involved multiple network hops and processing systems, which slowed down the performance and was not very cost effective. The goal was to optimize this process with cleaner, more maintainable code.
Our solution was using PostgreSQL and Python, coupled with multiprocessing. We planned to wrap the pipeline in a Docker container to be ran as a microservice that could benefit multiple applications at Build. With PostgreSQL, we were able to bulk update and only update the fields that were necessary, bringing down the runtime by almost 70%. Using a test-driven development approach, I had written almost 60 unittests by the end of the project.
One of the most valuable parts of the internship was the opportunity to work in a team, learning how people from different backgrounds come together to make decisions effectively. The Agile development process the team adopted allowed me to be productive and knew exactly what acceptance criteria I needed to fulfill as I made progress in my projects. With thorough code reviews, I learned how experienced programmers approach coding style and coming up with multiple solutions to a problem as small as generating random numbers effectively and as big as building a data pipeline. Most importantly, I learned to ask questions, even on topics that I have already learned in school.
As a computer science major and a computer graphics student, the skills and knowledge that I gained are invaluable. Data processing and pipelines are critical to any project in the field, whether it be a map application making use of 3D point data or an image segmentation tool making use of medical imaging data. The internship allowed me to work with a database with complex schemas and relationships used by in-production, user-facing applications. The exposure to full-stack web development is valuable considering that the browser is arguably the primary platform for hosting modern applications (as opposed to desktop and downloadable apps). On Deal IQ, I was able to experience web development from the raw data to the UI layer.
Being A Builder
Everyone is a teacher and a learner
Do you want to talk about ElasticSearch? Bring your questions to DevOps Coffee Hour! Do you have a skill that you’re dire to share? Tech Jam is where it’s at. Want to know more about forecasting using machine learning? Join the machine learning journal club.
At Build Seattle, you will have countless opportunities to grow intellectually and to help others do the same. When I had a question or wanted to learn more about a technology, I had no problem searching for answers, whether it be through booking a meeting for discussion or sitting in on a great presentation. Or simply sending a slack message to one of many slack channels like #dataops, #sea-sre, #sea-engineering, and #sea-front-end (or #baby-animals for frequent cute animal pictures).
Great team bonding
What I remember the most about Build Seattle are the people and the amazing conversations that I got to share with them. Seeing their quality of work, you would never guess that lots of builders are not from a traditional computer science background. Anthropology, geology, geography, fine arts, nursing … just to name a few of the previous involvements of the team members. This diversity to me brings something special to the atmosphere and culture of the office.
We had a great softball tournament with other CBRE offices, spontaneous food trips (for instance going to the grocery store and buying a cart-full worth of Asian snacks), and a pirate tour along Lake Union.
Pirates of the Seattle Build Group.
“I played softball once in junior high, but I got it.”
So, you brought down staging?
If I didn’t break anything, my internship wouldn’t have felt complete. One peaceful morning, I received several slack messages asking me if my recent merge request brought down our staging (pre-production) environment. It was an init file that I forgot to add (read more about Python init files here). With help from my teammates, I was able to resolve the issue. What was special about the incident was that we brought it up in our DevOps Coffee Hour and not only did it bring laughter to everyone in attendance, it also brought up discussions about the robustness of our testing infrastructure. This team is the definition of learn from your mistakes.
With that, I leave Build Seattle with great memories and learning experiences. A big THANK YOU to everyone who made this possible!