Come posso essere più produttivo al lavoro? (contesto aggiuntivo all'interno) [chiuso]

4

Lavoro a un avvio più grande con una base di codice in scadenza. Ho lavorato qui solo alcuni mesi. Ho pochi problemi su cui lavorare attualmente perché siamo vicini a una versione. Non ho molti problemi / bug assegnati rispetto ad altri sviluppatori che stanno lucidando nuove funzionalità e aggiungendo test di regressione. Non sono sicuro di cosa lavorare, ma so che c'è molto da fare. È difficile trovare motivazione anche perché il lavoro tende ad essere più noioso (QA).

Ho ereditato parte del prodotto che è stato scritto male - uno sviluppatore C ++ prima incursione in HTML / JS, ed è il mio obiettivo principale qui. So che tutto il codice ha i suoi problemi, ma questo codice ha davvero bisogno di una riscrittura (sono circa 20.000 linee di javascript, un sacco di copia e codice, numeri di magia e nomi magri [var obj = ev.Items ;, doGetStuff (), meth [ metodo] [6], ecc.], per lo più metodi statici senza riutilizzo degli oggetti, nessuna separazione di UI e business logic) L'interfaccia utente è davvero pessima, potrei andare avanti con altri esempi ma voglio solo sottolineare che il codice è oggettivamente cattivo, non solo disordinato o che richiede un leggero refactoring. Tuttavia, poiché siamo vicini a una versione e il codice è alquanto stabile a questo punto, non è necessario modificare nulla che possa influire sul rilascio. Idealmente vogliono solo che il codice abbia più test unitari, test, documentazione, ecc.

Poiché è principalmente javascript strettamente collegato al codice ASP.NET dietro le pagine, è estremamente difficile eseguire il test dell'unità. Inoltre, non ci sono specifiche, quindi è difficile sapere se il codice funziona correttamente (ci sono regole aziendali molto complesse.) Quindi non sono sicuro di quanto sarebbero validi i test unitari anche se li avessi installati e funzionanti, il che sarebbe essere difficile in sé.

Su cosa mi piacerebbe lavorare, in modo che possa sembrare più un go-getter, un self-starter che in realtà fa cose utili in questa situazione? Mi preoccupo che sembrerò pigro se non sto producendo attivamente qualcosa, che si tratti di codice, documentazione o test. Potrei provare a ottimizzare, correggere i bug senza rompere nulla, che è rischioso e non fornisce molti vantaggi, o testare il codice più manualmente (che è probabilmente la cosa migliore da fare, ma in realtà non mi dà alcun riconoscimento dai miei colleghi ed è purtroppo molto noioso.) Mi piacerebbe rielaborare alcune delle UI e refactoring ma non posso farlo vicino ad un rilascio. Sto davvero lottando per capire qual è la cosa migliore da fare per sembrare positivo e lavorare sodo, e per trovare motivazione. Qualche idea su come posso essere più produttivo?

    
posta Shawn 24.05.2011 - 21:59
fonte

5 risposte

9

Se vuoi diventare grande, (chiedi) dirama la tua parte del progetto e lavora per ripulirlo. Una volta che la data di rilascio arriva e viene, uniscila di nuovo nel ramo principale. Ciò mantiene la versione di rilascio statica e consente di lavorare su ciò che è necessario.

Altrimenti, doc e prova come vogliono. Mentre lo stai leggendo, prendi nota di ciò che vuoi correggere nella prossima versione. Sì, non è esattamente glorioso, ma sei nuovo, quindi ti farebbe bene rivedere il codice.

    
risposta data 24.05.2011 - 22:32
fonte
3

Scopri come testare automaticamente questa roba. Quello sarà il più prezioso nel lungo periodo (c'è una lunga corsa?). Quindi inizia a costruire test. Se il codice è troppo strettamente accoppiato per essere testabile, lavora per disaccoppiarlo in modo da poterlo testare. La cosa migliore che puoi fare adesso è creare un processo per risolvere il problema e poi iniziare ad applicare il processo.

[aggiunto]

Leggi il documento Lavorare efficacemente con il codice legacy di Michael Feather

    
risposta data 25.05.2011 - 08:41
fonte
1

Penso che la cosa migliore da fare sia rendere consapevoli il tuo manager oi tuoi colleghi di come il codice sia strettamente unito e noioso con cui lavorare. Potrebbero già essere a conoscenza di ciò che potrebbe essere il motivo per cui l'hanno dato al nuovo ragazzo ...

Se riesci a elaborare un piano per il refactoring di bit e apportare miglioramenti qua e là, fallo passare brevemente dal tuo manager per vedere cosa pensano. In questo modo, almeno, sanno cosa vuoi fare e perché lo vuoi fare. Inoltre non sembrerai che stai perdendo tempo tutto il giorno se ci sono pochi progressi visibili.

Assicurati di non venire fuori come un lamento o di pestare lo sviluppatore precedente, dal momento che potrebbe non andare così bene.

    
risposta data 25.05.2011 - 00:38
fonte
-1

Trovo che una cosa che la gente dimentica è il costo di avere molte funzionalità. Ogni riga di codice aggiunge peso al progetto, rendendolo meno agile e più difficile da mantenere. Magari potresti passarlo attraverso una funzione di project manager per caratteristica, classificando ogni funzionalità per importanza e quindi cercando di capire cosa puoi ritagliare. Se potessi ridurre le dimensioni del codice del 50%, scommetto che diminuirebbe il tempo fino al rilascio di molto più del 50%.

    
risposta data 26.05.2011 - 06:02
fonte
-1

Sembra che io sia in ritardo, ma sono sicuro che, una buona risposta per una buona domanda, non tarderà:)

Quindi, hai una grande porzione di codice, e devi mantenere questo codice (correggere i bug) e devi migliorare questo codice (aggiungi nuove funzionalità), e questo codice non è ben scritto.

In primo luogo, preferisco pensare, questa è una sorta di sfida, e questo punto cambia tutte le cose - i guai diventano test, quanto sono strong e creativo, in questa guerra contro la complessità.

In secondo luogo, utilizzo le migliori tecniche e abilità per risolvere il mio compito:

  • Certo, sono strong negli algoritmi e nelle strutture dati (Knuth).
  • Strategicamente, utilizzo le migliori tecniche e tecnologie per gestire la complessità - dividendo il progetto in parti liberamente accoppiate (modelli OOP, lambda, buoni modelli di concorrenza, privilegi amministrativi - significa il migliore se tutte le funzioni saranno eseguite da login non amministrativo separato )
  • Tatticamente, creo la documentazione del progetto (mappe, diagrammi, anche solo lo stile dei tovaglioli). Quindi uso TDD / BDD, prima per creare / controllare la mia comprensione della struttura del progetto e poi legare strettamente parti di codice alla mia mappa del progetto, e quindi spendo costantemente un tempo significativo per refactoring o anche per riscrivere il codice, quindi il codice diventare modulare e strutturato.
  • E non dimenticare di riposare un po '- parla / cammina con le ragazze, guarda cinema, calcio, ecc;)
risposta data 31.10.2016 - 18:59
fonte

Leggi altre domande sui tag