Joel May - Portfolio

Education Reflection

Iowa State has provided me hands-on experience with coding and project management, which has contributed to my skill as a software engineer. They have provided necessary resources with the hands-on opportunities to guide my education. In addition, they have left some problems open for me to find a solution that I think fits best. I enjoy the problem solving when I have the opportunity. Many of the problem-solving situations that are provided are simplified examples from the real world, which means the skills I gain are applicable to the real world on a larger scale.

Despite some effort to teach ethics, I think Iowa State has unfortunately fallen short on that daunting goal. The ethics activities in classes are often focused around a few large extreme cases, while ignoring the day-to-day small-scale ethics. My set of ethics has remained largely uninfluenced by my education.

Iowa State has attempted to teach group work, but has fallen short of simulating real-world situations. One of the biggest problems they have with simulating group projects is that everyone in the team is studying the same or similar field. Software engineers are forced to be project managers, lawyers, poets, and liaisons. Some of that happens in the real world, but it does not reflect large corporations well. My chosen career path will put me as a software developer with very little business responsibilities. I may eventually work my way up as a project manager or architect, but I will leave most business decisions to others.

In many of my class projects, I have worked with engineering standards. As a software engineer, most of the standards are RFCs for protocols, such as HTTP. I've worked with other documentation, such as a WAVE file specification from another university. In addition to technical documents, I often reference the C and C++ manpages, the Oracle Javadoc, and MSDN's documentation. When using standard libraries, I often reference the official documentation to verify my implementation is correct.

Before starting at Iowa State, I had a desire for learning and assumed it's a lifelong process in my career. Especially by seeing how technology changes rapidly (including the "old and stable", such as C). Iowa State has had no influence on that preconception. Working in a research lab gave me experience of working as a small team with little direct management. Iowa State has nearly discouraged my enjoyment of lifelong learning by a few classes and general education classes. There are certain classes (such as Com S 230 and SE 329 & SE 339), which have been quite abstract and irrelevant to my chosen career. I was not engaged in the classes and think I could have spent my time better.

I often try to learn things that are applicable to the real-world within their correct context. I can apply most concepts to new problems without any difficulty. My career is solving problems, new and old, with my existing and newly learned skills. Working in security, I am very cautious about risks. Pressure can lead to buggy code with exploits, which is my responsibility to avoid.

If I were to do my undergraduate education again, I would keep the core mostly the same. I would lighten up the general educations classes very much. I would omit chemistry completely; it does not apply to software engineering. I would lighten up the physics requirement to a much smaller course. Many general education classes would be half semester classes, rather than full semester. I would try to avoid the theoretical classes that don’t apply well, such as Com S 230, SE 329, and SE 339.

General Education Reflection

List of General Education Classes

Impact on Engineering Education

My short-term career goal is to get a job writing low level software at a large software/firmware corporation. I had a summer internship at HP Inc., and will likely end up starting my working career there. I plan to specialize in networking and IPv6. My long-term goal is to be a skilled and specialized developer at a large software/firmware corporation. I may do some project management, but I want to write code until I retire.

Economics 101 is the most relevant general education class I took for engineering. I doubt I'll be able to apply any of the economic concepts in my career directly, but I may see evidence of people in other roles applying those concept, which may impact my work. I do not plan or strongly desire to be in a role where I’m making business decisions that require economic analysis. I can apply some of the economic concepts I learned from the course to my personal life, though.

Technology and Social Change 220 had interesting content about sustainability and ethics, but as a software engineer many of those do not apply to me. Even if I can make business decisions, many of them will be regarding detailed software and firmware characteristics, having a negligible effect to sustainability. The class brought up some ethical dilemmas that we practiced reasoning out, which is a skill I may need to use in the future.

Music 102, Music 304, and Sociology did not help my engineering problem solving ability. I learned to appreciate and understand music. I learned about some characteristics human behavior in certain contexts, but not in relevant context of people using software that I have developed.

I do not think any of the general education classes have helped my see much beyond the engineering solution. The engineering problems I'm faced with are to write code to implement a specific functionality. My work is very clear-cut and there’s little room or need for "seeing beyond" my solution. The one thing that may make me work better with large decision makers may be the economics education. I may be able to comprehend and accept their choices by having a general economics education.

Engineering Problem

An engineering problem I've heard about in the real world is collaboration. Many teams are dysfunctional and inefficient because of poor meshing of teams. In my time at Iowa State, I have been on various team projects and have experienced good and poor team collaboration. Much of being a good team member is experience and knowing the signs of potential problems before they manifest. I feel prepared to be a good team member and watch for warning signs of poor group dynamics in the workplace.

Ethics Essay on Volkswagen

If I were a software engineer at Volkswagen and told to create the software to cheat on the emissions, my decision would depend on a few factors. It would be possible for management to hide the goal from most software engineers and have a small group combine all the components. If I were asked to create a method to determine emission test conditions, I would do that without concern, if I were not aware of its intended deceptive use. Likewise, if I were asked to create an emission control system, I would not be suspicious and develop it. The situation I would have a real dilemma is if I were aware of the context or told to marry the two systems. I cannot say with confidence what I would do in that situation; but I think I would initially try to avoid taking on those projects without raising a fuss. If I were told I must do it, I would like to think I'd risk my career by directly refusing the assignment or quitting my job.

I think the Volkswagen engineers did what they did because blurred lines. True black and white rarely exists in ethics. I think the engineers first convinced themselves that it was ethical, then affirmed it by looking to coworkers and management in the same situation. Each person may have rationalized it in a different way, such as assuming they won't get caught, going with the crowd, bending the laws, or claiming ignorance.

I personally have been put in a similar situation on a smaller scale. As part of my job with point of sale systems, I was asked to add a component for cheating on taxes. As a true engineer, I at first saw a puzzle and wanted to solve it. I wrote the code and started testing without thinking about the ethical implications. When it nearly completed I asked myself what I was doing. I considered that I even if the tool were discovered, I would not be held liable, because I wasn't evading taxes myself. There were a few layers that would make it unlikely for me to be discovered as the author. I also considered that my employer would be disappointed if I backed out of making the tool that he and the client had no ethical concern. In the end, I did back out the project, deleted the code, and kept my job for a while, until I declined to sign an aggressive non-compete agreement. I am proud of my decision and hope I can make similar ethical decisions when the stakes are higher.

©2017 Joel May