At my company I have seen a lot of bad software development practices over the years, so I have created a set of software development guidelines to help establish a set of best practices and baseline software requirements. I am publishing a series of experts from those guidelines here so that I might get some useful feedback that will help improve them.
It is important when writing programs to allow access to people with disabilities. Creating software that is accessible by people with disabilities is relatively easy since most modern operating systems have already incorporated these features. The main goal of the developer in this regard should be simply not to interfere with the features already provided by the operating system.
When developing web based applications we should strive to meet Web Content Accessibility Guidelines.
In the cases where overriding operating system accessibility defaults is necessary or when custom controls are created, the following points should be followed:
All applications should follow generally accepted good programming practices as applicable to the programming language or application at hand. Here are some general recommendations that should hold for almost all programming languages and applications:
This may be one of the most important software design guidelines and yet it is often overlooked. A common ‘look and feel’ is what makes Microsoft Windows (or OS X or KDE) such an intuitive platform; it makes it possible for someone familiar with Microsoft Word to easily transition to working with Microsoft Excel. This commonality allows users to feel comfortable with new programs and reduces the training time and costs. All programs written for use in the Company should be designed to match the operating system they are written for.
It should be noted that this paragraph does not mean that when an application is being ported from one operating system to another the look should stay the same as the source system. An application does not have to look like it did on the old operating system if this sacrifices commonality on the new operating system.
Software developers should generally not have programmatic access to production resources. In other words, developers should not be accessing production resources directly nor should they be writing applications that attempt to self update themselves or other software components in the production environment.
The use of application loaders and auto update mechanism should be eliminated in favor of the standard client installation tools (e.g. NetInstall).
Developers outside of IT will generally not be given access to programmatically retrieve data from central Company systems such as SAP. The only exceptions to this rule are data sources that are available to all Company employees, such as Active Directory.
Developers should not have the ability to change any database schema on a production server. Database schema changes should be scripted, tried and tested on development servers, and turned over to the server group. The server group will use the supplied scripts to update production database schemas. This is necessary in order to accurately document changes to the database schema over time and provide roll back opportunities.