Portare lo sviluppo orientato agli oggetti al livello successivo [chiuso]

5

Puoi menzionare alcuni argomenti o concetti OO avanzati di cui dovresti essere a conoscenza?

Sono uno sviluppatore da 2 anni e attualmente puntano a una certa azienda che richiede uno sviluppatore web con un'esperienza minima di 3 anni.

Immagino che l'intervista abbia gli argomenti di base orientati agli oggetti come (astrazione, polimorfismo, ereditarietà, modelli di progettazione, UML, database e ORM, principi SOLID, principio di ESSICCAZIONE, ecc ...)

Ho trattato questi argomenti, ma quello che non vedo l'ora è di portare avanti argomenti come Efferent Coupling , Afferent Coupling , Instabilità , La legge di Demetra , ... ecc.

Fino a pochi giorni fa non ho mai saputo che esistessero concetti del genere (forse perché sono un ingegnere della comunicazione fondamentalmente non un laureato in CS).

Potresti raccomandare alcuni argomenti più avanzati riguardanti la programmazione orientata agli oggetti?

    
posta Songo 14.06.2012 - 11:59
fonte

2 risposte

2

Fratello o fratello, nessuno che in realtà ti intervista (cioè altri programmatori) vorrà sentirti parlare di termini vaghi e sofisticati. Sembri esattamente come quello per cui ti sei allenato - un ragazzo che legge un sacco di pagine di Wikipedia.

Invece, concentrati sulla comprensione dei vantaggi dell'astrazione sull'implementazione, prepara alcuni esempi in anticipo, spiega gli errori del tight coupling, come riconoscerli e come evitarli (in realtà Law of Demeter è utile qui - ma è importante per sapere quando usarlo e perché ).

Questo è tutto ciò che devi sapere per non rovinarli con codice errato. Voglio dire, è proprio quello di cui sono preoccupati, che avranno un nuovo ragazzo che arriverà e farà un gran casino. Devi concentrarti maggiormente su come far loro sentire di potersi fidare di te, piuttosto che impressionarli.

Un'ottima presentazione di questi argomenti è contenuta nel libro Agile PPP di Bob Martin .

    
risposta data 14.06.2012 - 15:28
fonte
0

Inizialmente leggendo il tuo post avrei detto: "sei ben preparato". Ma in realtà suona come Yam ha alcuni punti lì .

Sono stato messo nella posizione di condurre un paio di interviste e anche essere parte del processo decisionale, quindi posso dire che sarai sorpreso quando ti siedi dall'altra parte del tavolo, fino a che punto le persone tendono a interpretare male la loro situazione come candidato di lavoro:

  1. Hanno bisogno di TE - tu, al contrario, hai un'abilità (dicendo dalla tua scrittura che non sei stato seduto sulle tue mani durante questi due anni) ad un livello piuttosto avanzato che è molto ricercato dall'industria
  2. Anche loro sono persone - hanno bisogno di avere almeno l'immaginazione di poter lavorare insieme con te ogni giorno, e non otterrai il lavoro se ti senti meno a tuo agio e magari diventare timido o più silenzioso versione di te stesso.
  3. Non aver mai paura di dire subito che non sai qualcosa. Se hai letto l'argomento in questione anche secoli fa e conosci solo vagamente quello che è, affermalo chiaramente. Questo è ovviamente dopo essere stato chiesto qualcosa di specifico. Se ci sono degli "elefanti nella stanza", come forse una lacuna non documentata nel tuo CV, metti la storia chiara b4 se ti viene richiesta.

Teneteli sempre a mente. Non posso dire quali sono le cose che ti faranno lavorare in qualsiasi azienda specifica tu stia applicando, ma posso dirti che tipo di ragazzi ha sempre avuto un bel pollice in su e un secondo invito:

  • se stai dimostrando in modo autentico che questo lavoro è la tua passione, che stai bruciando per risolvere problemi di questo tipo e fai in modo che le macchine facciano tutte queste cose cattive, che tu sia una mente aperta, in continua evoluzione personaggio che si può anche "essere d'accordo-non-essere d'accordo" ma cooperare in modo costruttivo con, quindi hai un piede nella porta
  • portando con te alcuni esempi del tuo kung-fu più bello (niente di accademico, qualcosa di bello o utile che sia il migliore - in qualche modo correlato a ciò che stanno facendo tu possa mostrare sul portatile che porterai con te) può aiutare a spingerli oltre il bordo
  • ricercare il più possibile su ciò che fanno, chi sono i loro clienti e quale potrebbe essere attualmente il progetto più importante. Trova qualcosa, solo una scintilla forse, che ti interessa davvero, CHIEDI LE DOMANDE. Se è una grande azienda, cerca di capire quale settore esatto (orizzontale) e livello (verticale) punto della gerarchia ti stai candidando per partecipare.

La cosa migliore è che se riesci a seguirli, naturalmente a seconda delle dimensioni dell'azienda e delle pratiche delle risorse umane, potresti non essere affatto coinvolto in una situazione di esame orale. Cioè, se l'intervistatore ha la sensazione che ti piaccia davvero capire ed esplorare le cose che fai, e che non sei solo il Mysql o MongoDb fanboy recitando alcune caratteristiche del loro preferito " Golden Hammer "(vedi Anti-Patterns ) senza mai avere un indizio sugli sfondi reali.

Nessuno ha bisogno di essere un dizionario umano di informatica, al giorno d'oggi abbiamo bisogno di creatori, inventori, risolutori di problemi.

Naturalmente, tutto questo è solo il mio personale centesimo da questa esperienza di cambiamento di prospettiva.

P.S. Le letture più innovative per me nella mia carriera sono state "Clean Code" di RCMartin e "Pragmatic Programmer" (Hunt / Thomas) che è riuscito a ripristinare la mia volontà di combattere continuamente codice mediocre o "abbastanza buono" e identificare e migliorare i processi subottimali dove li vedo. Qualcuno che avesse abbracciato quei libri avrebbe sempre sparato immediatamente alla mia lista di candidati per dare il lavoro.

    
risposta data 26.06.2012 - 02:29
fonte