Recentemente ho fatto domanda per una posizione come sviluppatore di software. Come parte del processo di assunzione, mi è stato dato un incarico che comporta la lettura dei dati da un file.
Il fatto è che il file di esempio contiene dati estranei di proposito . Ad esempio, esiste un file CSV in cui i numeri decimali vengono talvolta scritti utilizzando i punti decimali e talvolta utilizzando le virgole (che sono anche i delimitatori delle colonne CSV). Il motivo, secondo la dichiarazione del problema, è che alcuni numeri sono stati aggiornati manualmente da un utente europeo non tecnico.
I dati stessi non sono difficili da leggere. Ho identificato alcuni modelli nei dati errati e ci sono un sacco di tecniche (come Regex) che posso usare per leggere i file caso per caso , ma queste tecniche sono di solito script, hacky e hard-coded.
Detto questo, mi chiedo se questo reclutatore volesse che sviluppassi un'applicazione in grado di gestire i dati estranei in generale, senza codificare la logica per questi casi particolari.
Per ottenere questo risultato ho trovato alcune soluzioni ragionevolmente creative, nessuna delle quali sono pienamente soddisfatto:
- Compresi i controlli in modo che l'utente possa creare una catena di filtri e manipolazioni per i dati letti. Non penso che questa sia una buona soluzione perché è troppo tecnica per l'utente medio (un responsabile del negozio), che vuole solo caricare i dati e farli. Questo potrebbe funzionare se un programmatore è colui che carica i dati, ma poi la soluzione diventa troppo costosa.
- Salvataggio di tutto, tranne le righe errate, e quindi mostrare all'utente quelli che sono malformati, permettendogli di correggerli prima di continuare.
Mi chiedo anche se il recruiter stia effettivamente chiedendo qualcosa di veramente semplice, che ho frainteso, portandomi a pensare troppo al problema, ma poi, la dichiarazione del problema dice che la mia soluzione deve essere sviluppata usando S.O.L.I.D. principi.