Va bene usare una lingua non supportata dalla tua azienda per alcune attività?


27

Lavoro per un'azienda che supporta diverse lingue: COBOL, VB6, C # e Java.
Uso queste lingue per il mio lavoro principale, ma spesso mi trovo a programmare alcuni programmi minori (ad esempio gli script) in Python perché l'ho trovato lo strumento migliore per quel tipo di attività.

Ad esempio: un analista mi fornisce un file CSV complesso per popolare alcune tabelle DB, quindi utilizzerei Python per analizzarlo e creare uno script DB.

Qual è il problema?
Il problema principale che vedo è che alcune parti di questi script veloci e sporchi stanno lentamente guadagnando importanza e:

  1. La mia azienda non supporta Python
  2. Non sono controllati dalla versione (li backup in un altro modo)
  3. I miei colleghi non conoscono Python

Gli analisti hanno persino iniziato a fare riferimento a loro tramite e-mail ("avvia lo script che esporta ..."), quindi sono necessari più spesso di quanto pensassi inizialmente.

Dovrei aggiungere che questi script sono solo utility che non fanno parte del progetto principale; aiutano semplicemente a svolgere compiti banali in meno tempo. Ai miei piccoli compiti mi aiutano molto.

In breve, se fossi stato un vincitore della lotteria per un incidente , i miei colleghi avrebbero dovuto mantenere vivo il progetto senza quegli script; passerebbero più tempo a correggere manualmente gli errori CSV, ad esempio.

È uno scenario comune? Sto facendo qualcosa di sbagliato? Cosa dovrei fare?


22
Se i tuoi colleghi non riescono a capire una sceneggiatura solo perché è in un'altra lingua, hai problemi più grandi
CaffGeek,

1
Sono d'accordo con il Ciad. Python è il più vicino possibile allo pseudo-codice.
Giobbe

2
@Chad eheh bello ma il problema potrebbe essere un altro; Python sdk non fa parte dell'installazione predefinita della macchina di sviluppo. Per installarlo ho pagato molti caffè al giusto amministratore di sistema;).
systempuntoout

3
@systempuntoout, gli sviluppatori dovrebbero essere in grado di installare qualsiasi cosa diavolo vogliono sul proprio computer che rientri nei limiti legali. Quindi, PowerShell è preinstallato su Windoze e ho provato a sostituirlo con Python, ma non è lo stesso. I casi limite mi schiaffeggiano in faccia ogni volta che provo a fare qualcosa di semplice. Python fa semplicemente le cose e se i droni aziendali non lo capiscono, peccato!
Giobbe

1
Mettili nel controllo del codice sorgente. Solo un piccolo angolo da qualche parte, ma inseriscili.

Risposte:


42

Devi formalizzare la situazione in quanto non dovrebbe davvero arrivare a questo punto. Tuttavia, queste cose accadono, quindi devi spiegare al tuo capo che hai creato questi script per uso personale, ma sono "sfuggiti" a una più ampia diffusione. Ammetti (se necessario) di essere stato in colpa per non averlo portato alla sua attenzione prima.

Per lo meno gli script dovrebbero essere messi sotto il controllo del codice sorgente "per ogni evenienza" - almeno se non sei disponibile (per qualsiasi motivo) i tuoi colleghi avranno accesso agli script.

Quindi devi convincere il tuo capo che Python è la strada da percorrere per questi o accettare che dovrai riscriverli in una lingua supportata. Se il costo di documentare gli script e di educare i tuoi colleghi in Python è inferiore a quello della riscrittura, potresti persino vincere l'argomento.


8
+1, accetto. Vedo come questo genere di cose possa accadere molto facilmente, ma non è necessariamente "una cosa negativa" o "un errore" da parte dell'OP. Probabilmente è iniziato quando l'OP è stato incaricato di un mini-progetto "una tantum" e ha scelto un buon strumento, Python, per cancellare rapidamente la sua scrivania del progetto-- ma poi si è ritrovato a svolgere l'attività ancora e ancora ...
Angelo,

Lo sto vivendo proprio ora. Ho elaborato una prova di concetto in Python per aiutarmi a capire qualche vecchio codice C schifoso, e in realtà ho fatto funzionare tutto il casino in sostituzione del vecchio codice C, ma mi è stato chiesto di riscrivere in C dopo aver fatto funzionare le nuove modifiche . Sono riuscito a tenere un po 'di Python in giro, ho scritto una piccola app Web usando Python + Flask e il mio manager e la uso costantemente per analizzare le operazioni del codice C in esecuzione. Quindi c'è ancora speranza che Python venga formalmente adottato qui. :)
John Gaines Jr.

