Technique permettant de prioriser les besoins / exigences / définir un Minimum Viable Product
Pour un outil de gestion des tâches :
C'est un principe de conception utilisable (aéronautique, journalisme, ...)
La complexité est une source :
En conception technique :
En conception fonctionnelle :
Plusieurs interfaces clients spécifiques sont mieux qu'une générale qui gère tout
D : [DIP] : Dependency Inversion Principle
Il faut dépendre des abstractions et non des implémentations (Inversion des dépendances)
S : [SRP] : Single Responsibility Principle
O : [OCP] : Open/Close Responsible
L : [LSP] : Liskov Substitution Principle
I : [ISP] : Interface Segregation Principle
D : [DIP] : Dependency Inversion Principle
General Responsibility Assignment Software Patterns (Principles)
Le patron controller a la responsabilité de traiter avec les événements du système vers une classe (non-ui) qui représente l'ensemble du système
C'est le premier objet au-delà de la couche d'interface utilisateur qui reçoit et coordonne («contrôle») le fonctionnement du système.
Le contrôleur doit déléguer le travail qui doit être fait par d'autres objets.
La création d'objet est la chose la plus fondamentale
En général, une classe B est responsable de la création d'instances de la classe A si un ou plusieurs points suivants s'appliquent. Les instances de B
contiennent des instances de A (ou des aggregats)
enregistrent des instances de A
utilisent étroitement instances de A
disposent de l'information d'initialisation pour instances de A et passent sur la création.
Ne vous répétez pas !
Vous n'en aurez pas besoin !
Tout bon travail commencent par l'éveil de la curiosité des devs
Les bons devs savent quoi écrire, les meilleurs savent quoi réécrire ou réutiliser
Prevoir de jeter une version à la poubelle, de toute façon, c'est ce qui va se passer
Si vous avez la bonne attitude, les problèmes interessant vous trouveront
Quand vous perdez de l'intérêt pour un développement, votre dernier devoir est de le confier à un successeur compétent
Traiter vos utilisateurs comme des partenaires c'est la manière la plus rapide d'améliorer votre code et de corriger avec efficacité
Déployer au plus tôt, déployer le plus souvent et écoutez vos clients.
Avoir suffisament de développeurs et de béta-testeurs, permet d'identifier les problèmes rapidement et d'avoir une personne avec une solution évidente.
Avoir une structure de données intelligentes et du code stupide marche mieux que l'inverse
Si vous traitez vos beta-testeurs comme la plus précieuse des ressources, ils agiront alors comme tel.
Il faut reconnaitre que vos utilisateurs peuvent avoir de bonnes idées.
Souvent, le solution les plus frappantes et innovantes viennent du fait que le concept du problème était mauvais
La fameuse phrase de Saint-Exupéry
Un outil qui s'utilise comme vous le souhaitez c'est bien, un outil qui fait des choses inattendu (au delà de ce qui est prévu) c'est excellent
Lorsqu'on écrit une passerelle, il faut modifier le flux d'informations à minima et éviter de jeter des informations (sauf si le bénéficiaire vous y oblige)
Quand ton langage est loin d'être "turing-complete" alors le sucre syntaxique peut être ton ami
Un système sécurisé l'est seulement si c'est secret. Prenez garde aux pseudo-secrets
Pour résoudre un problème intéressant, commencer par trouver le problème qui est intéressant pour vous
Pourvu que le coordonnateur dispose d'un moyen de communication au moins aussi bon qu'Internet, et sait comment faire face aux contraintes.