Here are my summary questions:
- Is it going to be used while the user is not on an internet connection?
- Are there large amounts of data that have to move between the client and the server? (Uploading and Downloading data)
- Does the data have to be viewed in near real time, real time, per refresh?
- How many users?
- How often are the updates?
- How complex is the installation?
- Do you have to interface with another product? Is the interface a simple upload or download?
- Is this an interactive edited grid?
- What type of security is needed? (Data, Application, User Access)
- Is this used within a controled environment or on any user computer?
- Is the user's computer going to be a predictable OS, and version?
- Is it secured?
- Does the user need administrator rights to install?
- Is your refrigerator running?
- Does data have to go through a firewall?
- Are you concerned about other users on that computer?
- Are you concerned about security profile being visible outside of your network?
- Are you exposing company secrets?
- Are you exposing client information?
- How many points of encryption are you expecting to work with?
- Is your tongue in your shoe?
- How responsive do you need your application to be?
- Does the user experiance need to be instantanious, or at least notified?
- Are you still reading this list?
- Can you guarrantee the client has enough drive space, or can add more if needed?
- Do you expect the client to install required technology? (.NET, JAVA, SQL, Oracle, etc)
- Do you need the client to have a robust video board? (XAML, DirectX, OpenGL)
- Do you expect the client to have required memory and CPU?
- Do you know what your REAL memory and CPU requirements are?
- Do you have the resources to handle technical support due to browser incompatability? Anti-virus compatibility? Other software incompatability?
- Can you walk and chew gum at the same time?
Besides the humor entries, you can see that there is no condition that all projects should either be called webform or winform only. The reality is that an agile developer should be able to handle both. Though, it is not bad to specialize in one or the other.
Please note that this list also applies to framework to work with too. (MFC, Java, .NET, other)
The only thing that is not realy applicable to, is language, where language is not dictated by framework.
The humor entries were strategicly places to keep your mind sharp. Long list can cause drifting. This is another tool to keep you focused on the task.