it-swarm.it

Quali competenze ti aspetteresti e apprezzeresti in un ingegnere del software Junior?

Di recente ho terminato il mio Master in Ingegneria del Software e sto per iniziare la mia carriera professionale tra qualche settimana. Il mio ruolo sarà di Junior Developer per un'azienda che sviluppa software utilizzando Java e tecnologie correlate (tra cui Spring e Hibernate). Ad essere sincero, sono davvero entusiasta di ciò che sta arrivando, soprattutto perché voglio sviluppare la mia carriera di Java. Sono anche molto interessato a fare esperienza nel settore. Inoltre, questa sarà la mia prima esperienza lavorativa come sviluppatore professionista, quindi voglio davvero fare del mio meglio fin dall'inizio.

Mi piacerebbe sapere quali abilità e abilità, sia soft che tecniche, sarebbero più apprezzate in un nuovo professionista (Junior Developer) che potrebbe far parte del tuo team e su quali competenze dovrei concentrarmi per raggiungere una carriera di successo come Software Ingegnere.

64
Bartzilla

Molte di queste sono vere, non importa dove ti trovi nella tua carriera, ma potrebbero essere particolarmente importanti per qualcuno che ha appena iniziato.

  • Ascolta più di quanto parli. Impara da ciò che dicono le altre persone.
  • Sii umile. Non aver paura di condividere le tue idee, ma non dare per scontato che tu abbia ragione e che tutti gli altri abbiano torto. Se vedi qualcosa che pensi sia sbagliato, chiedi a riguardo, non fare dichiarazioni al riguardo.
  • Continua a imparare. Il fondamento della tua educazione è (dovrebbe essere) ottimo, ma hai solo iniziato a imparare la professione. Impara facendo. Non penso che tu possa davvero imparare a meno che tu non stia effettivamente praticando ciò che stai imparando.
  • Il cliente raramente sa cosa vuole fino a quando non lo vede. Abituati alle tue esigenze cambiando. Adotta uno stile di sviluppo (se consentito) che metta rapidamente le cose di fronte al cliente per ottenere feedback.
  • Trova persone che sono brave a lavorare con i clienti e chiedi loro di farti da mentore su come sviluppare relazioni con loro.
  • Scrivi un codice ben collaudato e robusto. Farlo non è l'obiettivo; farlo bene è. Se sei bravo a farlo, la velocità verrà con il tempo.
  • Lavorare duramente. Non aspettare che ti venga chiesto di fare qualcosa; cercare o chiedere cose da fare.
  • Affronta i tuoi errori o gli errori della tua squadra. Non gettare i membri del tuo team sotto l'autobus di fronte al cliente, ma sii onesto in caso di problemi con il codice.
  • Potresti pensare che i tuoi compagni di squadra vogliono che tu sia un brillante programmatore. Sarebbe fantastico, ma i tuoi compagni di squadra vogliono davvero che tu sia competente e non un idiota. Se stai per essere un coglione, è meglio che tu sia brillante.
50
tvanfosson

Ecco un breve elenco in cima alla mia testa:

  • Follow-through (termina ciò che inizi)
  • Onestà (dimmi se sei bloccato)
  • Curiosità (scopri modi migliori per fare le cose)
  • Apertura mentale (sia alla critica che alle idee che non sono tue)
  • Generosità (condividi ciò che impari; forma la prossima generazione)
61
Alex Feinman

Due cose: la volontà di imparare e la capacità di imparare.

8
Dima

Motivazione. Sai come motivarti? Sai quali tattiche potrebbero funzionare meglio di altre? Si tratta della consapevolezza di sé che alcune persone potrebbero aspettarsi che tu sappia da tutta l'educazione che hai fatto per averlo scoperto sul lato.

Competenze di base per il test e il debug. Sai cos'è un test unitario? Conosci alcuni modi per eseguire il debug di un problema? Non si tratta di sapere specificamente cosa fare in un ambiente, ma piuttosto l'idea generale di quali possano essere i test di base e quali strategie adottare per affrontare un problema.

Capacità comunicative. Quanto sei preciso con la lingua? Quanto bene puoi passare dal tecnico al non tecnico? Concesso, questo è qualcosa da sviluppare, ma è qualcosa da notare e in alcuni casi salvare qualcuno che potrebbe mettersi nei guai non capendo le implicazioni di ciò che sostengono. Quanto bene vai d'accordo con le persone? Non che questo sia un requisito rigoroso, ma se si possono avere buone relazioni con colleghi di lavoro, può rendere alcuni lavori un po 'più facili da gestire. Anche l'onestà e l'integrità rientrano in questo gruppo di abilità poiché in genere potrebbero esserci domande su quanto bene dici cosa intendi e cosa intendi dire. "Office Space" ha molti esempi di cattiva comunicazione e mentre il lavoro è immaginario, ci possono essere state molte scene che erano davvero vicine alla realtà per alcune persone in termini di lavoro in ambienti di ufficio.

