Takeaways of Software Engineering

18 Dec 2020

Going through the semester

In this past semester, I’ve been introduced to a wide variety of standards that pertain to software engineering. Although the majority of the standards that I’ve been exposed to were only applied to website development, I can see how these also apply to software engineering as a whole. They are helpful in making sure that the code written is cohesive and easily gets the point across, allowing for developments to occur at a faster rate as less time is wasted wondering what you’re looking at. The two aspects of software engineering that I will remember is functional programming and agile project management.

Functional Programming

I think one of the biggest pillars in software engineering is functional programming. This allows the programmer to split up a big task into smaller tasks, which can be distributed to other people such that the work can easily be divided, or it can be taken in small steps, becoming a much more digestible task to take on rather than it being a daunting task with you not having any clue of where to start. I believe that this is an easy principle to apply to any project, as it is just the process of breaking down a machine into smaller parts, and it allows for an easier time troubleshooting, as you can take a educated guess at where the error is likely occurring, and perform unit tests across suspected functions. Of all of the benefits that functional programming provides, I believe the biggest benefit is the modularity of functional programming, as you can easily take one function and move it to another project that needs it, or easily swap out a function for a more suitable function, without getting stuck in changing such functionalities in one huge file, worrying about dependencies and such.

Breakdown of a main function into the smaller functions it uses

Agile Project Management

As I worked on a big project with group mates, and I expect to do so in future endeavors, I find that agile project management to be very helpful on keeping everyone on track. Rather than throwing darts blindly at different targets, it helps get everyone on the same page, so we can hit targets one by one on each iteration, allowing the group to progress faster as a whole.

Thinking back to my group project, I believe we should have followed this principle more, as I found that we were looking at different targets, leading to conflicting problems. This also made me realize that you need to also be aware of the future of the project, as sudden changes to a system that was already working, even if its well intended, will tend towards failure unless given enough time. We should’ve asked ourselves, “Is this doable in the given time we have left?”, and “Is it even worth doing it, when the impact is minimal?” Had we followed the agile project management principles and asked ourselves this, I believe it would help get everyone on the same page and allow us to progress pass the stopping point, rather than having a few be too ambitious, leading to problems in the future.

Diagram of the agile project management process

Last Thoughts

Behind software engineering is a large selection of skills which aid in developing software. They allow for programmers and developers to create software more efficiently, allowing for easy communications across platforms and a means of standardizing coding such that it is easily understood by those following the same standard. I believe every software engineer should learn these skills, as it is an extremely helpful towards their growth in the future, in terms of personal and professional work.