Gli strumenti indispensabili per un ingegnere del Machine Learning

Le attrezzature indispensabili per un ingegnere del Machine Learning

Sia dal punto di vista tecnico che da quello della produttività

Foto di JESHOOTS.COM su Unsplash

Circa 4 anni fa ho cambiato carriera da Consulente SAP a Data Scientist. Dopo aver seguito un curriculum che ho progettato per me stesso, ho ottenuto il ruolo di Machine Learning Engineer in un ecosistema di startup in un anno.

Non è facile condensare tutto ciò che ho imparato, gli strumenti che ho utilizzato e le esperienze che ho avuto durante questi ultimi quattro anni in un singolo articolo. Tuttavia, evidenzierò quelli che mi hanno particolarmente beneficiato.

Man mano che avanzavo nel mio ruolo, ho sviluppato competenze nello sviluppo di software utilizzando una varietà di strumenti e seguendo determinate best practice sul lavoro:

  1. Git e controllo delle versioni
  2. Scrittura di codice leggibile e pulito
  3. Esplorazione di diversi strumenti di sviluppo

In questo articolo non solo li spiegherò, ma parlerò anche di come mi abbiano aiutato a migliorare le mie soft skills e la mia produttività. Cominciamo 🚀

Git e controllo delle versioni

Git è un sistema di controllo delle versioni open-source ampiamente utilizzato nello sviluppo di software. Organizza i progetti e gestisce la collaborazione tra sviluppatori che lavorano sullo stesso progetto. Prima non utilizzavo Git quando lavoravo da solo; versionavo manualmente il mio codice e i miei notebook 🙃

Quando entra in gioco la collaborazione, Git diventa una necessità. Aiuta a tenere traccia del progresso del progetto e favorisce la collaborazione.

È un argomento vasto da imparare, e ci sono ottime fonti (come ad esempio questa). Oggi mi concentrerò sul termine “commit” e su come mi abbia aiutato a organizzare il mio processo di pensiero.

Il commit di Git è come scattare una foto del tuo codice nel tempo.

Uno dei miei primi apprendimenti nei miei primi giorni è stato quello di avere commit di Git organizzati e messaggi di commit concisi.

In seguito, ho capito che pensare in anticipo ai tuoi commit e a come strutturarli ti aiuta anche a organizzare il tuo lavoro e a progettare il tuo codice con un modello logico migliore.

Ecco un esempio di come i commit di Git possono essere organizzati nel contesto della Data Science in uno dei miei progetti recenti:

Immagine dell'autore

Da una prospettiva di collaborazione, suddividere i commit – in modo che ogni modifica del codice debba avere un solo scopo alla volta – aiuterà anche i tuoi colleghi a rivedere il tuo codice più velocemente.

Scrittura di codice leggibile e pulito

Il mio mentor precedente mi ha detto una volta: “Persino tua nonna dovrebbe essere in grado di leggere il tuo codice” – una precisazione: non da una prospettiva discriminatoria legata all’età, ma piuttosto per sottolineare che chiunque dovrebbe essere in grado di leggere e comprendere facilmente il tuo codice.

Scherzi a parte, riflettere il tuo processo di pensiero nel tuo codice e scrivere un codice autoesplicativo aiuterà chiunque a rivedere il tuo lavoro e a comprenderlo più velocemente.

Ho imparato a creare codice leggibile e pulito sia sul lavoro che leggendo diversi libri di settore:

  • Clean Code: A Handbook of Agile Software Craftsmanship di Robert C. Martin
  • Philosophy of Software Design di John Ousterhout.

“Quindi se vuoi andare veloce, se vuoi finire rapidamente, se vuoi che il tuo codice sia facile da scrivere, rendilo facile da leggere.”

Robert C. Martin.

e un’implementazione di questa pratica dal mio lavoro recente:

Credimi, il tuo futuro io ti ringrazierà per aver scritto codice leggibile e pulito, non solo il tuo team!

Esplorare diversi strumenti di sviluppo

Quando si tratta di sperimentare con modelli di apprendimento automatico o prototipare soluzioni per testarne la fattibilità, l’uso dei notebook è spesso la prima scelta.

E i notebook Jupyter sono un ottimo strumento per quello.

Prima di assumere il ruolo di Ingegnere di Apprendimento Automatico, ho lavorato principalmente ai miei progetti utilizzando i notebook Jupyter. Dato che il mio team precedente mi ha imposto di utilizzare PyCharm, mi sono trovato per la prima volta di fronte a un ambiente di sviluppo integrato (IDE).

Inizialmente mi sono sentito un po’ sopraffatto dalle numerose funzionalità e dall’interfaccia utente di PyCharm, essendo un Data Scientist che utilizza principalmente soluzioni notebook usa-e-getta.

Col tempo, PyCharm è diventato il mio strumento di seconda natura.

Le sue funzionalità di completamento del codice e di evidenziazione degli errori sono diventate i miei aiutanti indispensabili e hanno contribuito alla mia produttività, molto.

Dominare Git all’interno degli IDE ha migliorato significativamente la mia capacità di organizzare il lavoro, ha incrementato la mia velocità di codifica e mi ha permesso di concentrarmi più efficientemente sul compito in corso. Inoltre, sono sempre grato a me stesso per aver scritto codice pulito quando lo riprendo mesi dopo 😉

Grazie per aver letto! Questo post del blog ha un posto speciale per me. Rappresenta il mio ritorno al blogging e alla scrittura tecnica 🤗

Per commenti o feedback costruttivi, puoi contattarmi tramite risposte, Twitter o Linkedin!