Faits :
A.
A._ a été engagée en qualité d'ingénieure informatique à la direction des systèmes d'information et de communication de la Ville de Genève dès le 1 er janvier 2010. Elle avait tout d'abord un statut d'auxiliaire. Elle a ensuite été nommée employée avec effet au 1 er janvier 2011. Le 10 septembre 2014, le Conseil administratif de la Ville a ouvert à son encontre une enquête administrative. Celle-ci a été confiée à des juristes du service juridique de la Ville, qui ont rendu leur rapport le 11 mai 2015. Il ressortait notamment de celui-ci que l'employée semblait disposer des compétences techniques requises pour son poste. Il lui était toutefois reproché d'avoir adopté à plusieurs reprises un comportement inapproprié envers certains collègues et son supérieur hiérarchique, d'avoir manqué de vigilance et de contrôle pour des plateformes informatiques (avec une responsabilité partagée de son supérieur hiérarchique), d'avoir omis de signaler un conflit d'intérêts lors de l'élaboration du cahier des charges d'un appel d'offres et d'avoir introduit manuellement (avec toutefois la participation de son supérieur hiérarchique) des heures en sa faveur dans le système de décompte horaire, apparemment pour compenser du travail effectué pendant un congé maternité.
Le 13 mai 2015, le Conseil administratif a transmis le rapport d'enquête à A._ en l'informant qu'il envisageait de la licencier pour motif objectivement fondé. L'intéressée était invitée à se déterminer jusqu'au 1 er juin 2015 et à faire savoir si elle désirait être entendue par une délégation du Conseil. A._ a pris position par écriture du 29 mai 2015. Les 23 juin et 22 juillet 2015, assistée d'une secrétaire syndicale, elle a eu des entretiens avec B._, directeur général de la Ville de Genève.
Par décision du 29 juillet 2015, le Conseil administratif a résilié les rapports de service de A._ avec effet au 30 novembre 2015. L'employée était libérée de son obligation de travailler jusqu'au terme du délai de congé. Par lettre du 12 août 2015, A._ a demandé à être entendue oralement par une délégation du Conseil administratif. Elle a précisé qu'elle avait demandé une telle audition dans un courrier d'accompagnement à ses déterminations du 29 mai 2015 sur le rapport d'enquête. En outre, elle affirmait avoir réitéré sa demande lors de l'entretien qu'elle avait eu avec B._ le 23 juin 2015. Elle demandait le retrait de la décision du 29 juillet 2015. Le 14 septembre 2015, le Conseil a répondu qu'elle avait été valablement entendue par B._, quand bien même elle n'avait pas sollicité d'audition dans ses observations du 29 mai 2015. Le Conseil a rappelé, par ailleurs, qu'elle avait eu la possibilité de se déterminer tant oralement que par écrit. Il déclarait, en conclusion, qu'il n'entrerait pas en matière sur sa demande de retrait de la décision litigieuse.
B.
Par écriture du 14 septembre 2015, A._ a recouru devant la Cour de justice de la République et canton de Genève (Chambre administrative). Elle a contesté l'existence d'un motif de licenciement et s'est plainte d'avoir été licenciée sans avoir été entendue par une délégation de l'exécutif communal.
Le juge délégué a tenu une audience de comparution des parties. En outre, il a procédé à l'audition de la secrétaire syndicale qui avait assisté A._ ainsi que de B._. Le représentant de la Ville a confirmé que celle-ci n'avait pas reçu le courrier accompagnant les déterminations de l'employée du 29 mai 2015.
Statuant le 24 novembre 2015, la Chambre administrative a constaté la nullité de la décision du 29 juillet 2015 et, pour ce motif, a déclaré irrecevable le recours porté devant elle.
C.
La Ville de Genève forme un recours en matière de droit public dans lequel elle conclut à l'annulation de l'arrêt attaqué et à la confirmation de sa décision de licenciement. Subsidiairement, elle conclut au renvoi de la cause à la juridiction cantonale pour nouvelle décision. Préalablement, elle a demandé l'effet suspensif à son recours.
A._ a conclu au rejet tant du recours que de la requête d'effet suspensif.
D.
Par ordonnance du 11 mars 2016, le juge instructeur a attribué l'effet suspensif au recours.

