The More Reflective You Are, the More Effective You Are

13 May 2022

Change is Scary

Change. That’s a scary word. Ever since I turned 18, life’s been a blur of constant readjusting and adapting from one situation to the next. I’ve been thrust into college, being an adult, learning to drive, and taking on more responsibilities in my church, it’s been hectic. Now that I’ve finished my sophomore year in college, I’ve begun to think and reflect on how far I’ve come and where I should go next. This line of thinking goes hand in hand with my current dilemma, what do I want to do with my life? I know I want to pursue something in the computer science field but I’ve had the longest and hardest time trying to decide what. Now that I’ve finished my software engineering class, I’ve decided to take the time to sit and reflect on what I’ve learned and where it’ll take me. As I look back on the past and present, I’d like to look towards the future.

.../images/future.jpg

Beyond The Code

My biggest takeaways from my software engineering class have nothing to do with actual code. Something I’ve come to realize over the course of this semester is that there’s so much more to a computer science degree than learning how to code. I’ve learned that you have to learn how to effectively collaborate and communicate with others. There’s also a lot more creativity involved with coding than I originally thought. Not only can you put your creativity to work when trying to design a webpage or app, you also use it during the development process. Unlike math, there is no one right answer so there are technically endless ways you can come up with solutions to problems. Another big takeaway for me was learning of the reality of needing ethics in software engineering. In this day and age of technology and the internet, talking about issues such as privacy and online harassment is as important now as ever. What I’ve taken away from this class is more than the technical skills of learning a new language or how the backend of a website works; it’s opening my eyes to what it really means to pursue a degree in this community.

Doing Things the Agile Way

Work smarter, not harder. This is especially true when referring to how to manage a group project. I’ve done countless group projects, both in school and out. They always ended up following the same tiring procedure: you meet with the group once in the beginning, exchange numbers, and then pester one another to do their share until the due date. This is why I’ve always hated group projects, they’re needlessly tedious and most times would be easier if done alone. That was until I learned about agile project management.

For our final project for my software engineering class, we had a group project where we had to build a website with functionality that specifically helped students on our campus. When I learned at the beginning of the class that the final was a group project, I began to dread it. Once again, I would have to struggle my way through another group project. However, part of the pedagogy for the class was to implement agile project management when doing our final project. Who knew that this would change the game for me.

Issue-driven project management is a type of agile project management that is best utilized for small teams and projects of “web app” grade quality. The basic approach was to divide the work into tasks that would take about 3 days to complete, and then have 2 meetings a week to replenish new tasks that should be done before the next meeting. Then, every 7-10 days, there should be a milestone, something concrete that can be presented that shows some level of progress was made. This type of system made delegating work easy and forced us to steadily make good amounts of progress throughout the entire project period. Anytime in the future where I need to work in a similar setting, I’m definitely going to use this type of system. Setting short term goals that build up to long term ones is nothing new but having an idea of specific times to make said goals and implementing a system that enforces their completion is such a helpful tool I’ll use in future projects.

The Tipping of the Scale

Coming into my software engineering class, I had no idea ethics had anything to do with computer science. That’s something reserved for english and history classes right? Wrong. Ethics are a part of any job, especially in computer science with the rise of technology. We read articles and readings about various ethical dilemmas such as ‘how should a self-driving car determine who to kill in a crash’ and ‘making a program that ends up being used for promoting dangerous drugs’. These were scenarios I never stopped to think about but should since these are all very real and very applicable scenarios to anyone who programs.

The last day of my software engineering class had us debate on the ethics of the following prompt:

Now, assume that you work at WatchMe Inc as a software engineer. You have just been assigned to work on the GetFace system, which is a facial recognition system that WatchMe is marketing to law enforcement agencies across the country. You have discovered that the project does not observe several of the guidelines proposed by the ACLU to ensure ethical use of the technology. Specifically:

We were randomly given a side to debate for and I was put in the group that was required to argue that it was ethical to work on this system. Right off the bat, I thought this was completely unfair to us. How could we argue that this was ethical? Who in their right mind would argue to work on something like this? As the debate went on and I discussed it with my peers, I realized this isn’t really as simple as it seems at first glance. Is it the responsibility of the employee to ensure the ethics of a company’s projects? Would the most ethical decision be to leave the project when you’ll just be replaced by someone else? Won’t the cycle just continue? Having to sit down and seriously debate for the “opposing” side made me realize that the morality of one’s action as a programmer isn’t as clear cut as it seems.