Paris.rb Conf 2020

Ethics in Software Development

Paris.rb Conf 2020

00:00:10.890 Bonjour Paris.rb! I'm really honored to be here speaking with you. It's been a great event, and I'm really enjoying it. Lots of good talks! Let me introduce myself: my name is Ruan Brandão, a software engineer from São Paulo, Brazil. It's really good to be here. Currently, I’m pursuing a bachelor’s degree in philosophy, so if all goes well, by the end of 2022, I will be a philosopher with a diploma. I’m also an amateur musician; I enjoy playing music to relax, just for fun.
00:00:34.559 You can find me on Twitter at @ruanbrandao, and I’m here to discuss ethics in software development. To start, I’d like to define what I mean when I say the word 'ethics.' My definition here is that ethics is a branch of philosophy that involves systematizing, defending, and recommending concepts of right and wrong conduct.
00:01:03.670 This is a fancy way to say that ethics helps us define what is right and what is wrong. One thing I like to emphasize is that ethics is a branch of philosophy, so I consider this talk to be about philosophy. It may seem a bit unusual to have a philosophy talk at a technology event, but for me, it makes sense. At the end of the day, software is not just about code; it’s more about people.
00:01:38.319 This may seem weird to say, but I like to illustrate my point with an example. Here is a screenshot of The Legend of Zelda: Breath of the Wild, one of my favorite games that won the Game of the Year award in 2017. For me, it’s an exemplary piece of software because it has immersive experiences, beautiful views, good music, and it entertained me for hours. None of the aspects that make me think it’s a great piece of software are about the code itself.
00:02:07.209 I have no idea how the code behind this game works, and I probably never will unless I end up working at the company that made it. My point is that software exists for a reason, and code is just a means to an end. Software exists to solve problems—whether it’s a specific issue for one person or a larger-scale problem affecting many.
00:02:40.560 Software can address developmental issues, product needs, payment processing, or even entertain us. Even when software is considered art, as in the case of the game I mentioned, it exists to meet certain needs that we as human beings have—for instance, our affinity for art.
00:03:02.500 Understanding problems is a crucial skill for being effective software engineers and developers. If we want to solve a problem, we need to understand how it works and how it affects people so we can address it appropriately. This empathetic understanding helps us to recognize the issues that different individuals face.
00:03:38.260 Empathy is essential—not only for the people who use the software we write but also for our co-workers on our teams, ensuring they can understand the code we write. We must also have empathy for ourselves in the future; if we write poor quality code today, we won’t understand it when we revisit it later.
00:04:06.300 Thus, the ability to understand the problems at hand is critical for effective software development. Today, especially, we live in a world where software has enormous impacts on billions of lives daily.
00:04:46.114 If we're writing software that impacts others, we have an ethical responsibility regarding how that software may affect those individuals. We strive to ensure our contributions positively impact the lives of people who use our software, and we must take responsibility when that doesn’t happen.
00:05:13.690 To illustrate this point, let’s consider some examples. Facebook and other companies owned by Facebook have faced significant challenges due to their data usage and the behaviors exhibited by their software. For example, during elections worldwide, platforms like Facebook and WhatsApp played pivotal roles, including in Brazil, where I reside, affecting the political scenario.
00:05:51.060 Another notable example is Volkswagen's Dieselgate scandal, where the company deliberately created software to deceive government emissions tests, allowing cars to emit significantly more pollution than allowed. This software allowed the cars to recognize when they were being tested, altering their emissions output.
00:06:19.970 As a result, many people suffered health issues due to increased pollution, which raised questions about the responsibility of those who write the code. In many cases, especially within large organizations, the individual writing the code may not make decisions about what the code will do.
00:06:48.620 Sometimes, orders come down from team leaders or management, leaving programmers unaware of the broader implications of their work. Even so, we must acknowledge the consequences of our code, as writing software can have legal ramifications.
00:07:10.230 It's essential to understand that something can be legally permissible yet morally wrong and vice versa; different societies hold varying concepts of right and wrong at different times. Hence, if our actions could lead to legal consequences, we must be aware of the risks involved.
00:07:55.400 To make moral assessments about our code, we need to maintain a broad perspective on the software we are creating. For instance, does a piece of code appear morally sound or unsound? It’s challenging to determine this without understanding the project’s larger context.
00:08:40.720 In a practical instance, let’s consider a piece of code related to Volkswagen’s Dieselgate scandal. A quick look at the specific code snippet offers no clarity regarding its ethical standing unless we know the context—what the project aims to achieve and its intended use.
00:09:08.550 As professionals, we must develop awareness of these contextual issues so we can make informed moral decisions about our work. The dilemmas we face today in technology are not new—humans have grappled with ethical dilemmas throughout history.
00:09:42.490 However, today, dilemmas become practical decisions with direct real-world impacts, particularly noticeable in the context of advancements like self-driving cars. This technology presents challenges such as the well-known 'trolley problem,' where software must decide to sacrifice one person to save several others.
00:10:17.930 These ethical challenges are not just theoretical. Self-driving cars may have to confront situations where they must choose the lesser of two evils, such as choosing whether to harm one person over five. As developers, our decisions while programming these algorithms can have monumental consequences.
00:10:57.780 Cathy O'Neil, an American mathematician, states that 'algorithms are opinions embedded in code.' This statement critiques the notion that algorithms are unbiased and neutral, revealing that these systems often carry our biases into the code.
00:11:40.040 Algorithms can wield immense power because one decision can affect millions when automated. The biases we hold can unintentionally infiltrate the algorithms we develop, leading to significant real-world ramifications.
00:12:11.260 To address these issues, we need diverse voices in software development teams to mitigate biases within algorithms. A well-known instance includes an automatic soap dispenser that failed to work for individuals with darker skin tones. This flaw highlights how homogenous teams can overlook significant user experiences.
00:12:43.800 Such issues illustrate how overlooking diverse perspectives can lead to serious real-world consequences. Similar concerns surfaced with autonomous vehicles disproportionately endangering individuals with darker skin due to similar underlying issues.
00:13:14.260 Conclusion: We must foster diversity within tech to effectively address these problems. Diversity is critical; it's not merely a nice-to-have, but a necessity for the industry to thrive. We need varied perspectives to create software that serves everyone fairly.
00:13:39.060 In Brazil, a career in software development serves as a strong pathway for financial and social mobility. The industry offers good salaries and job opportunities, largely free from physical constraints.
00:14:13.650 However, barriers arise when communities do not warmly welcome individuals from diverse backgrounds. Inclusivity will benefit both the industry and those seeking to enter it.
00:14:59.790 My final message is that software is for everybody. I firmly believe that anyone who wishes to pursue a software development career should be able to do so and that everyone should have access to use the software we develop.
00:15:59.570 We, as software development professionals, should ensure this happens. Thank you!
00:16:38.020 I will be available for questions here at the conference today and tomorrow. If anyone has comments, whether you agree or disagree with what I’ve said, please feel free to reach out to me. Let’s talk about it.