After I left Lockheed Martin I managed a few software projects. Since I had been a developer for the previous four years or so, It was a real change of hats for me. I really learned quite a bit from the experience. I made this big list of notes for myself, and thought that I would probably turn it into a book, or at least a very large paper someday titled “Software Development From the Customer Side” or something like that. There are thousands of books out there for developers and hundreds for managers of developement teams. But I don’t think that there has been a single book written to help customers manage the software development process.
So, why am I bringing this up? Some colleagues of mine had sort of a rough time with a project recently. I think that a lot of their problems could have been avoided if they had followed one of my notes. It wasn’t their fault, I didn’t communicate it to them. I was traveling and didn’t even really think about it. It is absolutely crucial that you get developers access to the hardware that they are developing for, or integrating, or interfacing with as early in the development process as possible. This has bitten me in the ass multiple times as a developer and on the management side. Sometimes it is just not possible to give the developers access to the hardware. But in those cases, you need to schedule plenty of start up time and communicate to your management that there is no way in hell that it is going to start up smoothly because the developers did not get access to the hardware during development.