Il n'y a pas de boîte!
Il y a un problème spécifique à résoudre et un ensemble de contraintes qui pourraient s'appliquer. Déterminez quel est le problème (pensez de façon abstraite et en termes réels), en le définissant à la fois en termes thématiques spécifiques et en termes plus généraux.
Examinez chacune des contraintes (ne faites pas d'hypothèses) pour voir si, quand et dans quelle mesure elles pourraient s'appliquer. Regardez le problème du point de vue de qui il affecte (n'oubliez pas l'objectif) ainsi que dans les coulisses.
Ne faites pas d'hypothèses.
Si vous supposez que certaines choses sont vraies alors qu'elles ne le sont pas, vous vous empêcherez d'examiner différentes perspectives. Contester également les décisions / hypothèses existantes que d'autres ont faites - il peut y avoir une bonne raison à cela, ou non, ou il y en a une qui ne s'applique plus.
Pensez abstraitement.
Apprenez à voir les choses comme des modèles et en termes abstraits. Lorsque vous repérez un motif, envisagez des choses similaires et voyez si vous pouvez en appliquer des actions à la chose actuelle. Si votre sujet comporte des modèles nommés, apprenez-les, mais ne les traitez pas comme des solutions de coupe-biscuits.
Ne pensez pas abstraitement.
Essayez toujours de voir les choses telles qu'elles sont aussi - rappelez-vous que les «utilisateurs» sont des personnes, et ils ne sont pas toujours logiques ou rationnels. Entrainez-vous à faire preuve d'empathie avec les gens en utilisant ce que vous créez.
N'oubliez pas l'objectif.
Parfois, il est facile de s'enliser dans une cible / implémentation particulière (par exemple, «comment pouvons-nous adapter ces contrôles X dans l'interface utilisateur?») Au lieu de se souvenir du véritable objectif (comme «comment permettre à l'utilisateur de faire Y?») )
N'arrêtez jamais d'apprendre.
Les connaissances générales peuvent être une grande source d'inspiration - de nombreux problèmes ont déjà été résolus par quelqu'un - plus vous en savez, plus vous vous souvenez de quelque chose qui s'applique à la situation actuelle.
Soyez un bon programmeur, pas seulement un bon [langage de programmation].
N'ayez pas peur d'apprendre plusieurs technologies et techniques - même plusieurs langues «qui se chevauchent» peuvent vous aider à voir les choses en termes différents, mais une bonne variété de langues différentes peut vous aider davantage. Bien sûr, choisissez quelques domaines à spécialiser / maîtriser, mais assurez-vous également d'avoir une bonne base dans les concepts généraux, que vous pouvez acquérir en apprenant plusieurs langues différentes,
Ne présumez pas que quelqu'un est trop inexpérimenté pour vous aider.
Parfois, des personnes qui ne semblent pas très bien informées ou qui n'ont jamais programmé peuvent sembler inutiles pour un problème de programmation - mais cela ne signifie pas que vous devez les ignorer. Tout le monde a des perspectives et des compétences différentes et peut fournir un aperçu unique qui vous propose une solution.
Les jeunes enfants peuvent surtout être une bonne source d'une perspective «intacte» qui peut être source d'inspiration.