In any software... developers need to create and deploy methods, commands, tools, menus and toolbars. In GIS customisation there is no difference, except that the data is geographic / spatial based and there are complex geometries involved. There are many standalone desktop based GIS software in the market like ESRI, Intergraph, MapInfo, SICAD... you can use this... but still many users prefer more customised interface and applications to suit their specific work needs and data type.
For example ... a property valuation company is not a classic GIS organisation (Survey, Urban Planning, Environment etc)... but they need GIS related information on buildings, property values, historical data, owners and transactions. GIS can make their life so much easier. Buying an off the shelf software is not going to solve their needs specifically ... it needs to be customised to a valuers needs... and also it must be convenient.
So the emphasis of GIS customisation and development should be to develop a new software... please don't re-invent the wheel.... but to plug in your customisations and methods to exisiting software solutions. We are not re-inventing or re-creating GIS tools and methods but merely enhancing the workflow, fine tuning the processes, improving the interface and upgrading methods. "Plug and Play" programminng became very popular with VB and VBA (see my earlier posts). You can now add and remove functions, tools and methods easily... which in return makes the development life cycle faster.
Let me use ArcGIS as an example. ArcGIS uses ArcObjects as the core classes for any development work. Arcobjects is developed in C++. These classes and methods are used to build ESRI software. You as the user have the ability to pull these objects and plug it into a VB / VBA application. Thats the beauty of COM.
All the user interface controls in ArcGIS Desktop applications are commands... "button" being the simplest type of command.... it generally appears as an icon on the toolbar. An "action' occurs when the button is clicked... running a code / method / procedure / function / geoprocessing within the "OnClick" procedure. To be more technical .... Commands mentioned above are components within a DLL that implements the ICommand interface (this is COM)... referenced from esriSystemUI library. You add to this techology by improving the commands...
Today in 1942: Allies launch daring raid on DieppeAllied troops have pulled back after nine hours of heavy fighting on the French coast at Dieppe, northwest of Paris. The withdrawal brings to an end the largest operation yet to include the army, navy and air force at the same time.