If at all possible, minimize any dependencies on infrastructure that you have in your applications. The more dependencies on infrastructure you have, the less freedom you can get.
I define infrastructure as anything that I can put on my laptop and use without being connected to any network whatsoever.
Some examples of infrastrcuture bound applications are:
- Domain dependencies - the application must contact a domain controller for autentication, authorization, or just for the hell of it. (The reverse is also true, the application must not be run from a computer which is part of a domain).
- Forced distributed application - each part of the application cannot (under pain of crash) be run from the same computer.
- Each part of the application require radically enviornments (server OS vs. client OS, windows/linux, etc)
- The application uses Oracle.
- Using very large DB (Greater than 1GB) or multiply thereof.
- Requiring an exotic component (AS400 to hold the configuration for the application, for instnace).
- Requriing connection to a remote server accessible from a single point only
An infrastructure bound application is:
- Harder to deploy.
- Harder to test.
- Impossible to develop in a disconnected environment.
- Usually impossible to run except where it is was developed (or deployed with much effort).
I guess you know my opinion about such applications. I hate to be forced to work from a specific place, because it usually means that I can't "steal" work time on it when I am away from the office.