[JAVA] Je veux faire du développement d'équipe à distance

introduction

Cet article est le premier article du Calendrier de l'Aventar de Valtech Co., Ltd..
Je suis ingénieur de 4e année et j'utilise Java pour les affaires.

Les raisons de choisir «Je veux faire du développement d'équipe à distance» comme thème sont les suivantes. ・ Je souhaite créer une équipe en dehors du travail ・ Je veux trouver des amis intéressés par le développement d'équipe

Ce qui suit est un résumé cette fois. ・ [Image de développement d'équipe et livrables dans le processus](image de développement #Team et livrables dans le processus) ・ [Outils pour aider au développement d'équipe](#Tools pour aider au développement d'équipe) ・ [Outil pour accélérer le développement d'équipe](#Tool pour accélérer le développement d'équipe)

Ce dont les coéquipiers individuels ont besoin lors du développement d'une équipe

・ Environnement Internet ・ PC (SmartPhone, tablette non disponible)

Si ça ne te dérange pas

"Des situations comme celle-ci sont supposées" "Il existe un tel outil" "Je suis excellent" Si vous avez des questions, veuillez suivre ou commenter! Cet article sera maintenu après le calendrier de l'Avent.

À propos du développement d'équipe

Susume

Tout d'abord, énumérons les avantages du développement d'équipe à partir de chez vous.

Avantages Remarques
Idées de 10 personnes et 10 couleurs Nouvelles idées
Réalisation d'examens mutuels Expérience de l'examinateur
Partage de savoir-faire Absorption de connaissances autres que la personne

À propos des restrictions

Restrictions Remarques
Différences dans les spécifications de la machine Les outils peuvent ou non être pris en charge en raison de différences dans le système d'exploitation
Problèmes de sécurisation du temps Il n'y a aucune garantie que tout le monde aura du temps en semaine
Manipulation des outils payants La plupart des outils gratuits peuvent être remplacés

Restrictions que je recommande

  1. Assurez-vous de créer des minutes et d'accumuler des remarques et des idées
    Lorsque des retouches se produisent, cela conduit à un manque de motivation des coéquipiers.
  2. Ne laissez pas d'informations inutiles comme commentaire de correction
    Si vous utilisez la gestion des versions, incluez un commentaire dans le message de validation.

À propos de la sélection de la technologie

Le produit développé est supposé avoir la configuration suivante. J'aimerais pouvoir louer un serveur de location et publier une sorte d'application Web.

Application Server
Java9
Linux
RDB(MySql 8.0)

Si l'application Web est strictement séparée côté serveur et côté client Il semble que ce soit une tendance récente à échanger des informations du client vers le serveur via json.

Image de développement de l'équipe et livrables dans le processus

Énumération approximative des processus

En fait, il fut un temps où deux personnes se développaient à Baltec après l'heure fixée. Il y a des antécédents d'échec en raison de restrictions telles que les inconvénients les uns pour les autres et l'incapacité de retirer des matériaux au sein de l'entreprise. .. .. Sur la base de l'expérience ci-dessus, c'est ma meilleure pratique pour le processus de planification.

Hypothèse: cascade jusqu'à la sortie initiale, puis agile

  1. Définition de la demande
  2. Définition des exigences
  3. Conception générale
  4. Conception détaillée
  5. Développement
  6. Examen
  7. Fonctionnement (ci-après, répétez les étapes 1 à 7)

Cascade: Même s'il y a une omission dans le document de conception du processus précédent, le fichier ne sera pas écrasé de toute façon. Créez un diff, écrivez-le là, fusionnez à la fin et donnez une version mineure. Agile: Nous réviserons le document de conception de temps en temps et donnerons une version mineure après la publication.

1. Définition de la demande

Livrable: définition des exigences

Nous discuterons en gros de ce que vous voulez faire au sein de l'équipe et de la technologie que vous souhaitez mettre en œuvre. En tant que moyen de discussion, en face à face dans un café ou une web conférence, S'il n'y a pas de partie de sortie, il sera extrêmement difficile d'unifier la conscience globale. Exemple: tableau blanc dans une salle de conférence, dessin dans Excel

2. Définition des exigences

Livrables: document de définition des exigences, tableau des effectifs de conception

Nous étudierons et résumerons les spécifications techniques pour faire fonctionner ce que vous voulez faire.

Au moment de la publication initiale, seule la configuration minimale sera utilisée et les fonctions riches seront compatibles avec la prochaine version. (Parce qu'il est difficile de maintenir la motivation si vous ne faites pas de klaxon et ne le bougez pas)

Clarifier dans quel processus le traitement et les accords communs (engagements) seront discutés s'ils sont à l'ordre du jour.

3. Conception de contour

Livrables: document de définition d'écran, document de définition d'interface, document de définition de base de données, tableau détaillé des effectifs de conception

J'ai une expérience de terrain avec l'API RESTFul Client <-> J'ai de l'expérience avec Swagger (décrit plus loin) en tant que document de définition d'interface entre serveurs. Swagger est recommandé comme documentation de l'API RESTFul.

Du côté client, je pense qu'il est nécessaire de laisser la maquette basée sur html comme un livrable. (Depuis Spring Boot crée des écrans basés sur html) De plus, il est nécessaire de couvrir le diagramme de transition d'écran et le motif d'écran au moment de l'occurrence normale / anormale.

4. Conception détaillée

Livrables: document de conception de programme, document de conception de test, document de définition de message, tableau d'effort de développement

Créez un document de conception de programme et un document de conception de test sous forme d'ensemble. Lors de la mise en œuvre d'une conception de test, assurez-vous d'identifier les modèles qui peuvent être implémentés en commun. Le format du document de conception détaillée au Japon semble être Excel. Cependant, Excel est facturé, je voudrais donc utiliser un format différent. Je n'ai aucune expérience avec cela, mais je souhaite utiliser Sphinx (décrit plus loin).

Identifiez les messages d'erreur et divers messages et gérez-les de manière à ce qu'il n'y ait pas de contenu en double.

5. Développement

Livrables: code produit, code de test, tableau d'effort de test

Assurez-vous de vous engager et de pousser les livrables du jour

Les normes de codage qui peuvent être partagées, les règles d'analyse statique, etc. doivent être conservées dans un stockage partagé

Liez et définissez les outils de gestion et de création de version, et implémentez [Intégration continue](https://ja.wikipedia.org/wiki/Continuous Integration) en arrière-plan.

Dans ce processus, la production du programme et la production de la source de test (test unitaire) sont terminées.

6. Examen

Livrables: spécifications de test, code de test, tableau de gestion des bogues

Les tests qui ne peuvent pas être effectués dans le processus de développement sont exécutés dans ce processus. Tests manuels depuis le navigateur, tests d'intégration interfonctionnels, etc. ..

Assurez-vous d'ajouter des "Tags" à la source avant et après le début du test. De plus, créez un tableau de gestion des bogues pour accumuler des connaissances sur les écarts de reconnaissance lors du développement de l'équipe et en avoir une idée.

7. Fonctionnement

Relâchez la source sur le serveur de production et appuyez légèrement sur diverses fonctions depuis l'écran. (Vous pouvez automatiser les éléments de vérification des opérations qui doivent être exécutés à chaque version et les vérifier ultérieurement.)

Passez à l'agilité, répétez les tests à partir de la définition des exigences et répétez le développement pendant une courte période.

Outils d'aide au développement de l'équipe

Outil de chat

Articles nécessaires
1: Peut parler avec N
Remarque: le journal reste, le journal peut être recherché
Le flux pour parler n'est pas un détour
Il ne faut pas beaucoup de temps pour augmenter le nombre d'employés
Pas lourd

-> Slack

référence

Conférence Web

Articles nécessaires
1: Peut être exécuté avec N
Peut passer des appels vocaux et des messages sortants
Le partage d'écran est possible

-> Skype, Google Hangout

référence

Stockage de documents

Articles nécessaires
Non écouté par un tiers
Il ne faut pas beaucoup de temps pour augmenter le nombre d'employés

-> Stockage en ligne (Google Drive)

référence

Gestion des problèmes

Articles nécessaires
Qui a rédigé
5W1H est exprimé au format par défaut
Peut générer des diagrammes de Gantt

-> Gestion des tickets (Redmine)

référence

Des outils pour accélérer le développement des équipes

création de documents

Articles nécessaires
Utilisation gratuite
Comparaison facile des différences

-> Sphinx

référence

Document de définition d'interface

Articles nécessaires
Utilisation gratuite
Majeur

-> Swagger

référence

contrôle de version

Articles nécessaires
La construction n'est pas un problème
Majeur

-> GitHub

référence

Éditeur de texte

Articles nécessaires
L'opération n'est pas lourde
La syntaxe met en évidence le travail
Peut être traduit en japonais

-> Visual Studio Code

référence

Outil de codage

Articles nécessaires
Peut fonctionner avec la gestion des versions
Auto-résolution
Peut être traduit en japonais

-> Laissez-vous faire

en conclusion

Défis pour cet article

Au moment de la publication de cet article, nous ne pouvions inclure aucun problème visible dans le développement de l'équipe. Exemple) Lors d'un développement à distance, je ne peux pas saisir toute la progression de mes coéquipiers. Je voudrais l'ajouter au bon moment, ou essayer l'analyse des risques lorsque l'équipe est constituée.

SpecialThanx Avant de publier l'article, j'ai demandé à mes seniors, juniors et ma femme de vérifier le texte. Je voudrais profiter de ce moment pour vous remercier.

Aussi, je recherche un développeur d'équipe à distance. Les mots incluent «Spring Boot», «Java 9», etc.

Recommended Posts

Je veux faire du développement d'équipe à distance
Je veux faire quelque chose comme "cls" en Java
Je veux convertir des caractères ...
[Swift] Je veux faire quelque chose comme sprinftf de C
Je veux vraiment faire "new T ()"! (Et sans exceptions d'inspection)
[Journal de développement ⑮] Je souhaite ajouter un lien externe ou un lien PDF
Je souhaite développer une application web!
Je veux écrire un joli build.gradle
Je souhaite éliminer les messages d'erreur en double
Je veux créer une application ios.android
Je veux écrire un test unitaire!
Je souhaite installer PHP 7.2 sur Ubuntu 20.04.
Je veux arrêter complètement les mises à jour Java
Je souhaite cibler les champs statiques sur @Autowired
Je veux trier par délimiteur d'onglet avec ruby
Exécuter R à partir de Java Je veux exécuter rJava
[Swift] Je veux dessiner des lignes de quadrillage (carrés)
Je souhaite envoyer un e-mail en Java.
Je souhaite terminer correctement l'installation de npm [2020]
Je veux utiliser java8 forEach avec index
Je souhaite transmettre APP_HOME pour me connecter à Gradle
Je veux écrire une simple répétition d'une chaîne de caractères
Mémo de développement ~ Je souhaite afficher uniquement la première image publiée plusieurs fois ~
Je souhaite concevoir une structure pour la gestion des exceptions
rsync4j --Je veux toucher rsync en Java.
Je souhaite créer l'environnement de développement local le plus solide à l'aide de conteneurs distants VSCode
Je veux jouer avec Firestore de Rails
Je veux être finalement même à kotlin
Je veux écrire rapidement de java vers sqlite
Je veux réduire les erreurs simples. Pour vous commander.
Je souhaite effectuer un traitement d'agrégation avec spring-batch
[Rails] Je veux charger du CSS avec webpacker
Je souhaite supprimer un fichier géré par Git
Je veux obtenir la valeur en Ruby
Je souhaite également utiliser Combine dans UIKit.
Je souhaite utiliser les fonctions pratiques de Clojure dans Kotlin
Je veux appeler une méthode d'une autre classe
[Java] Je souhaite calculer la différence par rapport à la date
Je veux utiliser NetBeans sur Mac → Je peux l'utiliser!
Je veux intégrer n'importe quel TraceId dans le journal
Expression de pointage Je souhaite en spécifier plusieurs
Je veux aussi utiliser des coquillages à Laradock! !!
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Flux appris (je veux convertir la liste en carte <Integer, List>)
Je veux juger la gamme en utilisant le diplôme mensuel
Je veux utiliser une petite icône dans Rails
Que dois-je faire pour recharger le Dockerfile mis à jour?
Je veux connaître la réponse de l'application Janken
Je souhaite utiliser le mode sombre avec l'application SWT
Je souhaite surveiller un fichier spécifique avec WatchService
Je souhaite appliquer ContainerRelativeShape uniquement à des coins spécifiques [SwiftUI]
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth