After reading Bill Sourour’s article, The code I’m still ashamed of, I realized the importance of being aware of the code I write as a software engineer and the potential effects it can produce. Sourour said, “As developers, we are often one of the last lines of defense against potentially dangerous and unethical practices.” This is not a concern I think about often as a student because the code I write normally affects my grade, and not people’s lives. The perspective I have learned to have about computer programming is on the mechanics of code. My computer science teachers have taught me the mechanics of software engineering — I learn the time and space efficiency of algorithms, the tools to scale and design patterns to make my code reusable, etc. — but I have not systematically heard about the problems it can create, aside from siloed ethics courses. Computer science education and companies that create hardware and software need ethical standards to be taught and practiced.
Stories like Bill’s remind me that code is not just code, once it is deployed it has very real ramifications that affect the wellbeing of others. In his story, he coded a part of a website that recommended a certain drug to teenage girls after they filled out a survey. The algorithm he created disregarded the user’s input to the survey and recommended a specific medicine regardless of input. I wonder if he would have been taught from an early stage in his education that the code he writes affects real people if it would have empowered him to resign earlier. Computer science education still needs some work in areas aside from teaching the mechanics of code. I also wonder if he only did something about it once one of his personal values were at stake — his sister. We need high quality standards that help students think about real world problems more often, and the problems that it can cause. I see the value in this ethics class, but I believe that this idea still needs to be emphasized in computer science intro classes.
Similarly, companies that create software need to follow ethical practices. This is harder to monitor since any given companies technical solution may be closely associated with the mission of the company, where their software is simply the mission materialized. It would be harder to monitor the mission statements of companies, so each engineer needs to simply be aware and ask the tough question, “What harm can my code potentially cause?” Students should be taught to carefully select the company they work for with an ethical framework and not just potential for wages earned, location, size of company, etc.
If each programmer had an ethical awareness that is effectively taught, negative and harmful ramifications caused by lines of code will decrease. By teaching beyond the mechanics of computer programming, each programmer will be able to think before their finger hits the keyboard, or better yet, they will be able to accurately screen companies, or projects before committing to them. Every programmer should be well aware of the problem he or she is solving or causing and therefore a wide perspective needs to be introduced to students at an introductory level stage.