Software Engineering is a people game

13 Dec 2023

I. Introduction.

Software engineering is a general term if you don’t know exactly what it means. Software means something technology related and the word engineer could mean anything about designing something. There’s a funny joke about how people could talk up their job by just changing the job title. An example was a dishwasher turned into an underwater ceramic technician. Coming into my first class about Software Engineering the only thing that I knew about it was that we would be doing coding and everyone seemed to be wanting to do Software Engineering out of all the potential jobs in Computer Science. So what is Software Engineering and what do you do in it?

II. General.

A simple google search about the definition would bring you: Software engineering is a broad field with many specializations, such as web development, mobile development, game development, and embedded systems.

What you do in it is: the systematic, disciplined, and quantifiable approach to the design, development, deployment, operation, and maintenance of software.

Basically Software Engineering can be applied to any software(coding) application and just making and changing them. Now there’s many different aspects about Software Engineering but I’ll mainly talk about two of the most important ones to me: Coding Standards and Agile Project Management.

III. Coding Standards.

Coding standards are just like the name suggests the standards for coding. Like what format the code should be in, how the import statements should look like, if something has been declared but hasn’t been used is highlighted. I feel like coding standards are severely underrated especially in the online world. If everyone is assigned a certain task on a project and one of them relies on the other to start working, it’s paramount to understand what exactly happened before you. But if there’s no coding standards and everything is all over the place and the code is a pain to read, it just messes everything up for everyone. It could even affect the person who wrote it, just like some who can’t recognize their own handwriting because it was so poor. Coding standards are so easy to implement too with things like eslint where it automatically checks the code for you with whatever preset rules the project needs to succeed. There should be no reason for no coding standards other than pure laziness.

IV. Agile Project Management.

Ok we know what project management is, when you lead a team through a project but what does adding Agile do to it?

Key principles of Agile:

Iterative development: Work is broken down into small, manageable iterations. Continuous feedback: Stakeholders provide feedback throughout the development process. Adaptive planning: Plans are constantly adjusted based on new information and feedback.

So it’s basically taking things step by step and incorporating any feedback that may occur when people test the product. This step by step process is very crucial because if anything is wrong then you should fix it as early as possible in order to cause the least pain. A small analogy would be when building testing specific parts of your pc first rather than building the whole thing only to realize that your motherboard doesn’t work so you have to take it out and it’s just a big hassle that could have been prevented with due diligence. Of course the best and ideal situation is just to have everything working without having to check anything, but that isn’t always the case and often in real life things do happen.

The other thing that this does is gives small goals to reach to. It can be daunting and challenging to say “Ok, build a website that does x,y,z.”. But by giving achievable tasks to reach that big goal then makes everything much more manageable.

V. Communication is the main focus

What’s the common factor between these two concepts? People. Whether it’s a solo project or a collaborative effort, human interaction is crucial for software creation. Human minds can’t read one another. Effective communication becomes the vital bridge, fostering understanding, collaboration, and ultimately, success.

Imagine a project built in a vacuum of silence. Misunderstandings run rampant, assumptions multiply, and progress stagnates. This is where communication shines its light. Through clear and concise dialogue, people share ideas, define expectations, and navigate challenges together.

By prioritizing communication, the software development process transforms from a solitary endeavor into a balance of shared knowledge and purpose.