Versatilità. Le nuove persone nel team possono avere una vasta gamma di responsabilità in modo che se in una piccola azienda è necessario impostare database, reti, server Web e altre cose che sono al di fuori dello sviluppo. Chiedere aiuto per aiutare una squadra a rispettare una scadenza sarebbe un altro esempio qui.

4
JB King

La curiosità, l'entusiasmo, stabilisce uno standard elevato per te stesso, la volontà di apprendere, la volontà di ammettere che non sanno, l'interesse per ciò che l'azienda fa e come influenza il lavoro che produci. (Tutte buone qualità anche se hai 20 anni di esperienza)

Una buona conoscenza tecnica è ottima, ma devi mostrare come applicare questa conoscenza.

Soprattutto, l'intervistatore deve essere in grado di vederti lavorare lì per dare un contributo e voler rimanere. Se sei troppo bravo, questo può scoraggiare alcune persone più velocemente della media. ;)

4
Peter Lawrey

Sono d'accordo con tutto ciò che è già stato affermato, ma voglio sottolineare che non dovresti mai dimenticare queste abilità generali (e morbide) al posto di essere un esperto tecnico. Dovresti lavorare su entrambi, ma preferirei avere un intermediario in grado di comunicare ciò che sanno, quindi avere un maestro che preferirebbe lavorare da solo.

Inoltre, non passare troppo tempo con il naso in un libro. I libri sono buoni, anche grandi, ma se trascorri la maggior parte del tuo tempo a leggere e meno del tuo tempo a lavorare, non otterrai la metà di quei libri.

3
Wes Baker

Per me, come sviluppatore junior senza alcuna laurea, la mia volontà di lavorare sodo e migliorarmi mi ha aiutato molto nella mia carriera. Ho anche notato che essere in grado di far fronte ad alcune critiche (positive o meno) e di poterle seguire è stato apprezzato dai miei superiori.

Per quanto riguarda un nuovo ambiente: consiglierei di seguire il flusso solo per la prima settimana circa. Ho fatto l'errore di provare troppo, che era non apprezzato.

3
Zsub

Grandi risposte a tutti. Vorrei solo aggiungere, dalla mia esperienza di volo limitata: sai come si chiama una patente di guida?

Una licenza per imparare.

2
Mike Dunlavey

Molte grandi risposte.

Anche se non lavoro per i "grandi" e non sono un guru, aggiungerò i miei 2 centesimi.

Sii gentile con le persone.

Cerca di socializzare con i tuoi colleghi, trascorri un po 'del tuo tempo con alcuni di loro ogni giorno, se possibile. Vai a cena con loro ogni tanto, fatti una bella risata con loro.

In altre parole, prova a costruire una "comunità" se non ce n'è una, o a farne parte se esiste.

Conoscere i tuoi colleghi ti aiuterà ad andare d'accordo con loro più facilmente. Inoltre, le probabilità sono buone che ti divertirai a farlo.

2
s.m

Oltre a tutte le cose buone presentate dalla community (sopra), mi aspetto anche di vedere prove di alcune abilità difficili. Non perfezione o poteri über-geek, ma una buona conoscenza pratica delle basi e dei concetti di base. Hai già ottenuto il lavoro (comunque congratulazioni!) Quindi sei praticamente lì.

Ma aggiornare le tue conoscenze e/o aggiornarti con gli strumenti, i linguaggi e le tecnologie che la tua azienda utilizzerà significherà che inizierai a correre e creerai una buona prima impressione.

Un ipotetico sviluppatore perfetto junior conoscerà fondamenti di cose come

  • la lingua.
  • I/O
  • OO concetti come eredità
  • Interfacce di oggetti
  • accesso al database (in particolare riguardo a come lo fanno nel tuo nuovo "negozio di codice")
  • il modello HTTP
  • CSS
  • JavaScript/JQuery
  • progettazione del database
  • SQL e procedure memorizzate
  • gli IDE che utilizzerai
  • quadri pertinenti (citi primavera)

e così via. Sarà in grado di concentrarsi su acquisire nuove abilità senza doversi fermare e imparare le basi. Sarà in grado di avanzare (facendo tante domande sensibili quante ne desidera - la maggior parte degli sviluppatori senior amore che gli vengono poste sensibili domande tecniche) con la tariffa ordinaria di moduli online, pagine di amministrazione che molti giovani affrontano per i primi mesi. Diventare un dev affidabile, junior dev può essere il tuo primo test di iniziazione in team ;-)

