Spend your time improving yourself through the writings of others, and you will easily gain what has been hard work for us.
— Socrates
The Programmer’s Black Book Manifesto
Professional software development has more artistic and creative aspects than technical ones. Unfortunately, software developers tend to make the same mistakes over and over again.
We spend years acquiring a wealth of knowledge that we will later find difficult to apply.
We develop projects in companies that do not understand the fragile, intangible nature of a well-built software product, applying the principles of industrial production instead.
We like to research—which is good—and to show off our knowledge of every emerging technology—which is not. In a way, we are victims of a somewhat childish dilettantism.
We deliver spectacular results even though, beneath the surface, an application’s fragility will force us to throw it away after a few months because it is impossible to maintain.
Too often, we forget that success in software—and in other professions—is a combination of technology, talent, and methodology. Nothing moderately complex can be accomplished without a plan or a framework for doing things in an orderly way.
We let managers, bosses, and decision-makers in general remain unaware of the creative and artistic nature of software development.
No one teaches us either how to work as a team or that the success of a software project depends on good collaboration among all its members.
Some people like to play the guru, full of arrogance when recognized as one, but their individualism keeps them from working successfully as part of a team.
We confuse meeting deadlines with delivering a quality product.
We like to make ourselves indispensable and complicate things to claim a little patch of power and feel needed, turning ourselves into our own slaves.
We do not make enough use of our considerable entrepreneurial potential by applying our knowledge of technology in an economy that is moving toward the digital.
We therefore need a book that brings these reflections together and teaches us how to address all these aspects of a profession that is neither sufficiently valued by society nor adequately rewarded financially.
I maintain that software development has more in common with art than science: we build more than we calculate; we create more than we assemble.
Where did The Programmer’s Black Book come from?
The reason is simple: after years of wrestling with countless projects and accumulating innumerable experiences—good, bad, and very bad—and with a visceral passion for well-crafted software thrown into the mix, I want to share these experiences by addressing what we are worst at, and what we are not taught during our education. I am grateful for having made so many mistakes: there is no doubt that failures teach us far more than successes.
Paraphrasing Fernando Trías de Bes in his The Entrepreneur’s Black Book, I aim to offer a holistic, much-needed perspective to those of us who work professionally in software development. I focus on the aspects surrounding our daily work that inevitably determine its success or failure. That book shows what most entrepreneurs persist in doing wrong; in this one, I aim to show what many programming professionals also stubbornly keep doing wrong.
Are you considering computer science as a future career? This is the book I wish someone had told me about back then, so I could have avoided so many wrong turns and disappointments. It also explores how to handle success, why teamwork should take priority above all else, and how to make it part of our DNA that even a clumsy methodology is better than none.
If not, and you think you know everything about a profession that reinvents itself every few years, I will still explain how to handle the situations that surround software development but ultimately determine its quality, success, or failure.