In May 2016, after four years at Rice University, Michael Peirce walked out of the Sallyport at the end of commencement with two degrees in computer science and one in math.
Peirce completed his degree requirements for a bachelor’s degree in computer science and also in math within seven semesters, then spent his eighth semester at Rice wrapping up his master’s in computer science.
The first time Peirce considered an advanced degree was in his sophomore year. He said, “I was talking with my CS adviser, John Greiner, about which courses to take. Because I had already accomplished so much for the BA, he mentioned the master’s program.” Having taken COMP 430: Introduction to Database Systems by then, he was able to complete other upper-level classes in his junior year and master’s-level classes in his senior year at Rice.
Although Peirce can easily work through problems on his own, he prefers teamwork and thrives in a collaborative atmosphere. Regarding his summer internships, he said, “Unlike my internship at Microsoft, when I worked at Square I was sitting next to my co-workers. You get to see what other people are working on and you really feel like part of the team. If you need help, they are right there.” In fact, he enjoyed Square so much that he returned to the company as an employee in July.
Peirce’s work while an intern involved sending push notifications to the Square app, which prepared him for a critical role in his final design course, COMP 539: Software Engineering Methodology. Its instructor, Stephen Wong, told the students they needed to organize themselves into roles and teams before launching a semester-long project to develop an app for a global oil and gas client.
“One of my roles was test strategy evangelist,” said Peirce, who was responsible for identifying how multiple teams tested their code. “At Square, I had spent about half my internship testing the code we’d written.”
Peirce’s internship highlighted this important component of good coding practices that is not as emphasized at Rice. He said, “[Testing] isn’t something we spend a lot of time doing in class. We don’t have the same experience – even in COMP 410 – of building a test suite that lives with our code even after we leave.”
In the tech industry, testing new code is critical to ensuring the customer experience is not disrupted when updates are rolled out. “It’s not that some people test and others don’t,” said Peirce. “At Square, we run a large set of tests every time the code base changes. Any time code is checked in that involves those tests, we run my tests (and others) to make sure that the new code doesn’t break what already works.”
Peirce’s own coding habits changed as a result, which is one reason he chose the role of test evangelist for the senior design project. “Once I began writing code at Square, I began writing tests to begin making sure that code was written properly. Every time you write code, you test it.”