Quando stavo iniziando come junior nel team web di una grande azienda, la maggior parte del lavoro iniziale che mi era stato assegnato era in qualche modo poco interessante, ma mi ha tassato al punto in cui ho colpito i libri ogni notte in modo da poter capire cosa stavo andando da fare il giorno successivo. L'ho superato, ma sono stati stressanti cinque o sei mesi dopo il lusso relativo del mio corso di Master ;-)

Se riesci a fare tutte le cose di base in modo efficiente, otterrai cose più interessanti da fare abbastanza rapidamente e questo ovviamente ti aiuterà ad avanzare nella tua carriera.

E riecheggiando ciò che molti hanno già detto, il mondo dei computer e del codice è in continua evoluzione. Dovrai imparare nuove cose a giorni alterni. Tieni la mente aperta e cerca di capire perché ti sei imbarcato in questo, in primo luogo perché lo hai <3. Negli anni a venire potrebbero esserci momenti in cui questo non sarà in prima linea nella tua mente. L'entusiasmo ti farà superare la maggior parte dei dossi e degli ostacoli.

Detto questo, la mia esperienza negli ultimi dodici anni suggerisce che la maggior parte dei giovani non rimane per sempre nella loro prima compagnia, quindi non rimanere troppo impiccati per essere "perfetto". Fare errori è tutto parte del processo che ti porterà da junior a dove vuoi finire. Lo sto facendo da un po 'di tempo e quasi - elimina un database di produzione almeno un paio di volte all'anno.

Buona fortuna con la tua carriera.

2
5arx
  • Passione per il lavoro

  • Disposto a saperne di più e di più e di più ..

  • onestà

  • consistenza

1
Jigar Joshi

Grandi risposte lì, se segui tutto ciò che la gente dice qui, sono sicuro che qualcuno sarà bravo in quello che sta facendo,

Voglio solo sottolineare alcuni punti.

  • Sii umile, non aver paura di esprimere la tua opinione, ma una volta che un'opinione è condivisa non tenerla, sii pronto ad imparare dagli altri.
  • stringere relazioni con i membri del tuo team, le persone che vogliamo lavorare con programmatori intelligenti e affermati, abbiamo ancora bisogno di persone con cui poter parlare, avere una relazione sana con i membri del tuo team ti aiuterà molto nella tua carriera.
  • Sii proattivo, non vedo l'ora di ricevere un lavoro, trova lavoro, proponi nuove idee all'ambiente, anche se non vengono accettate, questo aumenterà il tuo valore per l'azienda.
  • Condividi con gli altri ciò che impari, ciò aumenterà il livello di comprensione, aumenterà il tuo valore per l'azienda e la comunità.
  • Termina ciò che inizi, l'impegno è di grande qualità.
  • Resta felice e non rimanere deluso quando le cose non vanno come previsto, ci saranno alti e bassi, ma resisti

Tutto il meglio nel tuo lavoro

1
Brian Paul

Prendere l'iniziativa. Ho avuto molte persone che non lo fanno affatto e attendono sempre che mi venga detto esattamente cosa fare. Se vedi qualcosa che dovrebbe essere migliorato, fallo. Hai un'idea per migliorare qualcosa? Portalo avanti. Hai bisogno di un'altra abilità per migliorare qualcosa? Imparalo.

Dimostra che ti importa di quello che stai facendo e che vuoi migliorare.

1
jmq

Un'abilità che non credo abbiano molti programmatori Jr, ma è davvero ottima, la possibilità di creare i tuoi strumenti. Puoi risparmiare MOLTO tempo e fatica con alcuni strumenti personalizzati ben fatti. E non devono essere niente di speciale, la maggior parte dei miei sono script Shell a 3 righe, anche se alcuni sono molto più lunghi.

Ma imparare ad automatizzare le cose ti semplificherà la vita. (E stupisci i tuoi colleghi quando riesci a fare bene le cose)

1
Zachary K

Non per spaventarti affatto, ma una cosa che ti metterò in guardia contro che in ogni singola società in cui ho lavorato, sono i grandi metodi di scorrimento enormi e sporchi e gli oggetti mal nominati che ti fanno temere l'apertura dei file di origine in puro shock e orrore di un tale casino. I luoghi in cui normalmente li trovi si trovano nei gestori di eventi per i pulsanti "OK" nelle finestre di dialogo o il pulsante "Invia" nelle pagine Web.

Ti sto supplicando dal profondo del mio cuore. Ti preghiamo di installare un campanello d'allarme mentale, che quando un metodo inizia a sembrare grande, e per grande, intendo più di 10 righe o giù di lì, pensa a creare un altro metodo ... così tanti metodi in seguito, capirai quanto responsabilità il l'oggetto in cui stai sviluppando ha.

