Setting the Foundations as a Software Engineer

10 May 2023

Civil and structural engineers go through college in hopes of learning how to make sure our buildings and roadways are structurally sound. With a strong foundation, it’s possible to have large buildings that can withstand the forces of nature. Similarly, it is important to build our skills as potential engineers so that we can beneficially impact the world we live in. Through ICS 314, software engineering, I’ve picked up a few important skills that helped me build my foundation as a future software engineer.

Coding Standards

Coding standards are “rules” that programmers follow so that there is a common theme when coding. It can be thought of as a metric system in the scientific community so that mistakes are avoided when collaborating with others internationally. Coding standards are important for software engineers because companies often want cohesive code that makes sense to other programmers looking at the code. Imagine you are trying to fix a mechanical part and the instructions left by the person who previously worked on it were confusing and incohesive. It would be difficult to understand and replicate fixing that problem. In the same way, employers wouldn’t want to hire a software engineer who wrote messy code with no documentation or comments because the person who needs to fix or take over the code will be left in a haze of confusion.

Agile Project Management

Agile project management deals with the ability to handle and organize teams while working on projects. This includes coordinating teams, planning out the project timeline/steps, and issue management. In many career fields, working in a team is usually a must, therefore agile project management is a versatile skill to learn. Managing a team can be tough, there are different opinions, views, availabilities, etc., but the ability to come through and work together is a highly valued trait in life. Through the experiences I’ve had in ICS 314, I’ve learned a lot about getting a handle on others’ views, feelings, and finding compromises between opposing views. Issue-driven project management is also useful in big projects because it’s like a big to-do list that the group can collectively work on. No matter what task in life, it’s always helpful to be organized, build interpersonal relationships, and take on/discuss tasks that need to be accomplished in order to achieve our goals.

Ethical Considerations

Arguably one of the most important concepts we’ve learned about in ICS 314 is the ethics regarding what we do. In the end, the things we produce are for the benefit of the users, or society as a whole. Because of this, the things we code eventually end up directly affecting people, and we then need to think about the consequences of our actions. Having an ethical conversation needs to be brought up on the products we would like to put out because we must argue that the effects of our work will overall do good in the world. Rather than thinking about a specific population, or strictly the monetary gain that would be a result of our actions, it’s important to consider if we are on the right side or wrong side of history.

Conclusion

Overall, there are a lot of aspects to consider and work through when working on a software engineering project, or any kind of project for that matter. The outcome of these projects heavily depends on the foundations you’ve already built… if it is reliable, your result will be strong and beautiful.