Ho un amico che lavora nel settore IT senza fini di lucro dove utilizza un'applicazione web personalizzata che non è più supportata dalla società che l'ha creata. (fuori dal mercato, il supporto era troppo costoso, non sono sicuro ...) Lo sviluppo di questa app è iniziato circa 10 anni fa, quindi le tecnologie utilizzate sono piuttosto obsolete - asp classici con vbscript e SQL Server 2000. Il dominio dell'applicazione è nel regno della contabilità del governo - quindi anche se il team di sviluppo è da tempo lontano, ci sono spesso nuovi requisiti di questo software. Inserisci il ...
L'esperto di dominio. Questo è un mago della contabilità di mezza età senza molte (o nessuna?) Esperienza di sviluppo precedente. Ha studiato le pagine, il codice e le domande e ha imparato a scimmiottare lo stile della squadra originale che, credetemi, è al massimo mediocre. È molto intelligente e molto tenace, ma non ha esperienza nel software oltre a ciò che ha raccolto da questa app. Altrimenti, è un ragazzo piacevole con cui parlare e sicuramente conosce il suo dominio.
Il mio amico in IT, e probabilmente i suoi superiori in azienda, lo vogliono fuori dal codice. Lo vedono come uno spreco della sua esperienza in compiti di codifica che non dovrebbe fare. Il mio amico mi ha coinvolto con alcuni piccoli contratti che ho gestito senza molti problemi - oltre a un po 'una barriera di comunicazione con l'esperto di dominio. Ha spiegato i requisiti molto rapidamente, assumendo la conoscenza preliminare del dominio che non ho. Questo è in parte il suo stile normale, e penso forse un po 'di risentimento per il mio coinvolgimento. Quindi, penso che si senta il proprietario del codice e si sia trincerato in una posizione di sviluppo.
Quindi ... la sua tecnica di codifica. Uno dei suoi ultimi sforzi consisteva nel creare una pagina che solo lui poteva raggiungere (in teoria - il modello di sicurezza per il sistema è infelice) dove può inserire una query SQL raw, eseguirla e salvare la query per eseguirla nuovamente in seguito. Un report su cui ho lavorato era stato originariamente implementato da lui usando 6 query distinte, 3 o 4 tabelle temporanee per coordinare i dati tra le query e il risultato finale ottenuto importando i dati dalla query finale in Access e facendo un pivot e qualche formattazione. Ha funzionato - beh, alcuni risultati non erano corretti - ma a quale costo! (Ho implementato il report in una singola query con almeno 1/10 della quantità di codice.) Modifica il codice nel blocco note. Sembra non conoscere il materiale di riferimento online per le lingue. Di recente ho letto un articolo su Dr. Dobbs ha intitolato "Ciò che rende i programmatori diversi" e ha immediatamente pensato al nostro esperto di dominio. Dall'articolo:
- Their code is large, messy, and bug laden.
- They have very superficial knowledge of their
problem domain andtheir tools.- Their code has a lot of copy/paste and they have very little interest in techniques that reduce it.
- The fail to account for edge cases, while inefficiently dealing with the general case.
- They never have time to comment their code or break it into smaller pieces.
- Empirical evidence plays
nolittle role in their decisions.
5,5 su 6.
Il mio amico vuole che io discuti il caso con la loro gestione, in particolare, ho ricevuto questa email dal loro manager per rispondere a:
...Also, I need to talk to you about what effect there is from Domain Expert continuing to make edits to the live environment. If that is a problem for you I need to know so I can have his access blocked. Some examples would help.
A mio parere, dal punto di vista tecnico, è pericoloso fargli apportare modifiche senza alcuna supervisione.
D'altra parte, sto facendo solo contratti one-off a questo punto e non ho molto desiderio di essere coinvolto a fondo in modo tale che sto essenzialmente discutendo come uno dei Bob di Office Space. Mi piacerebbe aiutare la mia amica - ma mi sento come se mi trovassi nel bel mezzo di una battaglia politica.
Ancora più importante - se sono coinvolto e suggerisco che i suoi privilegi di modifica vengano rimossi, è necessario gestirli con cura in modo che non si sentano sminuiti. È senza dubbio il più esperto di questo sistema.
Spero che questo sia un territorio familiare per alcuni altri stackchanger, perché mi sento un po 'disorientato. Come dovrei rispondere? Dovrei sostenere che non dovrebbe essere autorizzato a toccare il codice? Devo dire che "nessuno sviluppatore singolo, non importa quanto esperto, dovrebbe lavorare sul codice di produzione deselezionato"? Dovrei discutere di tenerlo coinvolto con il codice, ma con un processo di revisione? Devo dire "sono felice di poter aiutare, ma ora sono impegnato!" Altre opzioni?
Grazie mille!