My First Year of Software Engineering

17 Dec 2020

Software Engineering

This year I have started taking my first steps into the world of software engineering. I have learned much about the fundamental concepts of software engineering and have worked together with three other classmates to build our very own website. It was fun, but more difficult than I thought it would be. However, it has given me an even greater appreciation for the fundamental concepts I have learned and how to expand on their application.

Coding Standard

Coding on my own, I often overlooked the importance of coding standards, instead focusing more on whether or not the code actually worked. After all, using single or double quotes for strings doesn’t change whether the code works, and going back and changing all the double quotes to single quotes does seem like a waste of time. However, this is simply a result of learning something new. After overcoming the initial hurdle, writing your code according to the standard will become second nature. Of course, you may wonder why even bother? Well the answer to that would be to improve the understandability of your code. Sure you may understand it now, but give it a couple years and you may just be scratching your head, wondering what it is you’re looking at. This is even worse when you want your code to be understandable to other people, whether it be open sourced or your working in a group. In a way, it is similar to grammar. Sure you can write an entire paper like Yoda with all your sentences like “wrote the code, he did” and be understandable, but reading an entire paper in that style would probably give anyone a headache. Both of these improve the readability of what you’re writing, which is undoubtedly useful when you want people to read your work.

Project Management

When we started in groups for our software engineering class, we were heavily encouraged to use Issue Driven Project Management (IDPM). For this specific management style, our group met up twice a week to discuss issues and divide our next three or four days of tasks to do. Each task was documented as a Github issue and placed on a Project Board. Each person performed work on their issue in its own branch, merging them to the master branch every one or two weeks. This was a simple, yet efficient way to manage the project. It ensured that everyone had work to do, didn’t interfere with one another, and documented all the major work performed on the project. After learning about it, I realize that many of the guidelines in IDPM are things that I naturally do for group work. Generalizing the guidelines of IDPM allows it to be applied to more than just computer science. Now anything I have to work on a group project, I have my knowledge about IDPM to fall back on so that it doesn’t turn into a mess.

Work Ethics

The topic of ethics in computer science has become more prevalent lately, especially as it came to light how much information giant tech companies have on people. It has come to the point that companies like Facebook have admitted that they have “shadow accounts” on people and many have realized just how specific ads are tailored to them. There is certainly a fine line between how much information a company can record from their consumers, too much, and one would be able to reverse engineer the person based on the collected information. Ultimately, a lot of the guidelines and standards I learned about can be generalized and applied to multiple things. Don’t take more than needed, don’t harm the users, be transparent in what it is you are doing, etc. No one likes a nosey person, especially if they always go around gossipping that information to other people, while pretending to be innocent. I think that’s where Facebook screwed up, they constantly try to downplay their actions as being smaller than they actually are instead of being upfront about it. In the future I will certainly take care to hold myself to high standards of ethics in both computer science and in my life in general.

Conclucion

This year was a real learning experience, despite the current COVID-19 situation. I have learned a lot about the fundamental concepts of software engineering and I will strive to continuously apply what I have learned to my future coding endeavors as well as my life in general.