Ho una domanda che è stata sollevata dal mio ultimo lavoro (piuttosto stagista).
Solo per mettere le cose in un contesto: ho 21 anni e ho già finito il mio secondo anno di università prima di aver avuto circa 2 anni di esperienza nel lavoro di amministratore / QA e in pratica posso dire di aver visto quanto diverso Settori IT operati. Passa avanti ai tempi attuali e qui sto facendo un lavoro di internato presso uno dei principali istituti di ricerca del Regno Unito.
Quello che devo fare è creare alcuni strumenti interni usando un mix di tecnologie - principalmente AWS / Java / Bash - per ottenere il quadro. Va tutto bene, sto facendo il mio lavoro, ma non sono felice. Perché? Perché dovrei lavorare su una questione ad hoc. Ciò significa creare cose rapidamente, senza perdere tempo a progettare. Il mio manager ha detto esplicitamente che ci si aspettava che "si affrettasse" a risolvere i problemi man mano che si presentano e in sostanza. Di conseguenza si è scoperto che le cose dovevano essere rifatte e riprogettate e non sono ancora perfette. Per quanto riguarda i test, tienilo al minimo, finché sembra funzionare, quindi va bene.
Sono in colpa per non essere d'accordo con questo modo di condurre il lavoro? È sbagliato voler pensare al sistema nel suo insieme, quindi concentrarsi su componenti diversi e vedere come potrebbero interagire, concentrarsi su 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 meglio in base a un determinato set di problemi? Per quanto ne so, il bit "Ingegneria" in "Ingegneria del software" ha a che fare esattamente con 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 metriche su quanto a lungo ciascuno il problema potrebbe richiedere una soluzione - le solite cose per SCRUM - completamente diverso dal modo in cui le cose vengono eseguite "qui"
Ho creato un'idea sbagliata sull'industria del software in generale? Mi piacerebbe sentire il tuo contributo al riguardo. Voglio dire che "sono entrato" nello sviluppo del software solo perché voglio creare cose - chiare e semplici, ma voglio creare cose di qualità. Voglio vedere il mio software usato 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 inventare un design che sia fattibile nel mondo reale.
Ero solito svolgere i miei incarichi universitari semplicemente guardandoli e iniziando direttamente la codifica e potevo facilmente ottenere voti superiori al 75% e non ho mai apprezzato il modulo "Ciclo di vita dello sviluppo software". Ma ora quando ho visto nel mondo reale quanto è brutto lavorare senza alcun processo formale e la frustrazione inerente alla situazione in cui non sai se i requisiti cambieranno domani (oh, ho detto che don hai un'analisi dei requisiti chiaramente definita?)
Mi piace davvero credere di aver appena ottenuto una posizione in cui alcune persone avevano solo bisogno di una scimmia di codice per fare il loro sporco lavoro e questo non è il modo in cui il mondo del software opera in generale.
because I'm expected to work in an ad-hoc matter. That is create things quickly, without spending time on designing
- Benvenuto in The Real World ™, dove ci sono scadenze e le aziende dovrebbero produrre risultati.