Comme toute compétence, il faut du temps et beaucoup de pratique pour apprendre. Ce n'est pas tant sur la connaissance des techniques, mais de construire une solide intuition pour savoir quand une technique qui va ou ne va pas travailler.
Une grande partie de l'apprentissage est d'apprendre de vos erreurs. Donc, faire beaucoup d'erreurs et de les rendre le plus rapidement possible. Les projets doivent être relativement de courte durée. Traiter avec buggy, mal conçu choses que vous avez fait ne vous enseigne rien, à part les conséquences de l'écriture buggy, mal conçu choses.
Dans votre conception, les trouver le point d'équilibre entre le fait d'avoir pensé le problème au sérieux et à venir avec un design que vous pourrait réellement finir. Dans presque tous les cas, la tendance est à la sur-ingénieur, donc, Keep It Simple, Stupid (KISS) et de faire la chose la plus simple qui pourrait éventuellement fonctionner. Gardez à l'esprit les ordinateurs ne sont pas infiniment puissant --- ils sont indéfiniment puissant. Vous pouvez ajouter toutes les fonctionnalités que vous souhaitez pour votre système, mais à un certain point que vous avez à dire "fuck it, rien d'autre que l'utilisateur veut faire, ils devront le faire avec un stylo et du papier".