A.- En mars 1998, X._ S.A. a engagé A._, né le 4 juin 1981, en qualité d'apprenti peintre en bâtiment. Ce dernier a obtenu son certificat de capacité en été 1999; il est resté au service de X._ S.A. A._ a obtenu la nationalité suisse le 16 février 2000. Le 17 mars 2000, il a déposé une demande afin d'accomplir l'école de recrues de manière anticipée, soit à partir de l'été suivant. Il en a informé son employeur en mai 2000, après avoir passé le recrutement le 8 mai 2000. B._, directeur de X._ S.A., l'a enjoint à renoncer à ce projet, car l'entreprise avait besoin de ses services; il a fait savoir au travailleur qu'il risquait de perdre son emploi. A._ n'a pas obtempéré. Le 30 mai 2000, X._ S.A. a résilié le contrat de travail pour le 30 juin 2000. Dès le lendemain, A._ ne s'est plus présenté sur son lieu de travail, sauf une fois début juin, pour encaisser son salaire de mai; il estimait en effet disposer d'un solde de vacances jusqu'à fin juin, ce qui a été contesté par l'employeur, qui fixait ledit solde à 9,5 jours. Par lettre du 7 juin 2000, le syndicat Z._, au nom de A._, a fait savoir à X._ S.A que le congé était soumis en l'espèce à un délai de préavis de deux mois et que le terme du contrat était reporté au 30 novembre 2000 en raison de l'école de recrues que le travailleur devait prochainement effectuer. Le 15 juin 2000, l'employeur a répondu dans les termes suivants: "Pour faire suite à votre lettre du 7 juin dernier, et notre entretien téléphonique du 9 juin dernier, je vous informe que Monsieur A._ n'a pas été renvoyé à cause du service militaire, mais aussi pour d'autres raisons, qui concernent son attitude envers les clients et envers nous même (sic), et des problèmes d'heures de travail. Concernant le service militaire, à ce jour nous n'avons toujours pas vu sa convocation. Comme vous le dites dans votre lettre, le 19 mai dernier il nous a informé qu'il allait partir à l'école de recrue (sic) le 10 juillet prochain, alors qu'il doit partir en 2001, car il a passé la toise le 9 mai de cette année. Donc Monsieur A._ ne nous averti (sic) même pas 2 mois à l'avance de son départ pour l'armée, alors que plus loin dans votre lettre vous nous dites que nous devons l'avertir 2 mois à l'avance en cas de congé. Ceci voudrait dire que Monsieur A._ a le droit de faire comme bon lui semble, vu que c'est lui qui a décidé de partir une année à l'avance à l'armée, et que suite au congé que nous lui avons envoyé en date du 30 mai pour fin juin 2000, il n'est pas revenu travailler. Il a donc abandonné son poste de travail le 31 mai 2000 et a à ce jour nous n'avons aucune nouvelle, à part votre lettre. Nous estimons donc que la lois (sic) doit aller dans les deux sens, et non toujours dans le sens de l'employé, qui lui croit avoir tous les droits.. " A._ a accompli l'école de recrues du 10 juillet au 20 octobre 2000. Il a retrouvé un emploi à la mi-janvier 2001. B.- Le 17 novembre 2000, A._ a ouvert action contre X._ S.A. en paiement, d'une part, d'un montant de 30 279 fr.95, représentant le salaire du 1er juillet 2000 au 31 janvier 2001 et une indemnité pour les vacances 1999 et 2000, et, d'autre part, d'un montant de 27 667 fr.50 à titre d'indemnité pour licenciement abusif, le tout avec intérêts. Par jugement du 14 février 2001, le Tribunal des prud'hommes du canton de Genève a débouté le demandeur de toutes ses conclusions. Statuant le 9 juillet 2001 sur appel de A._, la Cour d'appel des prud'hommes a annulé le jugement de première instance et condamné X._ S.A. à payer au travailleur la somme brute de 23 196 fr., plus intérêts à 5% dès le 1er octobre 2000. En appel, le demandeur avait notamment renoncé à réclamer une indemnité pour congé abusif. L'arrêt cantonal a été expédié pour notification le 4 septembre 2001. C.- X._ S.A. interjette un recours en réforme au Tribunal fédéral. Elle conclut à l'annulation de l'arrêt attaqué et au déboutement du demandeur de toutes ses conclusions. A._ a déposé deux réponses, dans lesquelles il propose l'irrecevabilité du recours pour cause de tardiveté et, subsidiairement, son rejet.