Avevo un contratto di 12 mesi (vivo in un paese in cui non è usuale per i nuovi sviluppatori) fino a un paio di settimane fa, quando la direzione della mia azienda mi ha offerto un'offerta e un aumento per diventare un dipendente a tempo indeterminato per loro. Mi piace mantenere il mio curriculum sempre aggiornato (soprattutto dato COVID), quindi ho cercato su Google per elencarlo nel mio curriculum.
Il consiglio che ho trovato è stato che in genere avrei dovuto elencare quale risultato è stato che ha spinto l'assunzione. Giusto.
Il problema è che il risultato è stato sempre quello di fornire scadenze ravvicinate del cliente e, francamente, l'ho fatto decidendo che l'ingegneria poteva essere meno che eccezionale in casi mirati (che la direzione ha accettato).
Sono uno sviluppatore relativamente giovane di un team di 6 sviluppatori. Tuttavia, sono diventato rapidamente uno degli sviluppatori di cui la direzione si fida di più per fornire materiale quando dico che lo consegnerò e li terrò informati dei relativi compromessi per arrivarci. Nel mio breve periodo qui, ammetto, sono sempre stato in grado di spedire qualcosa quando ho detto che posso spedirlo.
Ho avuto alcuni casi come questo, ma questo è quello che ho fatto appena prima che mi fosse offerto il lavoro a tempo indeterminato. Uno dei nostri prodotti è un'API batch che viene richiamata una volta al giorno da un singolo client. Non è necessario restituire nulla tranne un CSV di voci non riuscite tramite e-mail. Volevano aggiungere una nuova funzionalità e il venditore aveva contrattualmente accettato di averla per loro entro la fine del mese. Per vari motivi, quella richiesta di funzionalità non è arrivata a noi fino a lunedì dell'ultima settimana del mese.
Lo sviluppatore senior ha detto al manager che lo sviluppo non poteva essere fatto correttamente e di dire al cliente che non poteva essere fatto. Non contraddico gli sviluppatori senior nelle riunioni di pianificazione dello sprint, ma forse era ovvio che non ero d'accordo con il ragazzo senior. Mi piace, non sono in disaccordo, ma esisteva un'opzione con alcuni compromessi. Anche gli altri sviluppatori sono abbastanza passivi, quindi nessun altro lo ha contraddetto. Il manager non era contento di questo perché il cliente è già arrabbiato con noi per non aver consegnato quando promettiamo di farlo. Il manager poi mi ha convocato nel suo ufficio dopo la riunione per chiedermi se vedessi un'alternativa. Gli ho detto che avrei potuto far funzionare qualcosa, ma probabilmente avrebbe raddoppiato il tempo di elaborazione dell'API (che avrebbe aggiunto 4 minuti) poiché non ho competenze SQL specifiche. Il manager era d'accordo e apparentemente il cliente non se ne è nemmeno accorto.
Non sono sicuro di quali sarebbero state le conseguenze del mancato rispetto della scadenza, ma erano abbastanza ripide che il CEO della nostra azienda di 1000 persone mi ha inviato un'e-mail di ringraziamento per averlo consegnato.
Un altro caso non ha attirato tanta attenzione, ma c'era un processo che dovevamo eseguire su un database. Il modo corretto per farlo sarebbe stato scrivere un processo batch appropriato nel mega sistema Java che utilizziamo, inviarlo attraverso tutti i normali processi di QA e lasciarlo uscire alla fine due settimane dopo. Ho offerto al manager uno script Python che avrebbe dovuto essere eseguito manualmente e sarebbe stato terribilmente inefficiente (avrebbe dovuto eseguirlo durante la notte), ma se attivato una volta al mese, avrebbe tenuto a bada il problema fino all'arrivo di una soluzione permanente. Questo era un problema di produzione, quindi ha accettato come misura provvisoria. Questo era fondamentalmente solo un ciclo for economico che controllava le righe per un certo tipo di dati errati e lo riformattava.
C'è un modo per elencare questo tipo di cose nel mio curriculum che non mi faccia sembrare un programmatore di hacker che mina gli sviluppatori senior? Ammetto che le mie soluzioni tecnicamente non sono valide, ma all'epoca erano valide per le esigenze aziendali e il compromesso dell'inefficienza era in gran parte irrilevante nella maggior parte dei casi.