2009-04-13 8 views
13

Immagino che la maggior parte di voi sappia cosa sto ottenendo. Inizi un nuovo lavoro e entro la prima settimana circa della scansione del codice ti rendi conto di trovarti in un altro negozio C che getta nel flusso occasionale o nella sfortunata classe definita dall'utente qua e là. Ti rendi presto conto che non solo non imparerai nulla di nuovo, ma è solo una questione di tempo prima che ti venga chiesto di non usare certe cose perché nessuno le capisce e non sarà in grado di mantenere il tuo lavoro.Come determinare il livello effettivo di sviluppo in un negozio, ad es. C + + C?

Quante volte vedi qualche nuova tecnica per dire StackOverflow, solo per rendersi conto che se lo avessi mai usato sul posto di lavoro verrai accolto con smarrimento o fastidio al meglio?

Nella vostra esperienza questi luoghi sono la norma o l'eccezione?

In che modo (o vorresti) provare a determinare il livello di sofisticazione e l'impegno di C++ nel gruppo nell'intervallo? Ad esempio, ho provato a fare domande sull'uso della società di cose come STL, Boost, librerie di terze parti, ecc., Ma sembra solo avvicinarsi in modo incrementale alla realtà della situazione che troverai una volta dentro. Pensieri?

+1

C'è una domanda reale da qualche parte, ma non sono abbastanza sicuro di cosa sia. – Shog9

+0

Riguarda l'esperienza lavorativa e dovrebbe essere davvero wiki della comunità. Semplicemente, quanto spesso incontri negozi che sono molto più arretrati di quanto pubblicizzino e come li eviti? –

+0

Non sono sicuro del perché questo è stato chiuso. +1 per riaprire – jalf

risposta

9

È davvero tutto su tutta la linea. A un'estremità dello spettro, ho lavorato in un posto in cui il codice è stato recentemente riscritto in C. Di recente 10 anni fa. Tutti erano molto scettici su questa nuova tecnologia.

Un po 'più in basso nello spettro, troverai programmatori C che dispongono di compilatori con funzionalità C++ abilitate. Si diletteranno nella parola chiave "class". Ma a parte questo, stanno praticamente scrivendo in C.

Avanti su tutta la linea penso che troverai quelli che hanno appena perso l'ereditarietà e il polimorfismo. Questi sono il tipo di ragazzi e ragazze che svengono su un programma MFC o wxWidgets, pensando che fosse il massimo.

Andrai un po 'più lontano e troverai la gente che ha appena letto Meyer. Stanno tutti cercando di capire come usare STL in modo efficiente. Hanno una nozione di base di modelli che identifica principalmente il modo in cui STL li usa.

Poi hai i geek moderni di Metaprogramming in modello C++. Molti di noi in questi giorni usano il loro lavoro sotto forma di spinta e di tutta la sua bontà. Pochi sono effettivamente in giro con la metaprogrammazione del modello. Probabilmente è una buona cosa.

Ho visto codice scritto perfettamente ad ogni livello.

La cosa interessante che mi è sempre piaciuta del C++ è che a ogni livello di complessità aggiunta, il costo potrebbe essere concettualizzato in termini di "come questa nuova astrazione potrebbe essere implementata in C". Quindi posso concettualizzare che ereditarietà e polimorfismo aggiungono il costo di una ricerca di un puntatore a funzione. Da quando ho visto questo e scritto questo in C, so a cosa mi serve. Ho anche un'idea di come i template funzionano in parte a causa di come funziona il preprocessore in C. Ciò vale per la maggior parte delle funzionalità nel mondo C++ e C.

Poiché è facile mappare i concetti a come sono implementati in C, posso facilmente visualizzare come l'architettura sottostante esegue il mio codice.

+1

Questa è una buona sintesi ma non risponde alla domanda dichiarata: come (o vuoi) provare a determinare il livello di sofisticazione e l'impegno di un gruppo per C++ nell'impostazione dell'intervista? –

+0

Forse stai scrivendo, sembra che la domanda sia cambiata in qualche modo dal titolo originale di "Quanti" veri "negozi C++ hai lavorato?" con domande incentrate sulla nostra esperienza sul campo. È vero, non rispondo alla seconda parte su come determinare il livello di sviluppo. –

+0

scrivere-> destra :) –

1

