Wrapping it up

15 Dec 2021

Another semester another year, I learned a lot and I also forgot a lot just as fast. Software engineering was no exception either, there are some things I learned from this class that were just more memorable than others.

Personally, I think Software Engineering I (ICS 314) felt more like a web application development course. Excluding the final project module (developing a web app from scratch), there are 22 modules in total. Out of 22 modules, there are 12 modules that focus on web development from UI to testing. Three modules focus on Javascript fundamentals like functional programming and object orientation. Albeit still important, the remaining 7 modules are the ones that goes in one ear and comes out the other for me. Take “Coding Standards” for an example. Coding standard is really just the style your superior wants to see because it’s something they have done for a long time or simply because they are the boss and that’s how they do it so now you have to do it that way as well. There is no one standard that everyone follows, it’s just how your organization wants it to be so everyone is in sync and can understand each other. It’s not that some of these modules aren’t worth learning, I am just pragmatic, I want to learn things that can help me get a job. I have yet to come across an interviewer ask me questions about coding standards or coding ethics because these things are set by them and you just follow. Look at Facebook, highly unethical yet if you get a job there then you are cherry.

It’s not like I didn’t appreciate anything taught in ICS 314, two things that really stuck with me from software engineering is teamwork and project management. I took a higher level course taught by the same professor and it was just pure web app development with classmates. Combined with the experiences from 314, I discovered that everyone has different strengths and weaknesses and different levels of enthusiasm over the period of the project or projects. It’s really important to figure out who is good at doing what right off the bat so you can assign them tasks that they are good at. When you are good at something then you usually will have a higher motivation to do it and will also be more likely to innovate and make it even better than expected. Conversely, if you are assigned to something you do not like doing, then you will most likely view it as a job, and the faster you finish, the faster you can get it over with and say “hey, I did my part”. So, figure out your teammates early on and give them objectives they ask for if you can because work from people who hate their jobs will most likely lack novelty and you honestly cannot blame them.

All of the miscellaneous modules may seem like a waste of time, but I still think they are problems that software engineers will encounter sooner or later. Jobs may not ask you about coding ethics, but if your job makes you feel like you’re doing more harm than good then it’s probably better to leave the company. You are more likely to work in a team rather than building a project all by yourself so learning to manage a project and working with a team is a must. There are a lot more modules I haven’t covered but overall I think the professors message is that software engineering is a multidisciplinary subject and the things we learned can be applied very broadly. So take the time to read the mundane stuff because you will eventually need these skills which can be applied to other aspects of your job or even in your personal life.