1. Com'è una tipica giornata di lavoro?
Tipo di giornata di lavoro, questo dipende dalla compagnia per cui lavori, startup, impresa, istituto scientifico ecc. Per lo più sincronizzandoti con i tuoi colleghi sui progressi ecc. Di solito una sorta di riunione (scrum, standup, ecc.) si terrà nelle prime 2 ore della giornata di lavoro e da lì è tutto in discesa, si ottiene un ticket (ordine di lavoro), si lavora su di esso ecc, alcune discussioni qua e là.
2. Quali sono alcune competenze utili da avere che a volte sono trascurate?
Improvvisazione, se sei fortunato con il lavoro che hai la maggior parte del tempo ti troverai a costruire qualcosa che non è mai stato costruito prima, usando strumenti che non hai mai usato prima in un modo che non dovrebbero essere usati:D Quindi avere qualcosa che la gente chiama intuizione, improvvisazione è molto importante, non sono sicuro di come questa abilità sia "sviluppata" perché ho lavorato con sviluppatori con più di 10 anni di esperienza che non ce l'hanno e con sviluppatori junior con meno di un anno di esperienza che ce l'hanno 😀 Fondamentalmente è quella sensazione fastidiosa nella parte posteriore della testa che ti dice se sei sulla strada giusta, qualcosa come una versione mentale dell'algoritmo Hill Climbing 😀
3. Puoi descrivere l'ambiente di lavoro, è informale, formale o un mix di entrambi?
Solitamente informale, l'ingegneria del software richiede immensi sforzi mentali e questo significa che devi essere a tuo agio per un lungo periodo di ore, specialmente durante quelle fastidiose corse a caccia di bug che possono trasformarsi in una notte intera 😀
4. Quanto è importante la documentazione nel tuo posto di lavoro?
Cruciale, documentare tutto quello che fai, anche il tuo processo di pensiero. È una cosa molto normale che tu codifichi qualcosa pensando che non lo "rivedrai mai più" e poi 6 mesi dopo, quando lo guardi, non hai idea del perché hai fatto qualcosa nel modo in cui l'hai fatto 😀 Anche i diagrammi (non devono essere UML, basta una bella immagine) della soluzione sono molto utili per spiegare agli altri cosa fa il tuo codice/soluzione.
5. Le competenze e l'esperienza sono facilmente trasferibili tra lavori in aziende diverse?
A volte, non c'è davvero una regola su questo specialmente perché l'IT/SW è molto dinamico a volte l'esperienza e le competenze acquisite nello stesso lavoro nella stessa azienda non saranno più valide dopo un periodo di tempo.
6. Quali sono alcuni vantaggi/svantaggi di lavorare come ingegnere del software?
Beh se sei bravo il vantaggio è che non sarai mai senza lavoro e se ami quello che fai ti divertirai un sacco. Gli svantaggi sono principalmente dovuti al fatto che il lavoro è molto intenso per la tua mente, quindi devi davvero stare attento al tuo ritmo e trovare qualche hobby/meccanismo di rilascio dello stress 😀
7. Qualche altro consiglio che vorresti dare a me e ad altri che vogliono diventare ingegneri del software?
Tenete a mente che è un lavoro, quindi siate professionali, non cadete nella mania del "i programmatori sono delle rockstar" e non diventate dei coglioni.
Mantenete una mente aperta alle nuove idee tecnologiche e ai suggerimenti di altri colleghi più esperti, anche se potrebbero non conoscere lo strumento esatto che state usando o il problema che state risolvendo, ascoltate i loro consigli, sono stati al vostro posto numerose volte.
Imparate bene le basi: algoritmi, strutture, come funzionano le cose, sono le uniche costanti che vi terranno al centro della vostra carriera di ingegneri.
Oh and the most import when choosing a job don’t got for the money, look at how much you will learn and the kind of people you will be working with, trust me no amount of money can compensate for have an idiot boss 😀
Hope this helps a bit,
Cheers,
Ivan V.