Topics and Skills of Software Engineering

Perhaps the most interesting topic in software engineering is team efficiency. In software engineering, Brook’s law says that adding additional manpower to a team will only delay the project. The reason for this is because new members of the team will need time to integrate themselves into the project and may even introduce bugs to the code base.  Also, introducing more people to a team increases the complexity of the team. So how do we know what is the optimal number of people in a team? That is perhaps the most intriguing question since the “common” solution to solve any problem quickly is to “throw more people at it.


In the future, I would like to develop a skill set that allows cooperating with a team efficiently. This would also mean that I would need to learn different software engineering paradigms that allows seamless integration for members that leave or join the team. In addition, a team needs to account for different skill levels of the team members. New college graduates are usually less experience than a senior program designer that had years of experience. This gap in skill level poses a challenge on how to optimally allocate resources in the production of a project. I feel that being able to quickly determine how to best allocate resources efficiently in any given project is an important skill to have.

Another interesting topic in software engineering is program correctness. My undergraduate classes never focused on program correctness in writing code. In particular, writing “good code” was never emphasized in my programming classes. This means that sometimes I would write terrible code that I have no idea what it does but still produces correct output. Being able to masterfully write clean and elegant code is a skill that should be taught day one in programming classes.

All in all, there are many interesting topics in software engineering that people can benefit from learning.