Contesto
Sono uno sviluppatore di software negli Stati Uniti. Lavoro in un team molto, molto piccolo e abbiamo il compito di sviluppare e supportare un'app mobile personalizzata per uno dei più grandi clienti della nostra azienda. L'app stessa è stata distribuita al client e lo adorano. Tuttavia, alcune volte al giorno, un utente chiamerà / email per un supporto tecnico che di solito richiede una modifica ad alcuni dati sul database. Questi aggiornamenti ci richiedono di saltare sul server di produzione del client e modificare i dati manualmente.
Per la maggior parte di queste richieste, abbiamo alcuni script SQL di serie che possiamo eseguire per trovare e aggiornare i dati appropriati. Tuttavia, questi script sono soggetti a errori perché ci sono molti passaggi manuali per ogni script. Ad esempio, devi cercare un numero di ordine, quindi cercare quali stati sono validi per quel tipo di ordine, quindi aggiornare l'ordine a uno di quegli stati (in diversi punti): l'aggiornamento a uno stato non valido causa un sacco di danneggiamento dei dati verso il basso la strada ... Abbiamo dovuto lavorare più di una volta per correggere errori di battitura che hanno cancellato / modificato più record di quanto avrebbero dovuto. Avevamo uno strumento creato dal mio manager che poteva gestire uno o due degli scenari più complicati, ma quello strumento era un po 'noioso da usare e non gestiva gli errori molto bene. (Il mio manager lo ammette lui stesso.)
Per rimediare, ho pensato che sarebbe stato bello automatizzare il processo. Quindi, durante il mio tempo libero nei fine settimana, ho messo insieme un nuovo strumento utilizzando alcuni pezzi di quello vecchio come base. Utilizzando l'esempio sopra, lo strumento ci consentirebbe di selezionare un ordine e quindi semplicemente scegliere uno stato. Lo strumento gestirà la ricerca di stati validi ed esegue tutte le verifiche "dietro le quinte".
Il nuovo strumento ha molte più funzioni e opzioni disponibili. Oltre ad essere molto più a prova di errore, registra anche tutte le azioni eseguite, quindi nel caso in cui modifichiamo accidentalmente dati che non avrebbero dovuto essere modificati, è facile cercarli e cambiarli di nuovo. L'ho progettato specificamente per essere facile da usare in modo che se il nostro team avesse mai assunto una nuova persona, sarebbe stato molto semplice addestrarla a prendersi cura delle nostre richieste di supporto più elementari.
Alcuni dettagli che potrebbero essere importanti :
- Per verificare che lo strumento funzionasse correttamente, l'ho testato sul nostro sistema di sviluppo interno, che è la procedura standard della nostra azienda per tutte le applicazioni che sviluppiamo. L'ho solo fatto alla fine della mia giornata lavorativa, dopo aver terminato il lavoro effettivamente assegnato per la giornata. Nessun "tempo aziendale" è stato sprecato in questo progetto.
- I nostri database sono facilmente ripristinabili dai backup, quindi se avessi distrutto accidentalmente i dati (cosa che non è molto probabile all'inizio, ma comunque), lo farebbe non sono stati un grosso problema. In effetti, è qualcosa che avrei potuto fare da solo, se necessario.
- NON ho utilizzato il nuovo strumento sul server di produzione del client e non avevo intenzione di farlo finché non ho ha avuto l'approvazione del mio manager, anche se questo significava che mi era stato detto di non usarlo affatto.
- È sempre stata mia intenzione informare il mio manager dello strumento una volta che era finito. Gliel'ho detto poco prima a causa della notizia di un nuovo assunto.
Il conflitto
A quanto pare, il mio manager recentemente mi ha fatto sapere che presto assumeremo un nuovo sviluppatore. Pensando che questo sarebbe stato un buon momento per mostrargli i miei progressi, gli ho mostrato le capacità di questo nuovo strumento. La sua reazione non è stata proprio quella che mi aspettavo. Sebbene fosse impressionato da quanto fosse robusto e versatile lo strumento, e abbia anche affermato che sarebbe stato felice di sostituire il vecchio strumento con la mia versione aggiornata, ha anche espresso un certo disappunto per non avergli parlato del progetto molto prima. Ha detto che per me era improduttivo lavorarci senza la sua approvazione poiché avrebbe potuto non approvare questo lavoro. Mi ha esplicitamente chiesto di non lavorare più a nessun progetto "extra" nel mio tempo libero, a meno che non parli prima con lui. Anche se non lo ha detto subito, ho avuto l'impressione che sentisse che avessi minato il suo ruolo di manager.
Onestamente non ho considerato questa prospettiva mentre creavo lo strumento, ma ora capire completamente la sua posizione. Forse stavo guardando questo progetto con infantile ingenuità, sperando di sorprendere il mio manager con un "regalo" che avrebbe reso il nostro lavoro un po 'più facile. Ovviamente non ha funzionato. Ora sono preoccupato che, nonostante le mie migliori intenzioni, ho oltrepassato i miei limiti come dipendente. L'ho fatto? Quale sarebbe una linea di condotta appropriata a questo punto?