6

Non posso darti una risposta completa su cosa dovresti fare. Posso solo dare un singolo suggerimento che puoi usare per iniziare:

Controllare gli script in un repository a cui tutti gli sviluppatori (obbligatori) possano accedere. Ma fare molto sicuri di prendere nota del fatto che hai scritto prima questi script per il proprio scopo, cioè per eseguire un compito che era stato dato. Quindi aggiungi che stai solo controllando questi script per consentire ad altri il vantaggio di usarli.

Dopodiché dovrai solo vedere come le altre persone rispondono a questo.


Commentali come quando possibile. Aiuta a vedere rapidamente cosa sta succedendo, piuttosto che cercare di capire cosa diavolo stai facendo.
JD Frias,

5

Ho riscontrato problemi simili in cui lavoro. Ho sentito "Cos'è PHP?" diversi anni fa. Non capiscono o si preoccupano di imparare qualcosa al di fuori dello stack MS. Se python è lo strumento giusto per il lavoro, lo direi solo ai miei supervisori e sarei pronto per un sacco di confronto e spiegando perché Python era la scelta giusta. Sarà frustrante, ma penso che molti sarebbero d'accordo sul fatto che Python sia una buona scelta per la manipolazione del testo.


5

La prima cosa che devi fare è parlare con il team e il tuo capo. In questo momento, hai un enorme fattore di camion (se sei stato colpito da un camion, nessun altro sarebbe facilmente in grado di mantenere i tuoi script). Sembra che avere degli script per svolgere queste attività sia importante, ma è anche importante che chiunque debba modificarli e mantenerli. Devi spiegare in che modo l'utilizzo di Python aggiunge valore, in che modo consente di risparmiare tempo, fatica, risorse, denaro e così via.

Secondo, mettilo nel controllo della versione del progetto. Adesso. Nulla di ciò che produci per un progetto dovrebbe essere al di fuori del controllo di versione di quel progetto, mai.

Preparati al gioco: in genere alle persone non piace il cambiamento. Scappare da soli, usare tecnologie non supportate e sconosciute (per il team / organizzazione) è stata una cattiva idea, senza consultare almeno gli altri sviluppatori e determinare il modo migliore (per il progetto, non solo tu) di automatizzare queste attività per tutti usare.

Penso che questo sia probabilmente un buon caso di

È più facile chiedere perdono che ottenere l'autorizzazione.

Sembra che tu abbia fatto il lavoro, ma ora dovrai affrontare le ripercussioni.


4
"" "Scappare da solo, usando tecnologie non supportate e sconosciute (per il team / organizzazione) è stata una cattiva idea, senza consultare almeno gli altri sviluppatori e determinare il modo migliore (per il progetto, non solo tu) di automatizzare questi compiti che tutti possono usare. "" "- Non sono d'accordo. Joel Spolsky non sarebbe stato in grado di creare VBA per Excel se avesse seguito questa strada. Questo non è di gran lunga un esempio unico.
Giobbe

@Job Non posso parlare delle circostanze esatte dello sviluppo di VBA per Excel, ma sembra che fosse coinvolto R&S avanzato o prototipazione. C'è una differenza tra ricerca avanzata e sistemi di produzione. Non puoi mai lavorare al buio, da solo e isolato dalla tua squadra. Non sono contrario all'introduzione di nuove tecnologie, ma è importante che tutti sappiano quali sono queste nuove tecnologie, i loro benefici, i loro svantaggi e come vengono implementate in un progetto. Fare qualcosa da solo e al buio è generalmente una cattiva idea e mette a rischio un progetto.
Thomas Owens

@Thomas I am the team
systempuntoout

@systempuntoout Questo potrebbe essere vero ora. Ma sarà tra 6 mesi? O un anno? Lo sviluppo del software, anche se al momento sei solo, non dovrebbe mai essere considerato un compito da solo - devi pensare al futuro sviluppatore o manutentore del tuo lavoro.
Thomas Owens

@Thomas hai ragione; come detto in alcuni commenti sopra, ho portato molti script in C # (linguaggio supportato dalla società)
systempuntoout

3

La mia regola empirica è:

Tutto ciò che potenzialmente influisce sul lavoro degli altri dovrebbe essere discusso al più presto con colleghi e superiori.

Ma, se è solo per te e per te, purché non danneggi l'infrastruttura o la sicurezza della tua azienda , sei libero di fare ciò che desideri.


