(This story is part of the assignments for my internship at Nearsoft by Encora. I hope that some of the insights I learned this week can help others in their learning journey. Previously: Your Personal Brand: Week 4)
This is the last phase of my internship at Encora, during this month I will integrate with an existing software engineering team. The goals of this phase are to apply the best practices and mindset that I’ve learned throughout the program in order to quickly and effectively be productive on this new team.
Failing is OK. But you must learn from your failures, and that requires concerted postmortem introspection and analysis. Once you know what the common pitfalls are, it’s easier to avoid them.
I had the opportunity to read about Software failure and it’s history. From projects that were abandoned or canceled to some that had unfortunate outcomes resulting on the loss of lives. However, as Robert N. Charette states “We already know how to do software well. It may finally be time to act on what we know.”
This means that after decades of software development we have gathered enough information about best practices and project management in order to develop software with better chances of success. Now, it’s time to apply them.
A few lessons that I’ve learned this week about this are:
- In the simplest terms, an IT project usually fails when the rework exceeds the value-added work that’s been budgeted for.
- Once a piece of software makes it into the field, the cost of fixing an error can be 100 times as high as it would have been during the development stage.
- IT projects rarely fail for just one or two reasons. The most common are an overly optimistic development schedule and an underestimation of the technical difficulties involved.
We need to look at the business environment, technical management, project management, and organizational culture to get to the roots of software failures.
One of the most important experiential learning I had was having pair programming sessions with a colleage to set up a couple of developing environments and to fix a bug. When done on a collaborative manner and with a shared goal it’s far more encouraging to bounce ideas to get to the solution and it’s far more satisfactory when reaching an objective.