The Fundamentals of Software Engineering

13 Dec 2023

Introduction

Over half a century after its inception, software engineering has become a large field, encompassing many different subjects, and utilizing many different concepts. Though there are many different aspects to it, each with varying importance, I have recently found that some of the most vital elements of software engineering are actually more about the setup and specific “way” you decide to do things rather than the coding itself. In this essay particularly, I will cover concepts such as the development environment, coding standards, and frameworks, though there are many more that are equally or more important.

Development Environment

A development environment consists of the workspace/tools (environment) that you use while creating (developing) a piece of software. In most scenarios, this manifests in an application where you can write and test your code, known as an Integrated Development Environment (IDE), which is what I will mainly focus on for this section. I find the choice of IDE to be quite impactful, as they are the environment where you will be spending all your time, with each having its own features and layout. By choosing the correct IDE for you and learning to use its features, you can spend more time working on the actual code itself rather than trying to figure out how to accomplish certain things or searching for files, etc.

Personally, the IDE I have been using most recently (for web development) is Intellij, though I have certainly used others in the past, mostly dependent on what the class I was taking required. As of present, I’m not entirely sure what kind of development lies in my immediate future, but I’m tentatively alright with using Intellij, since it is both familiar and also fairly well laid out and useful. However, if I do decide to change IDEs in the future, I will be sure to take the time and ensure that it’s the right choice for the project.

Coding Standards

Another, perhaps less obvious factor in software development is the use of coding standards. Coding standards are, similar to development environments, quite self explanatory. That is, they are guidelines and rules for how your code is written, making sure that it is structured in a neat and consistent way. This may sound somewhat annoying at first, but they do help, not just to make sure the code is written correctly, but also to make sure that your code remains readable and understandable for future developers/developments. In my personal experience, I usually haven’t utilized coding standards that much. Recently, though, I have been using ESLint when writing Javascript, and it’s been fairly useful, at least in making the code much neater than it may have otherwise been. In future projects, I would definitely consider using them for that reason.

User Interface Frameworks

The final concept I will be discussing is user interface frameworks, which are installable libraries that help you to create the frontend of your application, simplifying tasks which might otherwise be quite complicated. For instance, you might use the UI framework Bootstrap, to help you more easily position elements the way that you want them to be, using rows and columns instead of tediously trying to use pure css. As you can imagine, using these frameworks can help you a great deal, lowering development time tremendously with the variety of utilities that are provided. I will certainly continue to utilize user interface frameworks, as they have been very useful so far. For web development I will likely use them, perhaps the ones I am familiar with such as Bootstrap, React, Meteor, etc. For other projects, their usefulness may vary, but I will probably use them if necessary.

Conclusion

To conclude, there are many important sides to software engineering, only a handful of which I have covered. However, those that I have covered, development environments, coding standards, and user interface frameworks, are nonetheless quite important. The environment in which you choose to do your work, the standards you follow while writing code, and the frameworks you use to help you all affect the outcome of your projects, and I will certainly keep this in mind as I continue developing software in the future.