Lessons from My First Internship, the Code+ Program at Duke
Campus Space and Management. That was the name of our group during the Code+ program at Duke, my very first internship. It taught me more than I expected. Not just about code, but about stakeholder relations, trade-offs, and what it actually means to build something useful.
There were four of us developers, two managers, and two stakeholders from Duke Facilities, Jeff and Greg. Our most important resource was the short time we had.
The Problem
In our first meetings with Jeff and Greg, I started to understand what they were dealing with. They had GeoJSON files--Tons of GB--representing every room and floor in campus buildings. But a GeoJSON file is basically just a wall of coordinates and numbers. You open it and you do not see a map, you still have to interpret it or open it in a GIS tool to see the shapes, but there are no insights. No data about occupancy. No information about how spaces were actually being used.
What they had was intuition. They knew class schedules, roughly. They could guess that a room might be busy at certain hours. But the reality was messier than that. Imagine ten people sitting in a giant auditorium, be freezing, because the HVAC system is running full blast for a space designed for hundreds. Or picture a small classroom packed with thirty students, CO₂ levels climbing, everyone warm, but the air conditioning barely on. In the winter, not enough heating. In the summer, too much cooling in the wrong rooms.
Lots of problems. Zero insights. And tons of time spent just to still not know for certain.
We had ten weeks. Four developers, all undergrads, all learning as we went. Time was the constraint that shaped every decision we made. We couldn't build everything, so we had to be smart about what we built first.
We ran Agile. With sprint planning and standups. Front-end and back-end were developed in parallel, and insights from our stakeholder meetings fed directly into the next sprint. Directing them through questions had us through a feedback loop. Jeff and Greg would share with us what mattered most, and we'd thought through it together. Every week, the tool got a little closer to what they actually needed.
What We Built
The original GeoJSON files were static. You got the same view no matter what. Our tool changed that. We built it so that when Jeff or Greg uploaded a GeoPandas-compatible file--or selected a specific room, floor, or building--the visualization would adapt. Different inputs, different outputs. Not just a map with shapes, but a interactive heat map designed for them and their team.
Occupancy data, environmental readings, usage patterns -- all layered on top of the spatial data they already had. Instead of staring at coordinates and guessing, they could finally see what was happening in their buildings.
What I Took Away
I learned that trade-offs are the real work of engineering. The decisions about what to build, what to skip, and what to save for later. With four people and ten weeks, you can't afford to build the wrong thing. And you get the right thing having thougthful conversations with your stakeholders, and being willing to pivot when you learn something new.
I learned that stakeholder conversations are where the actual requirements live. In the moment when Greg says "I just wish I could see which rooms are actually being used"--that's the requirement.
And I learned that a small team, with limited time, can still build something genuinely useful, if they listen well and move with purpose. Could I have done it better? Yes. Could we have allocated more time to a faster Agile loop? Yes. But the greatest takeaway was that we built something that actually made a difference for Jeff and Greg. They could finally see their buildings in a new way, and that was the real win.
Campus Space and Management!