Τα τελευταία δύο χρόνια, η ομάδα μου στο Work & Co και εγώ δοκιμάζουμε και ενσωματώνουμε σταδιακά εργαλεία κωδικοποίησης AI όπως Copilot, Cursor, Claude και ChatGPT για να μας βοηθήσουν να μεταφέρουμε εμπειρίες ιστού που χρησιμοποιούνται από τις μάζες. Ομολογουμένως, μετά από κάποιο αρχικό σκεπτικισμό και μερικές στιγμές, διάφορα εργαλεία τεχνητής νοημοσύνης έχουν βρει τον δρόμο τους στην καθημερινή μου χρήση. Με την πάροδο του χρόνου, η λίστα των εφαρμογών όπου βρήκαμε ότι ήταν λογικό να αφήσουμε την τεχνητή νοημοσύνη να αναλάβει άρχισε να μεγαλώνει, γι' αυτό αποφάσισα να μοιραστώ μερικές περιπτώσεις πρακτικής χρήσης για εργαλεία τεχνητής νοημοσύνης για αυτό που αποκαλώ τον «υπεύθυνο προγραμματιστή». Τι εννοώ με τον όρο υπεύθυνος προγραμματιστής; Πρέπει να βεβαιωθούμε ότι παρέχουμε ποιοτικό κώδικα όπως αναμένεται από τα ενδιαφερόμενα μέρη και τους πελάτες μας. Οι συνεισφορές μας (δηλαδή, τα αιτήματα έλξης) δεν θα πρέπει να αποτελούν βάρος για τους συναδέλφους μας που θα πρέπει να επανεξετάσουν και να δοκιμάσουν τη δουλειά μας. Επίσης, σε περίπτωση που εργάζεστε σε εταιρεία: Τα εργαλεία που χρησιμοποιούμε πρέπει να είναι εγκεκριμένα από τον εργοδότη μας. Οι ευαίσθητες πτυχές όπως η ασφάλεια και το απόρρητο πρέπει να αντιμετωπίζονται σωστά: Μην επικολλάτε μυστικά, δεδομένα πελατών (PII) ή ιδιόκτητο κώδικα σε εργαλεία χωρίς έγκριση πολιτικής. Αντιμετωπίστε το σαν κώδικα από έναν άγνωστο στο Διαδίκτυο. Πάντα να δοκιμάζετε και να επαληθεύετε. Σημείωση: Αυτό το άρθρο προϋποθέτει κάποια πολύ βασική εξοικείωση με εργαλεία κωδικοποίησης AI όπως το Copilot μέσα στο VSCode ή τον Δρομέα. Αν όλα αυτά σας φαίνονται εντελώς καινούργια και άγνωστα, τα εκπαιδευτικά βίντεο Github Copilot μπορούν να είναι ένα φανταστικό σημείο εκκίνησης για εσάς.
Χρήσιμες εφαρμογές των εργαλείων κωδικοποίησης AI Σημείωση: Τα ακόλουθα παραδείγματα θα επικεντρωθούν κυρίως στην εργασία σε εφαρμογές web που βασίζονται σε JavaScript, όπως το React, το Vue, το Svelte ή το Angular. Κατανόηση μιας άγνωστης βάσης κώδικα Δεν είναι ασυνήθιστο να εργάζεστε σε καθιερωμένες βάσεις κωδικών και η συμμετοχή σε μια μεγάλη βάση κώδικα παλαιού τύπου μπορεί να είναι τρομακτική. Απλώς ανοίξτε το έργο σας και τον πράκτορά σας AI (στην περίπτωσή μου, Copilot Chat στο VSCode) και ξεκινήστε να κάνετε ερωτήσεις όπως ακριβώς θα ρωτούσατε έναν συνάδελφο. Γενικά, μου αρέσει να μιλάω με οποιονδήποτε πράκτορα τεχνητής νοημοσύνης όπως θα ήθελα με έναν συνάνθρωπό μου. Ακολουθεί ένα πιο εκλεπτυσμένο παράδειγμα προτροπής: "Δώστε μου μια επισκόπηση αρχιτεκτονικής υψηλού επιπέδου: σημεία εισόδου, δρομολόγηση, ταυτότητα, επίπεδο δεδομένων, εργαλεία κατασκευής. Στη συνέχεια, απαριθμήστε 5 αρχεία για ανάγνωση με τη σειρά. Αντιμετωπίστε τις εξηγήσεις ως υποθέσεις και επιβεβαιώστε μεταβαίνοντας σε αρχεία αναφοράς."
Μπορείτε να συνεχίσετε να κάνετε ερωτήσεις παρακολούθησης όπως "Πώς λειτουργεί λεπτομερώς η δρομολόγηση;" ή "Talk me μέσω της διαδικασίας και των μεθόδων ελέγχου ταυτότητας" και θα σας οδηγήσει σε χρήσιμες οδηγίες για να ρίξετε λίγο φως στο σκοτάδι μιας άγνωστης βάσης κωδικών. Διαλογή διακοπής αλλαγών κατά την αναβάθμιση εξαρτήσεων Η ενημέρωση των πακέτων npm, ειδικά όταν συνοδεύονται από σημαντικές αλλαγές, μπορεί να είναι κουραστική και χρονοβόρα εργασία και να σας κάνει να διορθώσετε ένα μεγάλο αριθμό παλινδρομήσεων. Πρόσφατα χρειάστηκε να αναβαθμίσω τη βιβλιοθήκη οπτικοποίησης δεδομένων plotly.js σε μια κύρια έκδοση από την έκδοση 2 στην 3, και ως αποτέλεσμα αυτού, η επισήμανση άξονα σε ορισμένα από τα γραφήματα σταμάτησε να λειτουργεί. Συνέχισα να ρωτήσω το ChatGPT: "Ενημερώθηκα το Angular έργο μου που χρησιμοποιεί το Plotly. Ενημέρωσα το plotly.js — dist πακέτο από την έκδοση 2.35.2 σε 3.1.0 — και τώρα οι ετικέτες στον άξονα x και y έχουν φύγει. Τι συνέβη;"
Ο πράκτορας επέστρεψε με μια λύση αμέσως (δείτε μόνοι σας παρακάτω). Σημείωση: Εξακολουθώ να επαληθεύω την εξήγηση με τον επίσημο οδηγό μετεγκατάστασης πριν από την αποστολή της επιδιόρθωσης.
Αντιγραφή Refactors με ασφάλεια σε αρχεία Η ανάπτυξη βάσεων κωδικών σίγουρα αποκαλύπτει ευκαιρίες για ενοποίηση κώδικα. Για παράδειγμα, παρατηρείτε αντιγραφή κώδικα σε αρχεία που μπορούν να εξαχθούν σε μια μεμονωμένη συνάρτηση ή στοιχείο. Ως αποτέλεσμα, αποφασίζετε να δημιουργήσετε ένα κοινόχρηστο στοιχείο που μπορεί να συμπεριληφθεί αντ 'αυτού και να εκτελέσετε αυτόν τον ανασχηματισμό σε ένα αρχείο. Τώρα, αντί να πραγματοποιήσετε με μη αυτόματο τρόπο αυτές τις αλλαγές στα εναπομείναντα αρχεία σας, ζητάτε από τον αντιπρόσωπό σας να ανοίξει το refactor για εσάς. Οι πράκτορες σάς επιτρέπουν να επιλέξετε πολλά αρχεία ως περιβάλλον. Μόλις ολοκληρωθεί η αναμόρφωση για ένα αρχείο, μπορώ να προσθέσω τόσο τα αναδημιουργημένα όσο και τα άθικτα αρχεία στο περιβάλλον και να ζητήσω από τον πράκτορα να αναπτύξει τις αλλαγές σε άλλα αρχεία όπως το εξής: "Αντιγράψτε τις αλλαγές που έκανα στο αρχείο Α και στο αρχείο Β". Εφαρμογή δυνατοτήτων σε άγνωστες τεχνολογίες Μια από τις αγαπημένες μου στιγμές με τη χρήση εργαλείων κωδικοποίησης τεχνητής νοημοσύνης ήταν όταν με βοήθησε να δημιουργήσω ένα αρκετά περίπλοκο κινούμενο σχέδιο ντεγκραντέ στο GLSL, μια γλώσσα με την οποία δεν ήμουν αρκετά εξοικειωμένη. Σε ένα πρόσφατο έργο, οι σχεδιαστές μας βρήκαν μια κινούμενη κλίση ως κατάσταση φόρτωσης σε ένα τρισδιάστατο αντικείμενο. Μου άρεσε πολύ η ιδέα και ήθελα να προσφέρω κάτι μοναδικό και συναρπαστικό στους πελάτες μας. ΟΠρόβλημα: Είχα μόνο δύο ημέρες για να το εφαρμόσω, και το GLSL έχει αρκετά την απότομη καμπύλη εκμάθησης. Και πάλι, ένα εργαλείο τεχνητής νοημοσύνης (σε αυτήν την περίπτωση, το ChatGPT) ήταν χρήσιμο και άρχισα πολύ απλά να του ζητώ να δημιουργήσει ένα αυτόνομο αρχείο HTML για μένα που αποδίδει έναν καμβά και μια πολύ απλή κινούμενη χρωματική διαβάθμιση. Βήμα μετά το βήμα, ζήτησα από το AI να προσθέσει περισσότερη φινέτσα σε αυτό μέχρι να καταλήξω σε ένα αξιοπρεπές αποτέλεσμα, ώστε να μπορέσω να αρχίσω να ενσωματώνω το shader στην πραγματική μου βάση κώδικα. Το τελικό αποτέλεσμα: Οι πελάτες μας ήταν εξαιρετικά ευχαριστημένοι και παραδώσαμε ένα σύνθετο χαρακτηριστικό σε μικρό χρονικό διάστημα χάρη στην τεχνητή νοημοσύνη. Γραπτά τεστ Από την εμπειρία μου, σπάνια υπάρχει αρκετός χρόνος σε έργα για τη συνεχή σύνταξη και διατήρηση μιας κατάλληλης σειράς δοκιμών μονάδων και ενσωμάτωσης, και επιπλέον, πολλοί προγραμματιστές δεν απολαμβάνουν πραγματικά το έργο της συγγραφής δοκιμών. Το να ζητήσετε από τον βοηθό τεχνητής νοημοσύνης να δημιουργήσει και να γράψει δοκιμές για εσάς είναι απολύτως εφικτό και μπορεί να γίνει σε μικρό χρονικό διάστημα. Φυσικά, εσείς, ως προγραμματιστής, θα πρέπει ακόμα να βεβαιωθείτε ότι οι δοκιμές σας ρίχνουν μια ματιά στα κρίσιμα μέρη της εφαρμογής σας και ακολουθούν λογικές αρχές δοκιμών, αλλά μπορείτε να "αναθέσετε" τη σύνταξη των δοκιμών στον βοηθό μας AI. Παράδειγμα προτροπής: "Γράψτε δοκιμές μονάδας για αυτήν τη συνάρτηση χρησιμοποιώντας το Jest. Καλύψτε τις λειτουργίες ευτυχούς διαδρομής, περιπτώσεων άκρων και αποτυχίας. Εξηγήστε γιατί υπάρχει κάθε δοκιμή."
Μπορείτε ακόμη να μεταβιβάσετε τις βέλτιστες πρακτικές δοκιμών του γκουρού δοκιμών Kent C. Dodds ως οδηγίες στον αντιπρόσωπό σας, όπως παρακάτω:
Εσωτερικό Εργαλείο Κάπως παρόμοιο με το παράδειγμα του shader που αναφέρθηκε προηγουμένως, πρόσφατα μου ανατέθηκε να αναλύσω τον διπλασιασμό κώδικα σε μια βάση κώδικα και να συγκρίνω πριν και μετά από ένα refactor. Σίγουρα δεν είναι μια ασήμαντη εργασία εάν δεν θέλετε να ακολουθήσετε τη χρονοβόρα διαδρομή της χειροκίνητης σύγκρισης αρχείων. Με τη βοήθεια του Copilot, δημιούργησα ένα σενάριο που ανέλυε την αντιγραφή κώδικα για μένα, τακτοποίησε και παρήγγειλε την έξοδο σε έναν πίνακα και το εξήγαγε στο Excel. Μετά το πήγα ένα βήμα παραπέρα. Όταν ολοκληρώθηκε η αναμόρφωση κώδικα, ζήτησα από τον πράκτορα να λάβει το υπάρχον φύλλο Excel ως γραμμή βάσης, να προσθέσει την τρέχουσα κατάσταση διπλασιασμού σε ξεχωριστές στήλες και να υπολογίσει το δέλτα. Ενημέρωση κώδικα που γράφτηκε πριν από πολύ καιρό Πρόσφατα, ένας παλιός πελάτης μου με χτύπησε, καθώς με την πάροδο του χρόνου, μερικές λειτουργίες δεν λειτουργούσαν πλέον σωστά στον ιστότοπό του. Η σύλληψη: Ο ιστότοπος δημιουργήθηκε πριν από σχεδόν δέκα χρόνια και η JavaScript και το SCSS χρησιμοποιούσαν μάλλον παλιά εργαλεία μεταγλώττισης όπως το requireJS και η εγκατάσταση απαιτούσε μια παλαιότερη έκδοση του Node.js που δεν θα εκτελούσε καν στο MacBook του 2025 μου. Η ενημέρωση ολόκληρης της διαδικασίας κατασκευής με το χέρι θα μου έπαιρνε μέρες, οπότε αποφάσισα να ζητήσω από τον πράκτορα AI, "Μπορείς να ενημερώσεις τη διαδικασία δημιουργίας JS και SCSS σε μια λιτή στοίβα 2025 όπως το Vite;" Σίγουρα έγινε, και μετά από περίπου μια ώρα τελειοποίησης με τον πράκτορα, άλλαξα το SCSS και το JS build στο Vite και μπόρεσα να επικεντρωθώ στην πραγματική διόρθωση σφαλμάτων. Απλώς βεβαιωθείτε ότι έχετε επικυρώσει σωστά τα αρχεία εξόδου και τα μεταγλωττισμένα αρχεία όταν κάνετε τέτοιες ενσωματωμένες αλλαγές στη διαδικασία κατασκευής σας. Σύνοψη και Σύνταξη Θα θέλατε να συνοψίσετε όλες τις πρόσφατες αλλαγές στον κώδικα σας σε μία πρόταση για ένα μήνυμα δέσμευσης ή έχετε μια μακρά λίστα δεσμεύσεων και θα θέλατε να τις συνοψίσετε σε τρεις κουκκίδες; Κανένα πρόβλημα, αφήστε το AI να το φροντίσει, αλλά φροντίστε να το διορθώσετε. Ένα παράδειγμα προτροπής είναι τόσο απλό όσο η αποστολή μηνυμάτων σε έναν συνάνθρωπο: «Συγκεφαλιάστε τις πρόσφατες αλλαγές μου σε συνοπτικά σημεία». Η συμβουλή μου εδώ θα ήταν να χρησιμοποιήσετε το GPT για τη σύνταξη με προσοχή, και όπως και με τον κώδικα, ελέγξτε την έξοδο πριν στείλετε ή υποβάλετε. Συστάσεις και βέλτιστες πρακτικές Προτροπή Ένα από τα όχι και τόσο προφανή πλεονεκτήματα της χρήσης της τεχνητής νοημοσύνης είναι ότι όσο πιο συγκεκριμένες και προσαρμοσμένες είναι οι εντολές σας, τόσο καλύτερη είναι η έξοδος. Η διαδικασία προτροπής ενός πράκτορα τεχνητής νοημοσύνης μας αναγκάζει να διατυπώσουμε τις απαιτήσεις μας όσο το δυνατόν πιο συγκεκριμένα πριν γράψουμε και κωδικοποιήσουμε. Αυτός είναι ο λόγος για τον οποίο, κατά γενικό κανόνα, συνιστώ ανεπιφύλακτα να είστε όσο το δυνατόν πιο συγκεκριμένοι με την προτροπή σας. Ο Ryan Florence, συν-συγγραφέας του Remix, προτείνει έναν απλό αλλά ισχυρό τρόπο για να βελτιώσετε αυτή τη διαδικασία τελειώνοντας την αρχική σας προτροπή με την πρόταση: «Πριν ξεκινήσουμε, έχετε ερωτήσεις για μένα;»
Σε αυτό το σημείο, η τεχνητή νοημοσύνη συνήθως επιστρέφει με χρήσιμες ερωτήσεις όπου μπορείτε να διευκρινίσετε τη συγκεκριμένη πρόθεσή σας, καθοδηγώντας τον πράκτορα να σας παρέχει μια πιο προσαρμοσμένη προσέγγιση για την εργασία σας.
Χρησιμοποιήστε τον έλεγχο έκδοσης και εργαστείτε σε εύπεπτα κομμάτια Η χρήση ελέγχου έκδοσης όπως το git όχι μόνο είναι χρήσιμη όταν συνεργάζεστε ως ομάδα σε μια ενιαία βάση κώδικα, αλλά και για να σας παρέχειμεμονωμένος συνεργάτης με σταθερά σημεία στα οποία μπορείτε να επιστρέψετε σε περίπτωση έκτακτης ανάγκης. Λόγω της μη ντετερμινιστικής φύσης της, η τεχνητή νοημοσύνη μπορεί μερικές φορές να γίνει απατεώνας και να κάνει αλλαγές που απλά δεν είναι χρήσιμες για αυτό που προσπαθείτε να επιτύχετε και τελικά να σπάσει τα πράγματα ανεπανόρθωτα. Ο διαχωρισμός της εργασίας σας σε πολλαπλές δεσμεύσεις θα σας βοηθήσει να δημιουργήσετε σταθερά σημεία στα οποία μπορείτε να επιστρέψετε σε περίπτωση που τα πράγματα πάνε πλάγια. Και οι συμπαίκτες σας θα σας ευχαριστήσουν επίσης, καθώς θα έχουν ευκολότερο χρόνο να αναθεωρήσουν τον κώδικά σας όταν χωρίζεται σε σημασιολογικά καλά δομημένα κομμάτια. Αναθεωρήστε διεξοδικά Αυτή είναι περισσότερο μια γενική βέλτιστη πρακτική, αλλά κατά τη γνώμη μου, γίνεται ακόμη πιο σημαντικό όταν χρησιμοποιείτε εργαλεία τεχνητής νοημοσύνης για εργασίες ανάπτυξης: Γίνετε ο πρώτος κριτικός αναθεωρητής του κώδικά σας. Φροντίστε να αφιερώσετε λίγο χρόνο για να εξετάσετε τις αλλαγές σας γραμμή προς γραμμή, όπως ακριβώς θα ελέγχατε τον κώδικα κάποιου άλλου και υποβάλετε την εργασία σας μόνο αφού περάσει από τον αυτοέλεγχό σας. "Δύο πράγματα είναι αληθινά για μένα αυτή τη στιγμή: Οι πράκτορες AI είναι εκπληκτικοί και δίνουν τεράστια ώθηση στην παραγωγικότητα. Είναι επίσης τεράστιες μηχανές slop αν απενεργοποιήσετε τον εγκέφαλό σας και αφήσετε να φύγει εντελώς."— Armin Ronacher στην ανάρτησή του στο blog Agent Psychosis: Are We Going Insane;
Συμπέρασμα Και Κριτικές Σκέψεις Κατά τη γνώμη μου, τα εργαλεία κωδικοποίησης AI μπορούν να βελτιώσουν την παραγωγικότητά μας ως προγραμματιστές σε καθημερινή βάση και να απελευθερώσουν πνευματική ικανότητα για περισσότερο προγραμματισμό και υψηλού επιπέδου σκέψη. Μας αναγκάζουν να διατυπώσουμε το επιθυμητό αποτέλεσμα με σχολαστική λεπτομέρεια. Οποιοδήποτε AI μπορεί, κατά καιρούς, να έχει παραισθήσεις, πράγμα που ουσιαστικά σημαίνει ότι βρίσκεται σε έναν σίγουρο τόνο. Επομένως, φροντίστε να ελέγξετε και να δοκιμάσετε, ειδικά όταν έχετε αμφιβολίες. Η τεχνητή νοημοσύνη δεν είναι μια ασημένια σφαίρα και πιστεύω ότι η αριστεία και η ικανότητα επίλυσης προβλημάτων ως προγραμματιστής δεν θα φύγουν ποτέ από τη μόδα. Για προγραμματιστές που μόλις ξεκινούν την καριέρα τους, αυτά τα εργαλεία μπορεί να είναι πολύ δελεαστικά να κάνουν το μεγαλύτερο μέρος της δουλειάς τους. Αυτό που μπορεί να χαθεί εδώ είναι η συχνά εξαντλητική και επίπονη εργασία μέσω σφαλμάτων και ζητημάτων που είναι δύσκολο να εντοπιστούν και να επιλυθούν, γνωστό και ως «the grind». Ακόμη και ο ίδιος ο Lee Robinson του Cursor AI αμφισβητεί αυτό σε μια από τις αναρτήσεις του:
Τα εργαλεία κωδικοποίησης AI εξελίσσονται με γρήγορους ρυθμούς και είμαι ενθουσιασμένος για το τι θα ακολουθήσει. Ελπίζω να βρήκατε αυτό το άρθρο και τις συμβουλές του χρήσιμες και να είστε ενθουσιασμένοι που θα δοκιμάσετε μερικά από αυτά μόνοι σας.