I have been using Visio for many years. I find it quite useful. Back in the early 2000s, I was consulting with a company that made fiber optic transport equipment for the tv cable industry. I created custom visio icons for them. I made the icons able to change based on selection. For example, I made it so that you could right click on it and select LC connectors and the image would change to LC connectors, or the same for SC connectors. Some devices were very similar. I made a common icon that you could just right click on select the desired type and the image would change to match the selection.

Visio is object oriented. You can assign properties to objects. So, you can put the serial number, part number, manufacturer, support end date, amount of RAM, power ratings, rack elevation, etc (what ever you find appropriate) in to the object. Visio is also COM aware, so you can put those properties in an external database or spreadsheet and link the object to it.

Having a Visio diagram of all of my racks helps me visualize what is where. I have notations in them about how each is connected to everything. For example, the left power supply of device x is connected to PDU z, port 4. The PDUs have an Ethernet interface. If all else fails, and I need to remove power and then restore it, I can do it remotely and I know exactly what ports to shut down. I have in the diagrams what serial ports are connected to what devices. So, I know if I go to server w, it is serially connected to the Cisco switch in the rack and I can get on the console in that fashion.

I wrote custom visual basic code as part of some balloon callouts. Now if you place that callout on an object, it will read the object's properties and display certain information in the callout. It easily makes critical information available directly on the diagram.

I've just found it to be very useful. \:\)