Engineering Strategies for Life's Battles

13 May 2021

Life is always a battle. The experience of battle takes all sorts of forms whether it may be the experiences of one’s daily job, drama in a friendship circle, or the unexpected landing of a fly on your sandwich. Conflict always arises, yet they are unique situations that force us to assess our resources and critically think on the spot to develop strategies on how to emerge victoriously. In the unlikeliest of fields, software engineering is a gold mine on how to engage in these battles as I have come to realize through my experiences in my first software engineering course at UH Manoa (ICS 314). Of course, software engineering is the process of developing software, but the methods of doing so are also flexible in being applicable to life’s daily struggles.

To Record and Control

Engaging with projects, either on a large scale or smaller scale, can always appear daunting to some degree. Software development involves a look at a large code base that is imposing at first sight but can always be tackled with proper configuration management which is the means to manage and control versions of work or features in relation to the overall project. Software developers resort to Git and Github as the prime means of engaging with configuration management, allowing them to make progress in small increments and track them by making various experimental versions independent from the main branch of work. Doing so allows for an easy record of where each progress is coming and these records can be considered the key in managing projects of any scale. But under the words of a famous military strategist, Sun Tzu, in his book The Art of War, these strategies can also be applied to battles of life as well:

Opportunities multiply as they are seized.
-Suz Tzu

In the engagement of life’s battles, configuration management is the means to take control of the battlefield. The average college student for example is always faced with the battle of writing thought-provoking essays. Some may decide to tackle these battles with no strategies and write it at the last minute, which given the intensity of school work, is understandable. Yet, there are those who are able to take control of the dreaded analytical writing prompts by starting small, writing little by little, creating drafts and experimental versions of their piece until it all comes together for one complete product. Applying Tzu’s own words, adopting configuration management allows for “opportunities” to be seized, which multiplies in additional “opportunities” such as permitting free experimentation or being able to take a few steps back and reassess a given situation.

Divide and Conquer

Software development, with its imposing nature, is often handled with a team to make the goal at hand less daunting. Teamwork in developing software is always important when a project’s codebase is ever so delicate. No one should interfere with another member’s work or else the delicacy of the application begins to fall apart. Hence the need for developers to engage in agile project management which are sound strategies for development teams to effectively work together and manage the contributions of each person’s work. These strategies take on various forms such as “Issue Driven Project Management,” one type of strategy that allows group members to work independently after addressing and assigning specific tasks where eventually everyone comes back to regroup on their progress. With strategies such as this one, everyone has a small piece of what to do without interfering with one another, to which it all comes together for rewarding progress on the development of an application. In the grand scheme in the battles within life, such management styles can also relate to the words of Tzu once more:

Great Results can be achieved with small forces.
-Suz Tzu

Battles in life also demand the application of similar management strategies such as competitions. In activities such as Football or Soccer, management is always paramount. Players will understand their role on the field. They have a role that is either focused on offense or defense. They are assigned a specific opposing target to handle. Sure, some may want to be the star player that solely wants carry the team for pride and greed, but in the end, they know their role and the roles of their teammates. Everyone has a role to contribute to the goal of victory. In the application of Tzu’s strategies, as teams of developers work together via management strategies to work in “small forces” to contribute to the overall app, life’s battles requiring cooperation can also utilize “small forces” of agile project management to achieve success.

Morals and Actions

To make an application entails more than just writing code and pushing it out as a new feature for an application. There’s always a question of ethics regarding work done on the system. Will this work affect me later on down the road? Should I push the work now onto the system to save time and risk breaking the system and the work of my team? How will these contributions affect the users that use the application? Software engineers always (and should) raise these questions when developing applications. Technological usage in the modern era is so heavily prevalent that one’s actions can affect many, including themselves. To some, constantly needing to assess the weight of one’s own actions can be a lot to always think about, but they allow software developers to adequately examine the ethical dilemmas that always plague the struggles of life. In the midst of battle, ethics is always to be considered in relation to one’s actions and the consequences that follow, and as noted by Tzu:

If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer defeat. If you know neither the enemy nor yourself, you will succumb in every battle.
-Suz Tzu

Life’s battles can at times, also be considered a battle of ethics. Everyone as individuals will eventually come to develop their own ethical and moral principles and the weight placed on software engineers helps in developing one’s ethics. For example, there are those in the retail industry who unfortunately will occasionally partake in a battle with rude customers and weigh the ethics and morals regarding how to approach them. Applying the strategy of Tzu, if you understand the expectations of your role, and the customer’s expectation of your role, you may succeed in overcoming the situation and will be able to handle a future horde of upset customers. If you do not understand the customer’s expectation of your role, you may achieve the satisfaction of lashing out at the customer but at the cost of losing your job. Finally, if you know neither your role nor the customer’s expectation of your role, then questions are raised on how you got the job. Software engineering and its evaluation on ethics can be considered a training ground to develop one’s own ethical principles and how to evaluate the ethical standards of a given situation. In other words, the rights and wrongs for software development paves way for the rights and wrongs of the battles in life.

In Software Engineering and In Battle

My dive into software engineering was in the interest of developing applications and gradually hone my craft in developing interesting projects. Others may surely have the same reason for entering the field. What was expected was to learn tools and ideas relating specifically to the field itself. However, what was not expected, was how these same tools and ideas can be applied to other fields, and ultimately, how they can be applied to the struggles that life decides to bring. Configuration management is used to experiment with developing different features of an app and keep records of it. However, it can also be used to draft various approaches for that hefty 40-page report. Agile project management is the means to put a team of people into work for a large-scale app, but it can also be used to put any type of team to work such as those in intramural sports. Ethics always follows us wherever we go and thus, ethical practices in software are sure to translate in situations where our morals are challenged. Us software engineers in the grand scheme of the workforce are to of course develop applications for the technological age. To make an application is a battle in it itself, constantly having to implement new features and track down the smallest of bugs while using the tools learned to address these battles. Yet, it is battle experience nonetheless, and these experiences allow us to handle any battle that life decides to throw at us.