A few years ago, I was assigned to work on a new project.
As a mobile engineer, I was mainly responsible for the mobile applications part. It was a critical project for my company at that time as it involved an important client in addition to the project's huge size. I was very excited about this opportunity since embarking on such a journey would allow me to gain tons of knowledge and experience.
However, a couple of months later, everything was a giant big mess. With frustrated clients, angry managers, and exhausted developers, we were quickly going downhill!
I am Muhammad, a mobile engineer at GT with six years of experience, and I would like to share some non-obvious red flags to be aware of whenever starting a new project (or job!) so you may not repeat my mistakes.
Here, I will cover the main red flags: lack of clear business goals, resistance to change, poor communication, poor time and budget estimations, sudden switch, and "lifelong startup" concern.
🚩 Lack of clear business goals
Once my friend and I were bored, we got into the car for a drive, kind of like in those road movies. We wanted to go somewhere nice and have fun, but we had no specific destination in mind. We drove for hours, stopped by random places a few times, and eventually went back. It was kinda fun! Our goal was achieved, but we wasted a lot of time and, probably, gas doing that.
While things might work in such cases, it is definitely not the best idea when carrying out any professional projects.
Similarly, wanting a nice design, delightful user experience, or cool features are not exactly clearly "defined" business goals. In fact, this lack of clearly outlined objectives is among the most common reasons why projects fail.
In its annual report Pulse of the Profession, PMI found that around 37% of projects result in failures due to unclear objectives and milestones. I have personally witnessed how it can lead to chaos.
During the project I mentioned at the beginning, one of the required functions was to display the user dashboard showcasing some statistics, reports, and several KPIs. I remember going to the project manager and asking what kind of statistics the client wanted us to include. Did they need any specific data to be tracked? The answer was: "Just do something simple, no need to complicate things!" Thereupon, I chose some basic data to display on that dashboard and moved on. The time came when the client asked to test the app to validate the progress. Yet, they were very dissatisfied as it wasn't at all what they expected.
And the problem was that neither the development team nor the project management knew exactly what was actually expected.
To avoid such unnecessary encounters that lead to the waste of time, effort, and eventually money, it is vital to set up a project scope, and clearly define business goals and milestones of which all stakeholders should be aware.
🚩 Resistance to change
Usually, a project is created as a solution to a certain problem. This solution can be either totally new or an enhancement of the existing ones.
So, in a way, projects bring changes. And let's be honest, people hate it. We hate changes.
According to a behavioral study from Georgia State University, published in a September 2019 issue of Nature's Scientific Reports, monkeys are much more open to switching to more efficient strategies to achieve their goals, outperforming humans when it comes to tests of cognitive flexibility!
We are hardwired to resist change because our brains interpret it as a threat. That is why so many people in an organization will probably resist it when presented with a new initiative (even a beneficial one).
Resistance to change does not come for free and many costs are associated with it such as reduced efficiency, low employee morale, and disruptive work environment. It makes high levels of resistance to change a major red flag when it comes to projects or organizations.
As software engineers, I believe we can help overcome the psychological costs of such resistance and mitigate its negative effects when working on new products by following some fundamental steps:
👉 Step 1: Showcase the current problem
Our products are designed to make people's lives easier. By showing how the current situation is causing problems (pains) for users we can make stakeholders more open to change. This is because change can be often seen as a threat, but if stakeholders understand the benefit of change (gains) they are more likely to be supportive.
👉 Step 2: Create a promising visualization of the future solution
Create ideal prototypes, mockups, and nice demos for our products. Add to that clearly defined functional requirements, and it will enable us to build a promising visualization for the stakeholders. Excitement for the new concept will conquer the resistance to change.
👉 Step 3: Define the next steps to turn that vision into reality
Finally, any project that doesn't have a clear and realistic plan will be bound to fail. People around us know it and it will keep them fearing change unless we provide specific steps to turn the vision into reality.
An excellent example of reacting to change can be seen in my company GT's recent experience when we aimed to implement an iOS SDK. Initially, we encountered compatibility issues with the existing framework, but instead of being deterred, we embraced the challenge. Recognizing the importance of the iOS platform, we made the collective decision to change the entire framework. What truly stood out was the remarkable response from our team members, who readily stepped up and offered their support and expertise.
This collective willingness to adapt not only enabled us to overcome the obstacles but also served as a testament to the open-mindedness and resilience of our workforce.
Another noteworthy instance was our endeavor at GT to adapt our SDK to various operating systems and applications, including Android, iOS, and React Native. This adaptability allowed us to cater to a wider audience and reach users across different platforms, ultimately enhancing our product's versatility and market reach.
Through these experiences, we have learned that embracing change and being open to new ideas are pivotal in staying relevant and achieving sustainable growth in today's dynamic business environment.
🚩 Poor communication
Effective communication is one of the most critical components of any successful project. Similarly, poor communication causes misunderstandings, missed deadlines, and, as a result, costly mistakes. It can also lead to a lack of trust between team members, ultimately leading to failure.
In my experience, poor communication can take many forms. Sometimes, it is a lack of clarity in project requirements, poor feedback, or an absence of updates about project status.
To avoid these issues, it is important that we establish clear communication channels, set expectations for how often updates should be provided, and make sure everyone is on the same page regarding the project’s requirements or company objectives.
🚩 Poor estimation of time and budget
A significant factor that may contribute to a project's failure is a poor estimation of time and budget. This frequently happens because of a lack of awareness of the project’s intricacies and the necessary resources to complete it. This could result in missed deadlines, hasty work, and ultimately, a substandard product.
To address these concerns, it is crucial to take ample time to fully understand the project's requirements, identify possible hindrances, and provide an accurate estimation of the resources and time needed to complete the project. It is also vital to have a backup plan ready in case unexpected issues arise during the course of the project.
🚩 Sudden switch
Another red flag to be aware of when starting a new job is when there is a sudden switch between the role you applied/interviewed for and the actual work. This can be a sign of poor communication within the organization or a lack of clarity about the job responsibilities. When the expectations for the role are unclear, it can lead to dissatisfaction and frustration for both the employee and the employer. It is crucial to have a clear understanding of the job requirements before accepting an offer to avoid any confusion or misunderstandings down the line.
To ensure clarity, developers can ask questions such as:
📌 Can you provide a detailed breakdown of the specific tasks and responsibilities associated with this role?
📌 What are the main objectives and goals of this position, and how do they align with the overall objectives of the team or organization?
📌 How does this role collaborate with other teams or departments within the organization?
📌 Are there any specific technical skills or programming languages that are essential for this role?
📌 Are there any particular software development methodologies or frameworks that are commonly used within the team or organization?
📌 What level of autonomy or decision-making authority does this role entail?
By asking these questions, developers can gain a clearer understanding of the job expectations and responsibilities, reducing the chances of encountering a sudden switch in roles after starting the job. If the switch happens nevertheless, it is important to address it with your manager or HR representative as soon as possible to ensure that the situation is rectified.
🚩 Still a startup
When a company remains a startup after several years, it may be a red flag for potential employees.
While some companies intentionally choose to maintain a startup culture, others may be struggling to grow or have underlying issues that prevent them from scaling. This can create an uncertain work environment, as there may be a lack of stability, clear direction, or resources.
Additionally, the company may not have established policies or procedures in place, which can lead to disorganization or chaos. While some individuals may thrive in this type of environment, others may find it stressful or unsustainable long term.
In addition, there are other non-obvious signs of a poorly managed organization or a project. These can include a lack of documentation, constant disorganization, a focus on process over people, and cost over value. These issues may not be immediately apparent, but they can have long-term negative effects on the organization's success. Additionally, a lack of accountability for mistakes or failures can further exacerbate these problems.
In conclusion, starting a new project or a job can be both an exciting and daunting experience at the same time. However, it is important to be aware of the non-obvious red flags that may lead to failure.
Lack of clear business goals, resistance to change, poor communication, and poor time and budget estimation are some of the most common red flags that can be addressed with proper planning and communication. By taking these factors into account, you can set your project or job on the path to success.
As a mobile engineer with years of experience, I have personally witnessed the negative effects of these red flags, and I hope that the insights I have shared will help others avoid similar pitfalls.