This week marks the start of the fifth phase of our apprenticeship adventure, and with it, new and exciting challenges for the next couple of weeks.

While the number of tasks has been greatly reduced compared to the first phases, the difficulty and complexity of them has increased, but at this point this difficulty spike isn’t as scary as I once thought, since in the time I’ve been part of this program, I’ve grown more knowledgeable and more confident in my abilities in order to overcomes whichever challenge we might encounter. The name of this phase, ”real users, real clients”, entails developing our ability to quickly integrate into a new team, as well as refining the abilities we’ve been able to gather during the last cople of months.

For starters, these couple of weeks we’ve been given a couple of papers with 2 central themes: personal failure and software project failure. Starting with the first one, we’ve been assured since day one that failure is part of the process of learning and growing, and that while we are part of this program, we shouldn’t be afraid of it. While all of this sounds good on paper and everyone understands the inherent benefits of overcoming and learning from our failures, both emotionally and psychologically failure still hurts a lot. A good portion of this can be attributed to the fact that we as humans are selectively smart: while we might rationally understand something, we may also feel contradictory feelings about it. There’s nothing wrong with that, that’s just part of the human experience, however, we can take advantage of this rational understanding to avoid falling into pitfalls that stunt our growth and leave us feeling helpless after failing in accomplishing some of our goals. Among these tips is the fact that we have to recognize the hurt that failure entails with it, rather than trying to distract us or minimize our feelings. Being able to recognize our own vulnerabilities is always going to be hard, but only once we do it and process it in a healthy manner can we start healing our wounds. If you skip this step, you will leave with negative and wrong impressions of the whole ordeal, making it harder to take any real lesson from it all. Productive to this endeavor is also to recognize each failure as an isolated incident, rather than generalize the event into our lives and characters. Keeping a clear head and vision of ourselves and the environment we live in is fundamental to walk away with both new knowledge and healed wounds.

The other lectures from this week focused on a different kind of failure, that of software projects. While it is something I hadn’t given much thought of as of recently, the idea of managing an IT project, especially on a large scale, seems at the very least daunting. This fear was only increased when I learned that around 66% of all projects don’t meet the original expectations, deadlines, or simply fail entirely. This was an astounding data, which was only made worse by the fact that this 2006 figure hasn’t changed significantly in recent years. So, what is the reason for this? Bad management, unrealistic goals, high expectations, impossible deadlines, failure to recognize IT as an investment rather than a cost, using immature technologies… in short, failing to face reality.

In the same theme, this week I also started reading The Mythical Man-Month by Fred Brooks, a project management book from an engineer who worked for IBM in the 70’s, and who saw the same issues that plague IT projects to this date back when he was working on OS/360. While I’ve just started reading the book, it presents right away an interesting conundrum: the more manpower you give a late project, the later it will become. This is a sort of paradox, as we expect more people to get more work, and therefore need less time. While true on certain tasks, the complexity of software development usually contradicts this common sense in quite an interesting way. I shall elaborate more when I write my review for this book.

That wraps up this week. Hopefully this next one will be filled with new and exciting challenges!

Software development cycle

Sketch_note_1

Sketch_note_2