1
Come fai a sapere se è per te o per gli altri? Al lavoro, puoi essere riassegnato o potresti smettere. Tutto ciò che produci sul lavoro (nella maggior parte dei casi) non è tuo, ma appartiene alla società o al cliente. Se non riescono a capirlo o mantenerlo, il tempo perso è il tempo impiegato a svilupparlo, più il tempo impiegato da qualcun altro per capirlo (e forse sviluppare una nuova soluzione). Tutto ciò che viene prodotto al lavoro deve essere trattato come qualcosa per qualcun altro.
Thomas Owens

1
Se nel periodo in cui svolgevi quel lavoro aumentava la tua produttività personale, allora l'azienda ha già ottenuto valore da quella sceneggiatura e non è stato uno spreco, indipendentemente dal fatto che venga riutilizzato in seguito da qualcun altro.
Nate CK,

@Thomas Owens - ci sono spesso compiti una tantum - una volta che hanno finito, hanno finito - o i tuoi stessi hack e test che fai nel corso dello sviluppo per superare qualcosa di appiccicoso - di nuovo, una volta che hanno finito , hanno finito - sono effettivamente usa e getta.
Vettore

E se qualcun altro ha bisogno di fare lo stesso o simile compito in seguito (che è molto probabile, nelle mie esperienze)? Devono reinventare la ruota. Una cosa è avere un prototipo usa e getta per risolvere un problema o imparare una libreria o un framework. È un altro tempo da dedicare allo sviluppo di uno strumento per svolgere un'attività e poi a scartarla. I tipi di strumenti a cui si riferisce la domanda riguardano attività che potenzialmente devono essere svolte più volte e, se altre persone svolgono tali attività, perdono tempo non avendo uno strumento per assisterli (o necessitando di sviluppare tale strumento) .
Thomas Owens

@Thomas Owens - scontato - è incluso in ciò che ho detto "potenzialmente influisce sul lavoro degli altri".
Vettore

2

Hai due opzioni:

  1. Rendilo uno standard
  2. Traduci in uno strumento standard

A seconda dell'organizzazione n. 1 potrebbe essere difficile (dopotutto limitare l'elenco delle tecnologie standard evita un'esplosione combinatoria di addestramento e requisiti di abilità di supporto).

La seconda opzione aiuterebbe il tuo set di abilità e potresti essere in grado di trovare terze parti (e probabilmente open source con licenze commercialmente amichevoli) per fare un po 'del duro lavoro. Ad esempio, una ricerca di "LINQ to CSV" dovrebbe ottenere alcuni risultati utili.

A proposito, gli strumenti di sviluppo di VB6 (IDE, compilatore) non sono supportati (nemmeno le correzioni di sicurezza), quindi è probabile che lo standard debba comunque essere aggiornato. (Il runtime VB6 è supportato come parte di - e incluso nell'installazione - delle attuali versioni di Windows). Questo potrebbe forse essere usato come supporto per l'approccio n. 1: il set di strumenti standard deve raggiungere un obiettivo mobile a causa delle dipendenze dei fornitori.


2

Se ti viene assegnato un compito ed è l'unico modo in cui puoi realizzarlo in tempo, non hai davvero scelta. Penso che sia saggio far sapere ai responsabili ciò che stai facendo. Non dovresti andare al di fuori del controllo del codice sorgente richiesto (a meno che non funzioni assolutamente?) Test e documentazione.

A volte un'azienda potrebbe dover lasciare che un singolo sviluppatore inizi a cercare una nuova area di sviluppo. Sfortunatamente, il codice potrebbe entrare in produzione più velocemente di quanto chiunque altro possa ottenere rapidamente.


Che ci crediate o no, dopo aver postato questa domanda e ricevuto molti suggerimenti perspicaci, ho portato diversi script in C #.
systempuntoout

1

Bene, devo ammettere che lavorare con 20 lingue diverse puzza, MOLTO.

Hai uno script Bash che chiama lo script Python che chiama lo script Perl che chiama il binario Java che chiama C dll ...

Quindi qualcosa colpisce il fan in tutto il gasdotto e si passa attraverso - DOVE È DAT KODEZ? Soprattutto in Perl ... E il debug semplice, diciamo, il problema di codifica, si trasforma in un casino da incubo. Non è possibile eseguire il debug di 5 lingue su 7 in modo efficace e si trasforma in un vero dolore.

Oppure devi aggiungere una semplice modifica, ma crei 10 errori perché Perl ha gotcha, Java ha gotcha, ecc.

E quella catena linguistica 7+ inizia un passo alla volta.

Percorri attentamente, ecco i draghi ...


Lavorare con lo strumento giusto non puzza, è il modo Unix di costruire cose. Il modo Windows è di avviare Excel. Vecchia storia di martelli e chiodi ...
mouviciel,

1

Se questi sono strumenti che usi per te stesso, sei libero di fare qualsiasi cosa che ti renda più produttivo.

In realtà, dovresti essere incoraggiato a creare e utilizzare tali strumenti, che alla fine diventeranno un'estensione delle tue braccia.

Alla fine, riconosceranno l'importanza di disporre di tali strumenti, indipendentemente dalla lingua in cui sono scritti , e inizieranno a implementare nel loro ambiente di lavoro.


Al lavoro, non penso che dovresti considerare qualsiasi cosa come "per te". Sono strumenti per supportare un progetto e c'è un team che lavora su quel progetto. Puoi uscire, licenziarti, riassegnarti o morire domani e ora le tue responsabilità ricadono su qualcun altro. Se non sono in grado di utilizzare e mantenere i tuoi strumenti, è stato sprecato lo sforzo necessario per renderli (costando i soldi dell'azienda).
Thomas Owens

