Cet article est resté dans mes brouillons depuis des mois, prenant la poussière. Enfin, je suis prête à le laisser voir le jour et à partager avec vous l’expérience de mon premier hackathon full-stack.
Je divulgue que je suis un développeur autodidacte et que ce hackathon était la première fois que je créais une application full-stack.
La tâche de ce hackathon était de créer une application mobile pour une société de logement et de mettre en œuvre des fonctions de base telles que l'envoi de rapports de maison, de demandes de logement, la consultation des relevés de loyer, la demande d'aide et l'affichage des FAQ.
J'étais le développeur Android, et les autres coéquipiers se sont battus face à face avec Xamarin pour IOS et ont construit le portefeuille de sites Web pour le projet.
Au fait, ne me demandez pas pourquoi nous n'avons pas utilisé Xamarin pour toutes les plateformes, nous sommes des mangeurs de quiches.
Dans le même temps, les règles du concours n'ont pas tenu compte du fait que les binaires Apple ne peuvent pas être distribués sans l'examen des Big Brothers.
Nous avons donc prévu de créer une application Android et de la compiler dans un binaire de plate-forme IOS via Xamarin.
( ...un de mes coéquipiers a suggéré ceci - je ne sais pas quelle magie de la compilation se produit, j'ai déjà construit un langage et je sais que changer de bundles de langues pour un autre n'est pas simple)
Pour Android, nous avons utilisé Javascript exécuté sur le framework DroidScript, en plus les autres coéquipiers se sont battus avec un autre hackathon et étaient à ma demande pour l'implémentation de fonctionnalités.
J'ai choisi DroidScript pour sa manière unique de réduire la complexité de l'interface utilisateur sur Android et son accès aux API natives tout en produisant un petit binaire.
De plus, je l'ai choisi en me basant sur mon expérience de développement d'interface utilisateur. J'ai récemment porté la bibliothèque Material Design 3 sur DroidScript en tant que plugin, donc l'interface utilisateur ne sera pas un problème.
J'ai décidé de ne pas ajouter Node.js pour l'application client, car Node est beaucoup trop lourd, mais pour l'application d'administration, j'ai utilisé Node.js avec des arômes esm partout.
Nous avons terminé le projet en 4 jours et avons commencé à rédiger l'application d'administration le jour même de la soumission, mais nous n'avons pas réussi à le terminer.
Alors, quel a été le résultat ? Eh bien, nous n’avons pas gagné ni même atteint le tour final. En fait, nous n’avons jamais reçu de commentaires ou de mises à jour, ce qui était frustrant. Je ne suis pas déçu par la perte mais par le manque de transparence.
Malgré tout, il y a eu quelques enseignements précieux à retenir de ce hackathon :
Écrire des tests, même lors d'un hackathon
Au début, nous avons sauté des tests en raison de contraintes de temps, mais cela est revenu nous mordre. Les tests nous auraient permis d'éviter de faire plus de 5 000 appels Firebase pendant le développement. Leçon apprise.
Ne sous-estimez pas XML DOM dans Android
Nous avons eu du mal avec les performances de l'interface utilisateur, en particulier lors de l'ajout dynamique de plusieurs éléments. La façon dont le DOM XML d'Android est géré par DroidScript s'est avérée plus lente que prévu. J'aurais dû utiliser Enjine.IO, une version Web de DroidScript (écrite par les principaux développeurs de DroidScript) mais plus rapide et bénéficiant des avantages d'être multiplateforme.
Réfléchissez à deux fois avant d'exclure Node.js
Nous pensions qu'exclure Node.js de l'application client permettrait d'économiser de l'espace, mais cela nous a coûté des fonctionnalités. Firebase était nettement plus lent lorsqu'il était intégré en tant que script, par rapport à son utilisation en tant que module Node. La prochaine fois, je reconsidérerais les compromis.
Merci d'avoir lu ! Cet article de blog a peut-être pris des mois, mais les leçons que j'ai apprises dureront beaucoup plus longtemps.
Vous pouvez consulter le projet ici : Hackathon Project.
Faites-moi part de vos commentaires !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!