The Importance of Awareness in Software Development
Having just endured an 11-hour bus ride along winding dirt roads deep into the valleys of Peru, I disembarked, unaware of the danger that was waiting for me. My bus was over 2 hours delayed and even the latest night owls were fast asleep by now. Worry crept into my mind as to whether or not my driver would still be waiting at the terminal to pick me up as we had arranged.
I consider myself a very experienced solo traveller, but the anticipation had my heart racing as my strides quickly lengthened. When I got closer to the terminal gates, I noticed a man waiting patiently to the side. He glanced over and I approached him, whispering, “Alonso?” (my driver’s name) and he nodded. I felt relieved but uneasy at the same time. There was something odd about him and I knew I was about to find out what that was.
Once we made it through the maze of paths and out of the terminal, I was dumbfounded to see another man holding a sign with my name. I glanced back at the imposter and quickly dashed over to my safe transport. A quick oversight of mine nearly unfolded into a very dangerous situation.
Despite this setback, the next 3 weeks of my journey in Peru were some of the most memorable experiences of my travels. The journey provided me with the space I needed to reflect and learn. I developed an appreciation for everything around me with greater detail than I ever did before. I realized how much of a role one’s awareness played in determining a successful outcome. This especially holds true in software development.
What Is Awareness?
Over our careers, we are on a journey of continuous learning that helps build more and more understanding of many skills and technologies. “Awareness” is a more specialized form of “understanding”. Having a keen sense of awareness means that you can directly know and perceive something that exists. There are many ways that this applies to software development.
Suppose you aren’t aware of a bug in your application. As a result, there would be no possible way you can fix it.
This may seem like an easy enough reason to get out of having to do something that is a problem — out of sight, out of mind. However, the fact still remains that a problem exists whether it is known to you or not. If the bug is affecting millions of users, then you should know about it. At the end of the day, there is still a problem that cannot be justified simply because it was something you didn’t know about.
When developing a new feature in an application it may feel natural to rely on the same design pattern you have used in the past, without fully understanding how it fits within the scope of the problem or how the user intends to use it. While this may result in a satisfactory solution, underneath the surface it uncovers a complete lack of awareness.
It may not be apparent that this particular feature may require a specific design, have a more elegant solution using a new framework, or would benefit from getting a review from another developer with a different perspective. Awareness requires one to break out of anything that was once comfortable or familiar to gain new knowledge and experience to continuously grow.
How Do We Increase Awareness?
Two of the most basic approaches to get started on improving your awareness are 1) to assess your capabilities and 2) to get out of your comfort zone.
Self-Assessment
Understanding where you stand and being able to identify your opportunities for improvement is a part of being self-aware. With a high level of self-awareness, you‘ll quickly have opportunities to grow and excel. Without regular self-reflection, it is difficult to maintain. Set consistent times to reflect and measure your progress. Establish targets and goals to ensure you are progressing on the right track. Keep notes and if possible, work with a mentor to receive additional feedback.
Get out of your comfort zone
There is a natural tendency to avoid things that are foreign to us. While it may feel safe and comfortable, this approach makes it difficult to achieve excellence. Continuous improvement involves putting yourself in uncomfortable situations. This is the type of environment that fosters unrivalled growth and learning.
As a software developer, this may be expanding your reach and exploring some code outside your primary area of responsibility. Look wide enough, deep enough, and often enough and one will start to see patterns and form mental models of how things are connected. That’s how we deepen our understanding.
Understand where you stand and deepen your understanding to establish an instinctive notion of awareness.
Summing It Up
All of this sounds simple but it can be emotionally intimidating for many people. Improving one’s awareness requires the willingness to experiment with something different. After all, resistance and challenges are the indicators that we are on the path to improvement.
When I hear about a new framework that is all the rage, I like to at least read a little about it on its website. I may not dive deep into it, but at least this way I am aware that it even exists. With this approach, I am continually adding to my arsenal of tools that are at my disposal. It provides me with the flexibility of recommending more options when I’m faced with my next challenging situation.
The journey is part of the success, and in my situation, it allowed me to learn from my experience, gain the knowledge to move forward, and look forward to my next travel adventure.
Until the next time, stay safe.
Eric Bach is a Senior Software Developer @ Alberta Motor Association who enjoys learning, reading, and writing about leadership principles, event-driven microservices, and all things AWS.