Nick Vrvilo '17 learns about interesting projects as a communication coach and software engineer

Computer science alumnus balances coding and communicating at Two Sigma.

Nick Vrvilo

“I met Tracy (Volz) while taking a typical graduate seminar course — the kind where everyone is assigned a paper to read and present to the class,” said Nick Vrvilo ‘17, a Rice University Computer Science Ph.D. alumnus and Software Engineer at Two Sigma.

“Reading good research papers is one way to learn how to better express your own research and ideas, and presenting that content is good practice for grad students. When our professor encouraged us to meet with Tracy for a practice run on our presentations, I was one of the few students in the class who took advantage of that free resource.”

Vrvilo used Volz’s feedback to improve his seminar presentation, and Volz, director of the ACTIVATE Engineering Communication Program, was impressed with his style. She offered him an opportunity to join her coaching program, mentoring other student writers and presenters in the School of Engineering.

He said, “I jumped at the chance, just to receive the additional training I knew Tracy would be offering to the peer coaches. That was a terrific benefit, but I also discovered that the coaching itself was a great opportunity to improve my own presentation skills. There’s a philosophy about learning things better when you teach them to others, and I found it to be true. You can’t say that you’ve mastered a subject until you can explain it to someone with no background in that area.”

In addition to improving his presentation skills, the coaching also exposed Vrvilo to interesting engineering projects outside his own department. Courses like an introductory engineering design class for freshmen and the design capstone for seniors required students to present their projects to their peers at semester’s end.

“Coaching students as they presented their final designs and prototypes felt rewarding for me,” said Vrvilo. “I was able to give them a bit of advice, some feedback on how to better communicate what they accomplished and why it mattered to their audience. And in return, I got to see all the interesting and impactful work they were doing, often in collaboration with community partners.”

Supporting Rice’s engineering summer research exchange program with universities in Japan, Vrvilo coached students on both sides of the program. He helped the Japanese students present their work before leaving Rice and mentored the Rice students on their presentations when they returned from Japan.

“I continued coaching and learning about interesting projects for five years. Then after graduating with my Ph.D., I returned to Rice as an adjunct lecturer, to teach the Functional Programming in Scala course,” he said.

The course had been developed by another Rice CS Ph.D. alumnus, Eric Allen ’03. Allen was a vice president at Two Sigma when he leveraged his expertise in programming languages, Scala, and compilers into a new course for Rice students. When Allen’s increasing managerial responsibilities made it difficult for him to continue teaching the course, he recruited Vrvilo to take his place.

Vrvilo loved to teach and was keen to keep his connections with Rice. He said, “I taught that course for several years and thoroughly enjoyed interacting with students in that class. I would be working as a software engineer at Two Sigma then figuratively change hats on my way to teach at Rice. Obviously, some of the communication basics are the same for software engineers and computer science instructors, but my role as a lecturer allowed me to explore different styles of engagement.

“Of course, I incorporated all of Tracy’s presentation guidelines like minimal text on the slide and leaning into diagrams and pictures. It can be tempting for an instructor to put all their content in the slides and let students print those off as lecture notes, but I avoided dense slides. Since I was teaching a programming course, I also tried to use BeakerX Notebooks instead of slide decks to make the lectures more interactive. BeakerX is an open-source tool released by Two Sigma, which extends Jupyter Notebooks to support additional programming languages such as Scala.

“A notebook is basically a document composed of alternating text and code sections, or cells. You can run each code cell individually. This is particularly helpful for incrementally developing a solution to a non-trivial problem by composing small pieces. Displaying an example of code on the screen, I can run it while the students follow along in their copies of the same notebook, or they can go back to the notebook after the lecture and tweak the code to test their understanding. I’ve always felt that slide decks were an awkward way to present examples of code to students, and so I was very happy to finally find a good alternative to use in my own lectures!”

His appreciation for clear communication continued to grow in the classroom and in the office, where Vrvilo had already recognized that communication skills were critical to success as a software engineer. He said the ability to communicate — with his teammates, stakeholders, and people using the products he developed — gives him more leverage for design decisions.

“If you are able to explain what you are working on, why it is important, and what impact it will have on your users or our company — that ability to communicate value is essential for any engineer. If you cannot communicate why your ideas have value for your organization, there is little chance your suggestions will be incorporated.”

As he has progressed in his role, Vrvilo says he spends more time communicating, and less just writing code. He discovered that senior engineers rely heavily on their communications skills to coordinate efforts across teams, write design documents, propose projects, and work through issues.

He said, “It is important to be able to communicate about what you want to work on, but it is even more important to understand how to talk about a problem you see. When something is causing headaches, even if you don’t have direct ownership of that problem, you should be able to gather data about it, communicate why it is an issue, and state the value that solving the problem will bring to the organization.

“When you can say, ‘This problem means X many engineers spend Y hours per month not being productive,’ that is the way to get resources allocated to solving the problem.”

At Two Sigma, developers work at the intersection of technology and finance to find value by analyzing the world’s data. Working on Two Sigma’s Platform Engineering team, Vrvilo builds software for technical users across the whole company. “Basically, every engineering team at Two Sigma has at least one service running via my team’s platform. We get to work with the people onboarding data, the modeling teams trying out new ideas for predicting the market, corporate teams writing applications that track our trades and positions, and even other Platforms teams building tools that I use on a daily basis.

“My team talks with all of these software engineers working on different problems. We identify common obstacles, and then we make the case to add a new feature to unblock a new use case or make it easier to solve some common problem. In some ways, it’s a bit like coaching those capstone presentations back at Rice. These engineers are working on all of these interesting problems, and I get to do my part to help them make their work even better!”