Empowering Businesses: What It’s Like to Intern at Square
Heads up, we’ve moved! If you’d like to continue keeping up with the latest technical content from Square please visit us at our new home https://developer.squareup.com/blog
Square is focused on economic empowerment and making commerce easy. As an engineering intern at Square, I had the opportunity to build impactful features that actually shape sellers’ lives. The company is small enough to provide hands-on problem solving and project ownership, but large enough to support strong mentorship and discussion, in my case with brilliant engineers with impressive backgrounds. I had many opportunities to not only improve my engineering skills, but also influence product decisions, voice my opinions on other projects, learn about the industry, and more.
I worked on the web app for Square Appointments, an online scheduling tool that helps sellers manage their appointments. Imagine a hair salon with multiple locations, numerous employees, varying hours of business, and hundreds of appointments daily. Appointments solves the everyday issues sellers face in managing those logistics, from allowing customers to book reservations online to providing a richly featured calendar app, sending reminder texts to both sellers and customers, and more.
Square gives its interns great responsibility and provides even stronger mentorship. At Square, I was treated as an “engineer” first and foremost, and then as an “intern.” This meant my mentor had me build product improvements and take ownership of many projects over the course of the summer, just like the rest of my team. From others at larger companies, I’ve heard of weeklong onboarding. Our orientation program wrapped up in one and a half days, after which my mentor helped me hit the ground running: I was able to ship several enhancements to Square Appointments in my first week.
One feature I developed was a double-booking warning that sellers now see if they attempt to schedule an appointment that is outside of an employee’s available hours or in conflict with a personal obligation. What was great about building this seemingly simple idea was the collaboration, advice, and feedback loop that comes with iterative development: I iterated closely with my team’s designers and product manager to account for internationalization, and made tough tradeoffs between clarity and performance. From my teammates, I learned to value simple, maintainable code over marginally faster and more complicated solutions.
Something central across the company was the concept of working efficiently. Square’s cultural message was clear to me from week one: the company prioritizes fostering a positive office environment and work-life balance for Squares. Interns enjoyed several excursions outside of the office and, in mid-July, partook in Square’s annual Intern Hack Week — five days to take a step back, collaborate with other interns, and build anything we wanted. Winning teams pitched to Jack and other executives. After work, I could relax in the ninth-floor “Treehouse,” a space for employees to take a breather and play a game or music.
Near the end of my summer, I took on a larger project, a frequently requested feature for Appointments: enabling sellers to customize an employee’s availability to work from week to week. My project’s data model could then be refactored in the future to support other Square products outside of Appointments, such as Employee Management.
There are many steps from inception to a GA release. I needed to design new data models touching all parts of the product, build a responsive and easy-to-use UI, and implement heavy changes across the stack visible to both sellers and their customers. For the UI, my team’s product lead and product manager worked with me to create a seamless experience for sellers to customize staff hours. On the engineering side, I led a design session with other engineers on my team to discuss the data model and architecture for my project. We debated various solutions focusing on simplicity, long-term implications, and compatibility with other related data models in Square’s codebase. My next step was to write an engineering design document and forward it to other teams for feedback across the company. Getting grilled by more experienced engineers sounded intimidating at the outset, but it was a fantastic experience and I considered myself fortunate to get their opinions. This is something I came to love about the company: Squares love to get involved and collaborate with others, and they’re accessible at every level, from individual contributor to executive team member.
Following the design process, there were two weeks to implement the project from scratch. Far from easy, these two weeks of crunch-time were some of the best memories I had at Square. Although the path was filled with obstacles (I won’t look at time zones and Daylight Saving Time the same way ever again), being pushed allowed me to grow significantly as an engineer. Pair programming proved to be a quick, fun way to break past development roadblocks, and my mentor was always there to bounce ideas off. Owning this project from inception and delivering it end to end was a rewarding challenge.
On my second-to-last day at Square, a prospective merchant came in, and I had the opportunity to demo the feature and help pitch Appointments to him. That was the highlight of my summer — as an engineer, I could think of no greater pleasure than seeing people use the feature I helped build.
Special thanks to the Appointments team and every single Square employee for making my summer as incredible as it was!