Sono un consulente presso un'azienda. C'è un altro consulente che è un anno più vecchio di me ed è qui da 3 mesi in più di me e uno sviluppatore a tempo pieno.
Lo sviluppatore a tempo pieno è fantastico. La mia preoccupazione è che vedo il consulente prendere decisioni di design assolutamente terribili. Ad esempio, le relazioni M: M vengono archiviate nel database come una stringa delimitata da virgole anziché utilizzare una tabella di congiunzione per conservare le relazioni.
Ad esempio, considera due tabelle, Auto e Proprietà:
Record auto:
- Camry
- Volvo
- Mercedes
Record proprietà:
- Spare Tire
- Satellite Radio
- Supporto Ipod
- standard
Invece di creare una tabella CarProperties per rappresentare ciò, ha creato un attributo "Proprietà" nella tabella Car i cui dati sono simili a "1,3,7,13,19,25,"
Odio come questa decisione e altri influenzino la qualità del mio codice. Abbiamo battuto la testa su questo progetto tre volte negli ultimi due mesi da quando sono qui. Mi ha chiesto perché il mio suggerimento fosse migliore e ho risposto che il nostro database avrebbe eliminato i dati ridondanti convertendoli in una forma normale più elevata. Ho spiegato che questo difetto di progettazione, in particolare, è discusso e scoraggiato nei programmi universitari di primo livello, e ha risposto con una mia scusa dicendo che queste proprietà del database con valori separati da virgole vengono insegnate quando fai i tuoi maestri (che nessuno di noi ha) . Inutile dire che è diventato molto turbato e ha chiesto scusa per aver criticato il suo lavoro, cosa che ho fatto nell'interesse di non voler essere il consulente per creare un dramma d'ufficio.
Il nostro project manager è focalizzato sulla fornitura di un prodotto al più presto ed è una personalità molto strong - Suggerendogli a questo punto che passeremo un po 'di tempo per farlo correttamente, lo faremo fuori.
C'è una strong probabilità che entrambi i nostri contratti saranno estesi per lavorare su un secondo progetto in arrivo. Come potrò esercitare un'influenza dominante sulla progettazione del sistema e sul modello dei dati per garantire che tali errori terribili non vengano ripetuti nel prossimo progetto?
Un assaggio delle dinamiche:
Posso essere una personalità strong se non mi misuro. L'altro consulente non è una personalità strong, è un povero comunicatore, è piuttosto testardo e pensa di essere migliore di chiunque altro. Il project manager è una personalità estremamente strong focalizzata sul rilascio del prodotto di domani. Lo sviluppatore a tempo pieno è molto rilassato e disinvolto, un comunicatore molto efficace, ma è qualcuno che accetterà un cattivo design se non intende far oscillare la barca.
Le recensioni di codice o qualsiasi altra cosa che richiede "tempo" saranno fuori questione: non c'è alcun modo che il nostro PM sarà venduto da qualcuno a una cosa del genere.