Il prossimo campanello d'allarme che consiglierei è il massimo di 2-3 parametri in un metodo. Se vedi metodi con circa 10 parametri di input, saluta la programmazione funzionale in un linguaggio OO ...

Scusate la leggera frustrazione espressa in questa risposta, non riesco proprio a urlare quanto sia utile imparare a scrivere codice pulito.

Prendi una copia di Robert. C Martins Clean Code . Leggilo settimanalmente, portalo fuori a cena, dormi con esso sotto il cuscino, ne hai una copia nel water, stampa alcune pagine e incollale sul soffitto in modo che quando vai a dormire, puoi leggerle prima tu annuisci;).

Ti auguro tutto il meglio per la tua carriera. La tua passione a questo punto dimostra già che farai alla grande.

1
Martin Blore

L'unico consiglio che posso offrire è non smettere mai di imparare. Il modo in cui quegli sviluppatori di rockstar sono arrivati ​​è prendendo tempo per imparare nuove tecniche e lingue sono il loro tempo libero. Sebbene sia fantastico se rimani lì per 10 anni, quando esci saprai solo Java + Spring + Hibernate. Ecco perché nel mio tempo libero guardo la piattaforma .NET, Python e il codice occasionale C++ per rimanere attivi: come qualcuno che sta lavorando su un MS in un secondo, il tempo può essere prezioso e deve essere speso saggiamente.

1
Woot4Moo

La possibilità di utilizzare google. Veramente.

Non che non aiuterei mai nessuno, specialmente un collega junior. Ma non c'è nulla di più frustrante che avere qualcuno che non si diligentemente risolto nel risolvere i problemi, continuamente.

Il mio consiglio per junior soft. gli ingegneri devono fare la dovuta diligenza nel risolvere i problemi. Usa google, wikipedia o stackoverflow diligentemente e metodicamente quando non sai qualcosa.

Non aspettare troppo a lungo prima di andare da un collega più anziano per chiedere aiuto, ma dipende dal tipo di organizzazione. In una buona compagnia in cui le persone si aiutano a vicenda, se passi più di mezza giornata a cercare una risposta, non esitare a interrompere le tue ricerche per chiedere aiuto.

In altre organizzazioni in cui le persone sono sempre cattive l'una con l'altra, potresti dover trascorrere alcuni giorni da solo (documentando tutto ciò che hai fatto e ovunque tu abbia ricercato) prima di chiedere aiuto. In tali società, documentare ciò che hai fatto aiuta a mostrare loro che "l'hai fatto su Google" perché sarà la prima replica che ti lanceranno.

Ma a prescindere, l'essenza di ciò che vorrei cercare in un ingegnere junior è fare la sua dovuta diligenza nel cercare di risolvere un problema invece di aspettarmi di avere risposte a lui continuamente. In breve, mostrami che puoi usare google.

1
luis.espinal

(1) Una mente aperta. Non vuoi qualcuno che è istituzionalizzato nell'uso del linguaggio X e dell'ambiente Y per ogni progetto. Vuoi qualcuno che possa ricongiungersi quando una particolare tecnologia non risolverà in modo pulito un problema e offrirà buone alternative. Inoltre, vuoi qualcuno che possa sfidare il pensiero convenzionale e trovare soluzioni che motivino il business. Potresti provare questo da solo, ma ho scoperto che le persone si abituano così tanto a un processo che non lo cambiano, ma si lamentano ancora della quantità di dolore che provoca loro. Di solito quando arrivo, guardo come migliorarlo e offrire soluzioni al mio manager. Ora, direi anche che il personale dovrebbe essere "diplomatico" riguardo ai suoi suggerimenti :)

(2) Buone capacità di modellazione di domini. Questo è piuttosto grande che ho trovato alcune persone trascurano. In alcuni dei luoghi in cui ho lavorato, imparare a conoscere il business è "sporcarsi le mani" e le persone evitano problemi puramente tecnologici come l'integrazione dei correttori ortografici nel controllo delle versioni ecc. E non investono molto tempo nel miglioramento del attività commerciale. Essere in grado di guardare un business e creare modelli (semplificazioni) da esso e comunicare che a vari pubblici sia parlati, visivi (UML, SSADM o altro) o un po 'di entrambi, vuoi qualcuno con quella mentalità.

Due libri che posso consigliare sull'argomento sono: Il programmatore appassionato e Il programmatore pragmatico . Entrambi i libri offrono buoni consigli ai programmatori junior e senior.

1
Desolate Planet