Stacking Up the Software

18 Dec 2019

stack


Software engineering isn’t just about writing in a single language like many early coders believe when they begin college or a coding boot camp. Some of us might remember writing our very first hello world program in Java and naively thinking that creating programs was a simple process. However, we’ve all eventually realized that most applications are not that black-and-white. There are many methodologies and technologies such as agile project management and user-interface frameworks that are stacked together to create functional and convenient software for users.

It All Works Together

Software–especially web applications–depend on many different technologies that need to work together. Creating a website requires more than just some markup on the browser page. They often require frameworks, third-party libraries, multiple languages, a database, and many other components that need to talk to each other to form a functional website. They all contribute towards the goal of presenting a workable application to users. A technology stack is an unfamiliar concept to those that are still in the early stages of programming. However, it’s a crucial aspect of software engineering that all coders should familiarize themselves with in order to create effective web applications. Without a user-interface framework such as Semantic-UI or Bootstrap, an application may often fail to properly display on mobile devices. Without a database, an application wouldn’t be able to effectively store and retrieve data. All these components serve an important purpose towards the overall application. However, technology stacks don’t only exist for web applications. Many other software engineering domains such as native application development may be dependent on technology stacks. For example, a native program that I developed for a telescope system relies on several technologies such as SSH, bash scripting, third-party libraries, and HTTP. Everything works together to create a functional program. If any layer of the stack is removed, then the overall application begins to falter.

Managing Collaboration

Software engineering isn’t always an independent role. Software projects are often worked on by several different developers. The work can be hectic, but agile project management is an important principle in software engineering that helps manage the development process. Agile project management is a specific methodology that focuses on iterative development with requirements and ideas that may consistently change. The methodology is really useful in practice because it helps keep development dynamic with room for the team to easily adapt the code to the users’ needs. A specific style of the agile methodology that we learned about is issue driven project management. This style partitions the project’s development into feasible issues that can be easily assigned among team members. Issue driven project management would be really helpful with managing large projects such as developing a new distribution of Linux. It helps organize the work among several developers and avoid the possibility of chaos. With these methodologies, software engineering becomes much more manageable.

Working with Frameworks

The users’ perspective is the most important view for a software engineer. The way that an application is presented ties everything together. However, creating user interfaces is often challenging with pure CSS. As a result, user-interface frameworks such as Semantic-UI and Bootstrap are the lifeblood of front-end development. It allows software engineers to rapidly develop interfaces that are aesthetically pleasing and completely functional. Without them, it would take a decade to create a simple navigation bar that works on multiple platforms. UI frameworks removes the need to manually create and design beautiful interfaces. Furthermore, UI frameworks and toolkits are useful for other domains such as native application development. For example, the Qt toolkit helps quickly create GUI components for Python programs. Without GUI toolkits and frameworks, creating a basic scrollbar can take ages. Creating user interfaces is a large aspect of software engineering because it defines how the users interact with the application. Frameworks and toolkits allow software engineers to productively create them to form a usable program for users.

Final Thoughts

Software engineering is a complex domain for those pursuing computer science. Stacking methodologies and technologies such as agile project management and UI frameworks can make software engineering an easier endeavor. Creating full-fledged software is a difficult process for developers of any level of expertise, but these aspects of software engineering help make our lives easier.