Back to Basics

14 Dec 2022

Software Engineering Fundamentals

It has been about three years since I’ve started my computer engineering journey and two years since I took my first programming class. This past semester, I took a software engineering course that renewed my love for coding. This class challenged everything I knew about programming and made me want to learn more. Web application development was one of the major topics that we covered, however it was not the underlying goal of the course, which was to attain experience with fundamental software engineering concepts. The class covered new software engineering concepts and some that I’d seen before, but never fully acknowledged.

In the following sections, I will be talking about some of the fundamental software engineering concepts that I’ve learned over the course of the semester and how they can be applied to more than just web applications.

Development Environments

Integrated Development Environments (IDEs) are software development tools that have advanced capabilities for manipulating source code. These environments are complicated to learn how to use and take time to master. However, once you are skilled with it, you can understand, correct, and improve large software systems faster. Some of the basic features that IDEs have are support for coding, support for testing, and support for refactoring. Support for coding means that it can navigate through the code and ‘quick fix’ facilities when you make a mistake. Support for testing means that you can set up and execute unit tests. Support for refactoring means that you can rename variables, methods, classes, and package names easily. For the past few months, I’ve been learning how to use IntelliJ IDEA. The autofill, error detection, and refactoring facilities made my life so much easier. This IDE allowed me to write code faster and more efficiently.

Coding Standards

Coding standards are a uniform format for software engineers to follow to create cleaner, more readable, more efficient code with minimal errors. Following these standards make it easier for others to understand a programmer’s code without them needing to be there to explain it. It increases efficiency and also helps with the debugging process. Although the fixes that come from these rules have no effect on the functionality of the code, it does make the code more readable. This is very beneficial if you’re working with a team of programmers to get a project done. The other members of your team should be able to understand what you were doing without you being there to explain it to them, which increases overall efficiency.

Agile Project Management

Agile project management is an iterative approach to software development projects. One style of agile project management is called issue driven project management, which involves breaking a project down into a sequence of milestones with each milestone containing a set of issues. These issues are then assigned to members of the project team. This concept ensures that the different aspects of a project are completed in a timely manner and done in a reasonable order. This is beneficial when working on big projects with many team members doing different things. This allows everyone to keep track of what’s being done and what they need to do next.

Going Forward

Understanding how to apply these fundamental concepts to my code allows me to be a better software developer. It pushes me to create clean, efficient code. I know I will continue to use these concepts throughout my computer engineering career.