Faits: Faits: A. A.a En 1992, A._ a décidé d'entreprendre d'importantes transformations et rénovations dans un chalet dont elle est propriétaire à Crans (Valais). Elle a confié les travaux de ferblanterie, de couverture, d'installations sanitaires et de chauffage à B._ qui exploite une entreprise spécialisée dans ces domaines. Pour des raisons budgétaires, A._ a voulu réaliser ces rénovations par étapes sur plusieurs années. B._ a exécuté les travaux convenus de 1992 à fin 1996, sous réserve de travaux de réfection qui se sont prolongés durant l'année 1997 et une partie de l'année 1998. A.b Au cours de l'exécution des travaux, A._ s'est plainte de plusieurs malfaçons qui ont causé des dégâts au chalet. Elle a notamment imputé les malfaçons suivantes à B._: - Le 3 septembre 1997, A._ a informé le prénommé que les radiateurs de deux chambres à coucher et d'une salle de bains ne fonctionnaient pas. Après dix jours de recherches avec un collaborateur, B._ a déterminé, en janvier 1998, que le dysfonctionnement provenait du fait que les tubes d'arrivée et de départ d'eau de l'ancienne installation de chauffage avaient été inversés lors de la construction du chalet. Comme A._ avait informé B._ que des locataires devaient occuper le chalet à partir du 20 janvier 1998, celui-ci a mis à disposition des radiateurs électriques. L'entrepreneur a dû casser la chape de béton de deux chambres à coucher et démonter le plafond de l'étage inférieur pour remédier au problème. Le 12 janvier 1998, l'intéressé a informé la propriétaire que l'installation de chauffage fonctionnait normalement. B._ n'a pas facturé son intervention. - Le 29 mai 1998, B._ a annoncé à A._ que la vanne d'un radiateur était fissurée. Cela a provoqué une inondation tant dans la chambre concernée que sur le plafond et le plancher de la chambre de l'étage inférieur. Il n'a pas été établi si cette fissure avait pour origine un défaut du radiateur lui-même ou si elle était apparue au cours de l'installation de l'appareil ou postérieurement, en raison du fait d'un tiers. B._ a payé une partie des frais de remise en état; le solde a été payé par l'assurance de A._. A.c Au fur et à mesure de l'avancement des travaux, soit entre le 18 août 1992 et le 6 février 1997, B._ a adressé à A._ toute une série de factures pour un montant total, après rabais, arrêté à 137'429 fr. 75. Jusqu'au 29 avril 1996, A._ a versé à B._, par acomptes, un montant total de 108'000 fr. A.d Au printemps 1997, A._ a cherché à louer son chalet à un couple, qui y a renoncé en raison du prix demandé. Le 12 février 1998, B._ a adressé à A._ un décompte duquel ressortait un solde impayé de 29'429 fr. 75. Malgré de nombreux rappels, A._ a refusé de s'acquitter de ce montant. Le 12 février 1998, B._ a adressé à A._ un décompte duquel ressortait un solde impayé de 29'429 fr. 75. Malgré de nombreux rappels, A._ a refusé de s'acquitter de ce montant. B. Après lui avoir fait notifier une poursuite, frappée d'opposition, B._ a assigné le 19 février 1999 A._ en paiement de 29'429 fr. 75 avec suite d'intérêts. Dans ses dernières conclusions, la défenderesse a émis des prétentions reconventionnelles en paiement d'un total de 173'000 fr., soit 128'000 fr. à titre de dédommagement pour la perte locative du chalet, 25'000 fr. pour la remise en état de salles de bains et 20'000 fr. d'indemnité forfaitaire pour le travail facturé à double par B._. Elle a conclu à ce que "la somme ainsi que les intérêts réclamés par (le demandeur soient) purement annulées" et a encore invoqué la compensation. Par jugement du 24 septembre 2003, la IIe Cour civile du Tribunal cantonal valaisan a condamné la défenderesse à verser au demandeur la somme de 29'429 fr. 75 avec intérêts à 5% sur 16'000 fr. dès le 25 février 1998 et sur 13'429 fr. 75 dès le 20 mai 1998; la cour cantonale a prononcé la mainlevée définitive de l'opposition au commandement de payer notifié à la défenderesse et déclaré irrecevables les prétentions reconventionnelles formées par celle-ci. En substance, l'autorité cantonale a retenu que la créance de l'entrepreneur pour le solde de ses travaux était établie. Si la défenderesse - pour des motifs liés aux règles de la procédure cantonale - n'était pas en droit d'émettre des prétentions reconventionnelles, elle pouvait en revanche opposer en compensation la perte de gain qu'elle prétendait avoir subie du fait des défauts de l'ouvrage; cependant, d'une part, le dommage invoqué n'était pas consécutif à un défaut imputable à une faute de l'entrepreneur; d'autre part, le maître n'avait pas établi l'existence d'un préjudice. Enfin, les magistrats valaisans ont retenu que le demandeur n'avait pas été en demeure par sa faute d'exécuter des travaux ou de remédier à des défauts. En substance, l'autorité cantonale a retenu que la créance de l'entrepreneur pour le solde de ses travaux était établie. Si la défenderesse - pour des motifs liés aux règles de la procédure cantonale - n'était pas en droit d'émettre des prétentions reconventionnelles, elle pouvait en revanche opposer en compensation la perte de gain qu'elle prétendait avoir subie du fait des défauts de l'ouvrage; cependant, d'une part, le dommage invoqué n'était pas consécutif à un défaut imputable à une faute de l'entrepreneur; d'autre part, le maître n'avait pas établi l'existence d'un préjudice. Enfin, les magistrats valaisans ont retenu que le demandeur n'avait pas été en demeure par sa faute d'exécuter des travaux ou de remédier à des défauts. C. Parallèlement à un recours de droit public qui a été déclaré irrecevable par arrêt de ce jour, A._ exerce un recours en réforme au Tribunal fédéral. Elle conclut au déboutement du demandeur de toutes ses conclusions. L'intimé propose le rejet du recours.