In the process of software development, a certain number of flaws (“bugs”) are certain to arise. These can lead to product delays and cost overruns, but can also lead to customer dissatisfaction or even physical harm if they happen to get out of the laboratory.
Developing software, project management, and selling software applications are entirely different skills sets. It is important that everyone understand each other for the team to achieve success, and this book is intended to provide some insight, largely from the developer’s point of view.
For the developer, this book explains some of the causes of the more complex bugs, how to detect them, and how to fix them. I hope you will glean some additional insight into some of the heavier bugs, and also pick up some new development tips.
For managers and sales people, this book introduces some jargon that you should be familiar with, introduces “bugs” in an easy-to-understand way, and gives insight into what to realistically expect from developers.
For everyone, there are discussions of development methodologies. I hope these will give you some ideas on how to get everybody thinking on the same plane, and hopefully to minimize bugs in the process.
I am an American expatriate, living in Japan for more than thirty years. My college degree is in Business Administration, but I am a tinkerer at heart, and I spent most of my fun time in college in the Computer Science program. (That study included just enough Electrical Engineering to be dangerous.)
It turns out that programming is a fantastic way of making things, but unlike other “hobbies”, you don’t need any physical materials like transistors, chemicals, or paint. The materials are your ideas, which are free. Well, ok, in those days a computer cost a million dollars, but that was a transparent cost to me at the time.
I have been making my living in this industry for forty years now. I still program quite a lot, but not as furiously as I did when I was twenty or thirty years old.
I had the idea for the basic part of this book years ago, and originally it was just supposed to be about bugs. That turned out to be not enough material for an entire book, so I started adding additional, related topics, that I hope you will find of interest, and save you some research time.
- In this book I use the term "developer, "programmer", and "engineer" interchangeably.
- When I refer to GNU, I am generally referring to the GNU gcc and g++ compilers.