Going through the basic fundamentals of software engineering allowed me to learn the full scope of what those two words really mean. Generally I thought of it as programmers developing applications, when in reality there is more of it that can only be seen when under a microscope. There are many small concepts of software engineering that an individual may only come to know when they experience it in some way shape or form. Examples of said concepts that fall under the scope of software engineering are: Open Source Software Development, Configuration Management, Functional Programming, Development Environments, Coding Standards, User Interface Frameworks, Agile Project Management, and Design Patterns. I was able to get a brief taste of this when I was tasked with developing and designing a web application in a team setting. Throughout the course of time we were given to work on the application, three main software engineering concepts were especially exercised.
Agile Project Management is formally defined as an iterative approach to managing software development projects that focuses on continuous releases and incorporating customer feedback with every iteration, per Google. I was able to practice a specific style of this concept called Issue Driven Project Management, which was exactly what the name says in which there was a set of issues laid out, and my group and I would work on current issues and create new ones as the project progressed in completion but also in complexity. Unknowingly this is used in our lives, for example: a Committee Board planning a series of social events. This would involve organization with food vendors, coordination among Board Members, information management with attendees, and much more.
Organization and coordination are some of the key aspects necessary to successfully make anything in a group dynamic. Anything is a broad definition, to narrow this down a couple examples of having a highly organized operation are: group projects and social events. This is the use of different Integrated Development Environments (IDEs), if everyone in the group were to use different IDEs then it would make the development of the project confusing if someone needed help with an IDE that no one in the group was familiar with. An application of this in a real world setting, using the Committee Board planning project as an example, would be all of the Board members using a specific method of communication. This could be through Slack, iMessage, email, etc. and would be so much smoother if everyone was using the same environment to communicate.
Standards are another form of organization that is yet another key aspect needed for both group dynamics and individual success. Programming organized and neat code is key for not only you to read and understand, but also other programmers who review your code. Having tidy code not only looks nice but is especially efficient if you were to ask for help from someone who doesn’t know your program as well as you do. This level of tidiness and organization is self explanatory and applicable in several aspects of day to day life. For example, having a neat and tidy desk optimized productivity by lessening distractions and the time needed to find things.