There are more stories of failed software projects than of failed insert_another_field projects. But why is that so? Of course, software management is young, contrary to the other fields, but there are a set of management practices that should help project managers in their jobs. Why are they failing? Is it because they are not applied? Because the field is really too young? Or something else?
Due to the end of the free lunch, manufacturers started to provide differents processing units and developers started to go parallel. It’s kind of back to the future, as accelerators existed before today (the x87 FPU started as a coprocessor, for instance). If those accelerators were integrated into the CPU, their instruction set were also.
Today’s accelerators are not there yet. The tools are not ready yet (code translators) and usual programming practices may not be adequate. All the ecosystem will evolve, accelerators will change (GPUs are the main trend, but they will be different in a few years), so what you will do today needs to be shaped with these changes in mind. How is it possible to do so? Is it even possible?
As I was looking for a book on Bazaar (a book I didn’t find yet), I ran accross this one on Git. I heard that to use correctly Git, one needed a tutorial, so I figured a pragmatic book would do the trick.
Test-Driven Development is one of the most controversial development processes. Instead of planning everything ahead, you develop your program incrementally as well as simultaneously and rigorously test it. Kent Beck is one of the most proeminent advocates of this method and this book is the Bible of TDD.