Considérant en droit :
1.
Le jugement entrepris a été rendu en matière de rapports de travail de droit public au sens de l'art. 83 let. g LTF. Dans la mesure où la contestation porte sur la résiliation de ces rapports, il s'agit d'une contestation de nature pécuniaire, de sorte que le motif d'exclusion de l'art. 83 let. g LTF n'entre pas en considération (cf. p. ex. arrêt 8C_702/2014 du 16 octobre 2015 consid. 1). La valeur litigieuse est supérieure au seuil de 15'000 fr., qui ouvre la voie du recours en matière de droit public en ce domaine (art. 51 al. 2 et 85 al. 1 let. b LTF).
2.
Selon l'art. 89 al. 2 let. c LTF, les communes et les autres collectivités de droit public ont qualité pour recourir en invoquant la violation de garanties qui leur sont reconnues par les constitutions cantonale ou fédérale. La Ville de Genève invoque en l'espèce l'autonomie qui lui est reconnue dans le domaine de la gestion du personnel. Il y a donc lieu de lui reconnaître la qualité pour agir sur la base déjà de cette disposition. La question de savoir si elle est réellement autonome dans le domaine considéré relève du fond (<ref-ruling> consid. 1.2.4 p. 41; <ref-ruling> consid. 1.2 p. 45). Au reste, la recourante a également qualité pour agir sur la base de l'<ref-law>. En effet, la jurisprudence admet que la collectivité publique, en tant qu'employeur, a un intérêt spécifique digne de protection à l'annulation ou à la modification d'une décision d'un tribunal favorable à son agent lorsqu'elle conteste une décision qui l'oblige à fournir des prestations pécuniaires qui pourraient être dues par tout employeur dans une situation comparable ou qu'elle conteste une décision qui l'oblige à réintégrer un employé (<ref-ruling> consid. 3.2 p. 255; <ref-ruling> consid. 2.3 p. 206 s.; arrêt 8C_78/2012 du 14 janvier 2013 consid. 1.2)
3.
3.1. Sous le titre "Décisions concernant les membres du personnel", les art. 95 ss du Statut du personnel du 29 juin 2010 de la Ville de Genève (LC 21 151) (entré en vigueur le 31 décembre 2010) prévoient notamment ce qu'il suit:
Art. 95 Principe
1 L'employeur statue par décision dans tous les cas où le présent statut le prévoit.
2 En outre, l'employeur rend une décision en cas de litige lié aux rapports de service si aucun accord n'intervient.
3 La compétence est régie par l'article 4 alinéas 4 et 5.
Art. 96 Procédure applicable
1 La procédure de décision est régie par la loi sur la procédure administrative, en particulier en ce qui concerne la notification et la motivation des décisions.
2 Les membres du personnel ont la possibilité de s'exprimer par écrit sur les motifs invoqués à l'appui de la décision. Les membres du personnel ont également droit à une audition orale devant l'autorité compétente pour rendre la décision, ou une délégation de celle-ci s'il s'agit du Conseil administratif, avec le droit de se faire assister.
3.2. Les premiers juges ont considéré que la question de savoir si, comme le prétendait l'intimée, elle avait joint à ses observations du 29 mai 2015 un courrier par lequel elle demandait son audition par une délégation du Conseil administratif pouvait demeurer indécise. En effet, les déclarations convergentes de l'intimée, de la secrétaire syndicale qui l'assistait et du directeur général faisaient état d'une demande dans ce sens lors des entretiens des 23 juin et 22 juillet 2015. Cette demande, formulée avant la décision de résiliation des rapports de service du 29 juillet 2015, avait donc été présentée valablement et en temps utile.
La juridiction cantonale a par ailleurs écarté l'argument de la Ville selon lequel il était admis que la délégation du Conseil soit formée du directeur général de la Ville, lui-même au bénéfice d'une délégation générale de l'exécutif. Elle a rappelé que cette question avait été examinée dans deux arrêts sous le régime de l'ancien statut applicable au personnel de l'administration municipale, qui prévoyait déjà la possibilité de demander une audition par une délégation du Conseil administratif en cas de licenciement après la période d'essai, cela pour tous les fonctionnaires de la Ville. Dans l'ATA/836/2010 du 30 novembre 2010, le tribunal administratif avait jugé que le Conseil administratif, dès lors qu'il pouvait pour des cas précis déléguer ses compétences de représentation, conformément à l'art. 50 al. 5 de la loi
du 13 avril 1984 sur l'administration des communes (LAC; RS/GE B 6 05) et du moment que l'ancien statut ne précisait pas quelle devait être la composition de la délégation, celle-ci pouvait être formée d'un seul magistrat. Par la suite, dans l'arrêt ATA/185/2011 du 22 mars 2011, la cour cantonale avait admis que l'obligation d'audition n'impliquait pas que le Conseil doive procéder dans tous les cas à une audition directe de la personne concernée. Il pouvait déléguer cette faculté à un membre de la haute hiérarchie de l'administration (dans cette affaire, la décision de licenciement était intervenue le 26 août 2009, de sorte que les rapports de fonction étaient soumis à l'ancien statut).
La cour cantonale a toutefois considéré que cette dernière jurisprudence ne pouvait pas être confirmée "au vu de l'évolution du rôle de l'employeur conféré au Conseil administratif par le (nouveau) statut et de la portée du droit d'être entendu offert aux membres du personnel". Aussi bien l'intimée aurait-elle dû être entendue par une délégation du Conseil administratif composée d'au moins un membre de cette autorité. Les deux entretiens qu'elle avait eus avec le directeur général ne pouvaient suppléer cette omission. Celle-ci représentait une violation grave d'un droit de procédure essentiel de l'employé public dans le système mis en place par la Ville. Le vice était si grave qu'il devait conduire à la nullité de la décision attaquée.
3.3. Le contenu du droit d'être entendu et les modalités de sa mise en oeuvre sont déterminés en premier lieu par les dispositions cantonales de procédure, dont le Tribunal fédéral ne revoit l'application et l'interprétation que sous l'angle restreint de l'arbitraire; dans tous les cas, l'autorité cantonale doit cependant observer les garanties minimales déduites de l'art. 29 al. 2 Cst., dont le Tribunal fédéral examine librement le respect (<ref-ruling> consid. 2.1.1 p. 161). Ces garanties minimales comprennent, en particulier, le droit pour la personne concernée de s'expliquer avant qu'une décision ne soit prise à son détriment, celui de fournir des preuves quant aux faits de nature à influer sur le sort de la décision, celui d'avoir accès au dossier, celui de participer à l'administration des preuves, d'en prendre connaissance et de se déterminer à leur propos. Il s'agit de permettre à une partie de pouvoir mettre en évidence son point de vue de manière efficace (<ref-ruling> consid. 4.1.1 p. 52 ss et les arrêts cités). En matière de rapports de travail de droit public, l'employé doit connaître l'ensemble des faits qui lui sont reprochés et leurs conséquences probables (arrêts 8C_866/2010 du 12 mars 2012 consid. 4.1.2; 8C_158/2009 du 2 septembre 2009 consid. 5.2 non publié aux <ref-ruling>). Il n'est par exemple pas admissible, sous l'angle du droit d'être entendu, de remettre à l'employé une décision de résiliation des rapports de service en se contentant de lui demander de s'exprimer s'il le désire. Sauf cas d'urgence, le collaborateur doit pouvoir disposer de suffisamment de temps pour préparer ses objections. En ce domaine, comme dans d'autres d'ailleurs, il n'existe toutefois pas un droit à être entendu oralement (arrêt 8D_4/2015 du 24 août 2016 consid. 4.1).
3.4.
3.4.1. En l'espèce, il est incontestable - et d'ailleurs incontesté - que l'intimée a bénéficié des garanties minimales que lui conférait l'art. 29 al. 2 Cst. La question est de savoir si elle devait ou non être entendue par une délégation des magistrats membres du Conseil administratif ou si son audition par B._ était suffisante au regard des exigences du droit cantonal. Entre autres griefs, la recourante fait valoir que la Chambre administrative a opéré un changement de jurisprudence sans que les conditions mises à un tel changement n'aient été réunies.
3.4.2. Un changement de jurisprudence ne se justifie, en principe, que lorsque la nouvelle solution procède d'une meilleure compréhension de la ratio legis, repose sur des circonstances de fait modifiées ou répond à l'évolution des conceptions juridiques; sinon, la pratique en cours doit être maintenue. Un changement doit par conséquent reposer sur des motifs sérieux et objectifs qui, dans l'intérêt de la sécurité du droit, doivent être d'autant plus importants que la pratique considérée comme erronée, ou désormais inadaptée aux circonstances, est ancienne (<ref-ruling> consid. 4.4 p. 117 et les arrêts cités). Le droit à la protection de la bonne foi, qui découle de l'art. 9 Cst., doit néanmoins être pris en considération. Le Tribunal fédéral a par exemple jugé que la modification d'une jurisprudence relative aux conditions de recevabilité d'un recours, notamment à la computation des délais de recours, ne doit pas intervenir sans avertissement, si elle provoque la péremption d'un droit (<ref-ruling> consid. 4.2 p. 81; <ref-ruling> consid. 3d p. 61).
3.4.3. En l'espèce, on peine à discerner dans les arguments avancés par la cour cantonale des motifs justifiant un changement de jurisprudence. Si, comme cela ressort des travaux préparatoires auxquels elle se réfère, le Conseil administratif voulait renforcer le droit des employés à une audition, on ne peut pas nécessairement en déduire, comme le fait la cour, qu'il a voulu en même temps modifier les modalités des auditions lorsque le Conseil administratif est compétent pour prononcer le licenciement. On ne peut pas non plus tirer cette conclusion de la volonté du Conseil d'ancrer dans le nouveau statut les instruments modernes de gestion du personnel. Au contraire, cet élément de modernité, invoqué par la cour, plaiderait plutôt en faveur d'une délégation des compétences de gestion du personnel en faveur d'un organe subordonné au Conseil administratif. La cour cantonale souligne par ailleurs qu'il est conforme à la logique du système mis en place sous l'impulsion du Conseil administratif lui-même que ce dernier soit directement partie prenante lors de l'audition orale de l'employé, non pas in corpore, mais par la présence d'un ou plusieurs de ses membres dans la délégation prévue par le statut. Mais l'établissement d'un lien direct entre les membres de l'exécutif et le salarié eût été tout aussi important sous l'ancien statut et la juridiction cantonale n'invoque pas ici une connaissance plus exacte ou plus approfondie de l'intention du législateur communal. D'un autre côté, comme elle le relève, l'arrêt ATA/185/2011 du 22 mars 2011 est une jurisprudence isolée, ce que ne conteste pas la Ville. En outre on ne saurait guère faire grief à la cour cantonale d'adopter pour l'avenir une jurisprudence qui est plus proche du texte des statuts, qui parle à l'art. 96 al. 2 de "délégation du Conseil administratif", ce qui, pris à la lettre, exclut une représentation déléguée à un haut fonctionnaire de la Ville.
La question de savoir si les motifs invoqués par la Cour cantonale justifiaient un changement de jurisprudence peut toutefois demeurer ouverte en l'espèce. Il n'est pas nécessaire, en effet, de se prononcer définitivement sur la question.
Dans sa lettre du 14 septembre 2015, le Conseil administratif s'est explicitement référé à l'art. 96 al. 2 du Statut pour affirmer que, contrairement aux allégués de l'intimée, celle-ci avait bien été reçue sur délégation du Conseil administratif par le directeur général de la Ville. Dans sa réponse au recours cantonal, la Ville s'est en outre prévalue de la jurisprudence de l'ATA/185/2011 en soulignant qu'il suffisait que la personne chargée de l'audition fasse partie de la haute hiérarchie de l'administration communale, ce qui est indiscutablement le cas de B._. La recourante avait donc toutes les raisons de ne pas revenir sur sa décision, dont l'intimée demandait le "retrait". Elle n'avait par ailleurs pas de motif de penser que la juridiction cantonale reviendrait sur sa jurisprudence. Si elle avait eu connaissance de ce revirement, elle aurait pu éviter les conséquences de la nullité qu'en a tirées - à tort ou à raison (question sur laquelle il n'y a pas lieu de se prononcer à ce stade) - la juridiction précédente. Dans ces conditions, le changement de jurisprudence, supposé qu'il fût admissible, ne pouvait pas être appliqué immédiatement au cas présent (supra consid. 3.4.2).
4.
Par conséquent, il faut admettre que l'intimée a été valablement entendue avant le prononcé de son licenciement. Il convient, dès lors, d'annuler le jugement attaqué et de renvoyer la cause à la juridiction précédente pour qu'elle statue à nouveau, notamment qu'elle se prononce sur l'existence d'un motif fondé de licenciement.
5.
Succombant, l'intimée supportera les frais judiciaires. Il n'est pas alloué de dépens à la Ville (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis. Le jugement attaqué est annulé. La cause est renvoyée à l'autorité précédente pour nouvelle décision.
2.
Les frais judiciaires, arrêtés à 3'000 fr., sont mis à la charge de l'intimée.
3.
Le présent arrêt est communiqué aux parties et à la Chambre administrative de la Cour de justice de la République et canton de Genève.
Lucerne, le 18 novembre 2016
Au nom de la Ire Cour de droit social
du Tribunal fédéral suisse
Le Président : Maillard
La Greffière : Castella