3
@Thomas: tratto gli script che creo per me e per il mio uso personale come i miei. Sono un'estensione delle mie braccia e della mia mente. È come dire "Non puoi pensare così, puoi solo pensare così". Penso che non sia importante ciò che pensi, purché tu sia in grado di fare ciò che ti viene chiesto di fare.
Jose Faeti,

Questo, per me, è estremamente poco professionale e non etico. Una delle responsabilità etiche di un ingegnere informatico è quella di agire nel miglior interesse del cliente e del datore di lavoro, purché non rischi il pubblico. Un'altra responsabilità etica è quella di essere equi e solidali con i colleghi. Mantenere i tuoi strumenti per te quando sono per un progetto viola entrambi questi principi.
Thomas Owens

3
@Thomas: non stavo parlando di scrivere un linguaggio di programmazione specifico per il progetto. Sto parlando di qualcosa come "rinominare 10000 file con un singolo comando", qualcosa che i programmatori stupidi fanno a mano uno a uno, mentre sono in grado di farlo con uno script fatto da sé. Non sto interagendo con qualcosa di specificamente coinvolto nel progetto. NON sono strumenti specifici del progetto.
Jose Faeti,

3
@Thomas: Il punto non è sapere se esiste una tale utility, ma sapere come automatizzare il tuo lavoro realizzando tali utility. Avrai sempre bisogno di alcuni nuovi script per aiutarti nelle attività quotidiane. Costringere un programmatore a usare strumenti esistenti o realizzati da altri è come tagliare le ali a un uccello. Non riesco a immaginare di lavorare in un posto simile. Comunque capisco i tuoi punti. La mia risposta è stata sollevata perché l'OP era già in quella situazione, penso che il migliore sarebbe quello di condividere il pensiero sulla creazione / utilizzo di uno strumento particolare con tutto il team non appena necessario, quindi decidere.
Jose Faeti,

1

Quando ti viene detto di scrivere codice facendo sth., La lingua viene solitamente specificata o implicita (la regola nelle società).

Ma quando devi svolgere alcune attività one-shot, come importare i dati in DB, sei libero di scegliere lo strumento che secondo te si adatta meglio, perché devi fare qualcosa di corretto e veloce e il risultato è importante, non gli strumenti.

Quindi, vorrei usare quella regola:

1) Se ti viene chiesto di svolgere alcune attività, come l'importazione dei dati, utilizzerei gli strumenti / lingua / ecc. sarebbe il più conveniente per me e sarebbe il più veloce per il compito.

2) Se ti viene detto di scrivere uno strumento che esegue alcune attività, come importare alcuni dati, discuterei quale linguaggio / strumento usare con il gestore (con l'eccezione quando uso un linguaggio implicito standard, ad esempio quando l'azienda usa [quasi ] solo Java).

3) Se l'attività sembrava essere un colpo solo, ma diventasse ripetibile, dovresti parlare con il manager per cambiarlo da 1) a 2) e riscrivere dalla tua lingua preferita a quella supportata dall'azienda.


0

Suppongo che tu non sia in grado di decidere (altrimenti non faresti la domanda). Cosa pensa il tuo capo di questo problema? Dovresti parlargli e cercare di convincerlo che Python è la strada da percorrere ...

Naturalmente, il problema riguarda ciò che accadrà quando esci. Non essere in grado di mantenere il codice è probabilmente una ragione sufficiente per smettere di usare Python. Oppure puoi iniziare a educare i tuoi colleghi a questa lingua ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.