Ho lavorato per lunghi periodi di tempo in tre negozi C++. In tutti i casi, si trattava di veri e propri negozi C++, che utilizzavano il C++ così come era destinato a essere utilizzato, e rimanevano abbastanza aggiornati, visti i tempi in cui lavoravo.

2

I luoghi in cui ho lavorato non stavano necessariamente utilizzando C soley. Non stavano sfornando nuovi programmi uno dopo l'altro ... di solito stavano costruendo qualcosa di grande e mantenendolo. Nella mia esperienza diventa più difficile continuare a implementare nuove funzionalità interessanti di una lingua in un vecchio software che continua a crescere e il compito principale è di mantenerlo/aggiornarlo.

Penso che chiedere nell'intervista su queste fantastiche nuove funzionalità sarebbe di grande aiuto ... dovresti almeno essere in grado di eliminare quelle ovvie. Un'altra cosa sarebbe chiedere se si potrebbe parlare con alcune delle persone che effettivamente scrivono il codice. La maggior parte delle interviste sono con tipi di manager ... e non sempre sono le persone coinvolte nell'uso delle ultime funzionalità di una lingua.

3

Se leggi tra le righe, probabilmente troverai molte informazioni sepolte nelle loro domande, sia in termini di ciò che vogliono e del loro livello di sofisticazione.

Si potrebbe anche voler restituire le loro domande non solo con le risposte, ma con domande più difficili che richiedono chiarimenti sulle ambiguità nelle loro domande.

Basta non venire fuori come uno stronzo arrogante quando lo fai. ;-)

-2

È interessante notare che considero il livello di avanzamento praticamente l'opposto delle tue preferenze. Pertanto questa risposta potrebbe non essere direttamente utile, ma spero che sia almeno in qualche modo informativo.


In primo luogo, qualsiasi ambiente che incoraggia "intelligenza" è sospetto. Se vedo un sacco di Boost, un sacco di metaprogrammazione dei template, e specialmente qualsiasi uso delle funzionalità "funzionali" del C++, è un grande segnale di avvertimento rosso. Significa che gli sviluppatori hanno un'idea di cosa sia la programmazione corretta, ma sono limitati dalla mancanza di immaginazione o di politica nell'uso di un linguaggio spazzatura decrepito come il C++. C è noioso e noioso con cui lavorare, ma il C++ "avanzato" fa il possibile per interferire con lo sviluppo.

In secondo luogo, controllare se una tecnologia o un concetto particolare viene considerato come parola chiave. Se il potenziale datore di lavoro utilizza XML, c'è un semplice controllo che puoi fare - usano un parser/serializzatore reale (SAX o DOM va bene), o lo analizzano con espressioni regolari e lo serializzano con flussi di caratteri grezzi? Se quest'ultimo, mostra che non capiscono perché il codice XML è utile, e lo stanno usando solo per avere un altro acronimo di tre lettere nella descrizione del progetto.

In terzo luogo, capire quale linguaggio gli sviluppatori desiderano che stavano usando e perché. Ogni buon sviluppatore ha un linguaggio oscuro preferito - non importa se si tratti di Python, Ruby, Smalltalk, Haskell o Factor - e un motivo per preferirlo. Se tutti si accontentano di lavorare in C++, è un altro segnale di avvertimento che non hanno molta curiosità sulla programmazione in generale.

+4

Quindi usare una lingua è un segno di mancanza di curiosità, ma anche usare quella lingua in tutta la sua estensione è anche un male? ;) Ovviamente C++ può trasformarsi in un pasticcio complicato se non si presta attenzione, ma può anche rimuovere una grande quantità di complessità attraverso l'applicazione delle cose che si menzionano. – jalf

+0

I tentativi dei programmatori di aggirare un linguaggio limitante, invece di limitarsi a involgere e sostituirlo lentamente, sono un segnale che le nuove idee non sono apprezzate. Non ho mai visto nulla uscire dalla metaprogrammazione del modello o dai macro hack che non potevano essere fatti meglio in un linguaggio di livello superiore. –

+0

@ John. La regola come sempre è lo strumento giusto per il lavoro. Per un progetto a lungo termine, anche l'ultima tecnologia "buzz" è sbagliata. Lo dici anche nella tua risposta! Un negozio che lavora principalmente in C++ non è per definizione "cattivo". –

0

Chiedete loro una copia del loro documento di standard di codifica C++. Questo dovrebbe darti un'idea del livello a cui stanno lavorando. Se non ne hanno uno, potrebbe essere un brutto segno.

Problemi correlati