Ho una domanda che è stata sollevata dal mio ultimo lavoro (piuttosto stagista).
Solo per mettere le cose in contesto - Ho 21 anni e ho finito il mio secondo anno di università prima di aver avuto circa 2 anni di esperienza nel campo dell'amministrazione di sistema / lavori di QA e sostanzialmente posso dire di avere visto come operano diversi settori IT. Flash forward to present times ed ecco qui sbarcando un lavoro di internship presso uno dei principali istituti di ricerca nel Regno Unito.
Quello che devo fare è creare alcuni strumenti interni usando un mix di tecnologie - principalmente AWS / Java / Bash - ottieni l'immagine. Va tutto bene, sto facendo il mio lavoro, ma non sono felice. Perché è così, perché mi aspetto che lavori in un caso ad hoc. Questo è creare le cose rapidamente, senza perdere tempo nel progettare. Il mio manager ha esplicitamente affermato che ci si aspettava che "si affrettassero" a risolvere i problemi mentre si presentano e in sostanza. Di conseguenza si è scoperto che le cose dovevano essere rifatte e reingegnerizzate e non sono ancora perfette. Per quanto riguarda i test, mantienilo al minimo, finché sembra funzionante, allora va bene.
Sono in difetto per non essere d'accordo con questo modo di condurre il lavoro? È sbagliato voler riflettere sul sistema nel suo complesso, quindi concentrarsi su diverse componenti e vedere come potrebbero interagire, azzerando i diversi "punti chiave" che potrebbero rivelarsi problematici in futuro? È un crimine voler fare un buon lavoro e non un "lavoro veloce"? È un errore o un'atteggiamento sbagliato voler ricercare le strutture di dati applicabili a un problema in modo da poter scegliere il migliore a seconda di un particolare problema? Per quanto ne so, il bit "Engineering" in "Ingegneria del software" deve fare esattamente questo: ricercare il dominio del problema e trovare una soluzione informata, quindi perfezionare se necessario?
Sono stato a un'intervista in uno studio di Arm nel Regno Unito e mi hanno mostrato la loro sala SCRUM e sembrava che avessero una buona idea su come gestire il loro progetto - avevano un arretrato, avevano delle metriche quanto tempo impiegano a risolvere ogni problema - le solite cose per SCRUM - completamente diverso dal modo in cui le cose vengono eseguite "qui"
Ho costruito un'idea sbagliata sull'industria del software in generale? Mi piacerebbe sentire il tuo contributo su questo. Intendo dire che ho "inserito" lo sviluppo del software solo perché voglio creare le cose - semplice e semplice, ma voglio creare cose di qualità. Voglio vedere il mio software utilizzato in vari scenari, voglio vederlo a prova di proiettile - non è la forza trainante per tutti gli ingegneri del software? Penso che tutti possano essere programmatori / programmatori semplicemente imparando la sintassi, ma per me, dove inizia il vero divertimento, è quando devi realizzare un progetto che è fattibile nel mondo reale.
Ero solito fare i miei incarichi universitari semplicemente osservandoli e iniziando direttamente la codifica e potevo ottenere facilmente voti superiori al 75% e non ho mai veramente apprezzato il modulo "sviluppo del ciclo di vita del software". Ma ora, quando ho visto nel mondo reale quanto è brutto lavorare senza processi formali e la frustrazione che è inerente a situazioni in cui non si sa se i requisiti cambieranno domani (oh, ho detto che non indossiamo avere un'analisi dei requisiti chiaramente definita?)
Mi piace davvero credere di aver appena raggiunto una posizione in cui alcune persone avevano semplicemente bisogno di una scimmia del codice per fare il loro sporco lavoro e questo non è il modo in cui il mondo del software funziona in generale.