Grad Spotlight: Joanna Soltys

Soltys is graduating with a combined bachelor’s and master’s degree in computer science

Joanna Soltys

Joanna Soltys found—and built—community at Northwestern.

Serving first as a project team member, then vice president of member development, and this year as co-president, Soltys counts her work with student group Develop + Innovate for Social Change (DISC) among her favorite experiences. DISC hosts a technical workshop series in fall quarter that gets students up to speed on the fundamentals of full-stack web development, then connects groups of students with local non-profits to collaborate over the winter and spring on building and maintaining websites.

Finding fulfillment in mentorship roles, Soltys also volunteered as a peer adviser with Northwestern’s Office of Student Transition Experiences in the Division of Student Affairs to welcome incoming undergraduate students to the University. She also served as a Northwestern Computer Science peer mentor for four quarters, supporting intro course COMP_SCI 111: Fundamentals of Computer Programming I as well as COMP_SCI 208 (214): Data Structures and Algorithms.

“Peer mentoring was incredibly rewarding,” Soltys said. “I got to know a lot more students and faculty in the CS department and could help my peers by breaking down concepts in digestible ways while also strengthening my understanding and ability to communicate key concepts.”

Soltys graduates this month with a combined bachelor’s degree in computer science with a concentration in software engineering and programming languages from the Weinberg College of Arts and Sciences and a master’s degree in computer science from Northwestern Engineering. She reflected on her experiences at Northwestern and shared advice for students.

What inspired you to pursue a degree in computer science at Northwestern?

Thanks to a Girls Who Code chapter and incredibly supportive CS faculty at my high school, I already knew that I was interested in computer science before coming to Northwestern. However, I specifically chose Northwestern because the quarter system and the University’s focus on interdisciplinary studies meant that I could explore CS alongside classes across a wide range of disciplines, cultivating my critical thinking and communication just as much as my technical skills.

Was there a particular course that changed how you think about computer science, or opened a door you didn't expect?

Three courses transformed the way I think about computer science the most and expanded my understanding of what it means to be a great software engineer.

COMP_SCI 330: Human Computer Interaction taught me that design and development are inherently intertwined processes. I realized that development work is wasteful if it doesn’t actually implement a design that addresses the needs and wants of users.

Through COMP_SCI 380: Software Quality Engineering, I learned the thoughtfulness and sheer amount of effort that must go into software for it to be testable, readable, maintainable, and flexible. The best software engineers understand that software projects can’t maintain a great user experience in the long term without a strong foundation for a smooth development experience.

As its title suggests, COMP_SCI 388: Software Engineering Beyond Programming taught me how much more goes into being a great software engineer beyond lines of code. By diving into discussions around topics like documentation, team dynamics, choosing technologies, and backwards compatibility, we cultivated an understanding of what it means to be responsible, ethical, and proactive engineers.

What does “human-centered design" mean to you as a developer, and how has it impacted your approach to coding or building systems?

“Human-centered design” means that every design and development process begins with getting to know the people who will ultimately be using a product and collaborating with them throughout the whole design and development process. Thanks to human-centered design, I build systems with an inherently iterative approach that relies on constant communication and collaboration with users.

What skills or knowledge did you learn in the undergraduate program that you think will stay with you for a lifetime?

Curiosity and adaptability. I was always encouraged to ask questions relentlessly regarding the how, why, who, what, and where of every project. As a result, I first approach problem solving, technical or not, with an open mind founded in curiosity and the willingness to challenge assumptions. Moreover, given that my coursework touched on so many different tools and technologies—oftentimes with the expectation that students learn their way around each tool or language as part of their assignments—I can now much more efficiently adjust to working with new languages or tools. Because of how fast technology is moving now, I know this will be an incredibly valuable skill in both my career and life overall.

What's next?

After graduation, I’ll be staying in Chicago to work as a software engineer at Relativity. In the short term, I’m hoping to cultivate technical expertise working on software engineering teams. In the long term, I’d love to bring my technical expertise to non-technical organizations working for social good. My ultimate goal is being in a position where I can use my technical skills to contribute to a cause I care about and to build tools that help people.

What advice would you give to current or incoming CS students?

Don’t be afraid to explore, to ask lots of questions, and to get involved! Thinking like a computer can feel very different from any way you’ve thought before, so it’s really easy (and completely normal) to feel out of place when first starting out. Being confused, making mistakes, and asking for help are all parts of the learning process. In fact, it’s quite literally what experts do! A big part of growing as a computer scientist is collaborating with others to learn which questions you should be asking, which mistakes to look for, and which times it’s infinitely more helpful to talk to a person (or a trusty rubber duck) about your code than it is to proceed debugging alone. Getting hands-on experience is the fastest way to learn, which also means that the easiest way to find what you’re interested in is to try out a little bit of everything before diving deeper on the topics you want to learn more about.

McCormick News Article