A Rabbit Hole

20 Dec 2024

Much more than meets the eye

When we look at a website or an application on our phones or laptops, it doesn’t seem like much. Just a page that displays information about products, companies, games, etc., with links to other pages. It seems so simple because it is displayed simply. However, once you learn about the software aspects, and then try to build one yourself, it is not so simple anymore. The structure of the page itself with raw HTML takes hundreds of lines of code. Then we add CSS to make it visually appealing. Add in a database and some functions, that’s several hundred more lines of code. To make website building easier, we introduce templates like the Nextjs template, frameworks such as Bootstrap and Nextjs, Javascript libraries such as react, relational database management systems like PostgreSQL, and what first appears to be a straightforward application, turns out to be an endless rabbit hole of information and possibilities.

User Interface Frameworks and Libraries

Without frameworks, software development would be exponentially harder. Coding with raw HTML, CSS, and JavaScript is difficult and annoying. Especially since every element on the page will require lines and lines of code of CSS and Javascript—if interactive features are a necessity. Once we introduce frameworks like Bootstrap, Nextjs and libraries such as React, the coding becomes much easier to do and look at. First off, we have less lines of code. In raw HTML and CSS, to get a nice padded container, we would start off with a div and give it a classname. Then, in the CSS portion, add the margins and padding. However, in React-Bootstrap, all that we need to do is type ‘Container’. There are hundreds of built-in features in frameworks such as Bootstrap that make coding more straightforward. Another advantage of less code is less debugging. Let’s say we have a web page with 150 total lines of code in HTML and CSS. Now, this same page has only 60 lines of code in React-Bootstrap. If we were to have an issue with the code, searching through 60 lines of code is a lot easier than 150. This is just one example of a framework that makes coding easier. Bootstrap is also just one option out of the thousands that exist. Each aspect of coding has its own framework that turns several lines of code into a few. Learning about these frameworks and libraries really opens your eyes to the tools that you have at your disposal as a software developer. Once you master using these tools, creating web pages and applications become exponentially easier.

Agile Project Management

Another important aspect surrounding software engineering is project management. Being able to code is definitely essential in developing software. However, working together in teams efficiently is just as important. Projects are rarely done individually unless they are small projects or minor tasks. When working with others it can be easy to lose track of who is doing what, confuse one branch with another branch, miscommunications amongst the team, and missing deadlines. This is where Agile project management shines. According to IDPM guidelines on the agile project management, this process contains multiple strategies built for success: meeting at least twice a week, divide work into 72 hour tasks, document each task on Github as an issue, perform work associated with each task in its own branch, name branches ‘issue-xx’ where xx is the issue number, manage progress through milestones every 7-14 days, each current project should have a current to-do issue per member, and Github Project should be used to manage progress on the project. In my group’s final project for ICS 314, following this procedure kept things organized and simple. Meeting twice a week or more disrupts miscommunication, naming branches per issue organizes the branches and their work, deadlines are apparent through the milestones posted on Github Project, and each member knows what task they are to complete. This allowed my group and I to finish our assignment in a timely manner while delivering a quality product.

Reflecting on Software Engineering

Software engineering is made up of several different aspects, some related to coding, some not. However, they are all essential for successful development of software in any company. Frameworks and libraries make the tedious coding process much easier and manageable. Project management processes like agile create a healthy template for teams to follow in order to create a quality product in reasonable time. Like anything, tools are constantly evolving to make jobs more efficient and easier, software engineering is no exception. The important takeaway is being able to utilize these tools to their utmost potential.