By Joe Linstroth

Software development is not just about code and functionality. The process also requires a human-centered approach that relies on collaboration and communication. When Joslenne Peña, assistant professor of mathematics, statistics, and computer science, teaches “Software Design and Development,” she takes great care to ensure that students understand that empathy and inclusiveness are just as crucial to developing the next great piece of software as knowing Python and JavaScript.

You describe creating software as both an art and a craft. What do you mean by that?

Generally, people don’t tend to think about creating software as an art and a craft, not just in the finished product but also in the process. In the class, we try to emphasize that the design process—the ideation, the brainstorming—is really important. And in each step, you have a lot of agency and autonomy independently but also in collaboration with other people, like the stakeholders for whom you’re actually building the software.

In the course, you divide students into teams that each come up with an idea for a software project and then implement it. How do these longer-term projects differ from more garden-variety homework assignments?

What really sets this course apart is that it is a semester-long project where the instructor is really just a facilitator. The other difference is that we don’t tell students what to do or what project to choose, which is why I think it’s really rewarding at the end when they’re finished. We don’t lecture, and there is no homework besides just reading up on software techniques and tools and having discussions about what makes software collaborative and impactful. Students are not used to having a class where it’s a free-for-all, but it’s a great learning experience because in industry, I’m not going to be there and someone’s going to give you a task and they’re not going to tell you what to do. You have to figure it out and ask questions.

What makes a new software product a success in your view?

It depends on the problem you’re trying to solve and on who the audience is. I also think it depends on the process, like what happened between A and B, from the conceptualization of an idea to when it’s actually completed and released. Was there careful thought and consideration throughout the entire software engineering life cycle? Did you actively talk to community partners and stakeholders and not assume the user’s needs? That is a big thing.

The second part I’ll throw in there is consideration for things like reducing and preventing harm. A lot of software that gets put out into the world is harmful to people, whether we’re talking about surveillance apps or apps that include some form of AI that hasn’t been ethically considered in some way. If there’s a level of consideration for social justice and ethical issues, that’s important. Hopefully the products that get released will actually be effective, but also show some humanity too.

What aspects of designing new software tend to challenge students the most?

A big part of the class is about team dynamics, conflict resolution, and communication. The big learning piece of this class often isn’t really the technology or the software, or even the building and programming of it, it’s the human aspect. You can’t build good software without talking to other people. We put them into teams because that’s what they’re going to experience in the real world, and navigating team conflicts and getting consensus are some of the most challenging parts. What does it mean to have a productive meeting and to move forward on tasks? I think students often struggle with communication and coming to a consensus about a project idea and the best approach.

Your work as a computer science researcher focuses on understanding how to solve design and computing problems through the lens of the user. Is there an example that comes to mind from your career that crystallizes this importance for you?

An example I like to share is that my last name, Peña, has a tilde over the “n.” It’s a special character, and many computer systems and apps do not recognize my last name with that tilde. It will actually say there’s an error or that it’s unrecognized. One of my diplomas didn’t have it, and I had to contact the registrar to let them know that it’s a part of my last name. I make that connection to tell students that this is what happens sometimes when you are building something and you don’t have the foresight to think that other people have last names with tildes or other special characters. Something as small as that doesn’t seem like a big deal, but it is to certain people when it feels like you’re erasing their identity. This is what happens when you build software without talking to people and collaborating and making sure you are intentional about inclusivity.

Joe Linstroth is director of media relations at Macalester.

August 26 2024

Back to top