Sono andato a un'intervista la scorsa settimana per un programmatore junior e ho detto che ho lavorato a un progetto con un mio amico. Domani vorrebbero vedere questo progetto per decidere se assumermi o meno. Quindi mi stavo chiedendo:
- Quali parti di un progetto interessano a qualcuno che non ha ancora visto il progetto?
- Cosa potrei mostrare per cambiare la loro prospettiva di me come programmatore e cosa so?
Il progetto è in C # e è stato un progetto per hobby per 6 mesi. Senza entrare in molti dettagli:
- è un programma in rete
- è basato su server / client dove i client finiscono per connettersi gli uni agli altri
- esiste la sincronizzazione dei dati tra i client
- utilizziamo i file per archiviare le informazioni sui diversi client, anch'essi sincronizzati
- il programma nel suo complesso è diviso in diversi progetti (alcuni dei quali sono in .dll)
- il progetto gestirà in seguito più livelli di visualizzazione dei dati all'utente (ovvero cmd, una finestra ecc.)
Ho verde acceso anche con il mio amico ed è giusto mostrarlo. La mia idea era di mostrare la shell (cmd) che abbiamo che funziona e i livelli superiori della gerarchia, quelli con cui la shell comunica direttamente. Si tratta in particolare di tre classi, una che si connette e comunica con il server, una che gestisce la sincronizzazione e una che gestisce gli oggetti che vengono sincronizzati. Proverò ad approfondire alcuni dettagli su come archiviamo gli oggetti e su come questo viene comunicato alla classe di sincronizzazione. Quindi discutete su un livello più alto di come sincronizziamo i dati, terminando con l'andare in dettaglio su come questo viene fatto.
Fondamentalmente, inizia da un livello astratto e vai nei dettagli dove la magia si verifica.
Ma mi chiedo come sia comprensibile per qualcuno che non ha mai visto il nostro progetto prima. Come dimostrerà che sono un programmatore migliore o peggiore del mio prossimo? Sono programmatori quindi immagino capiranno le basi e saranno in grado di seguire le funzioni e il codice. Ma so che I hanno problemi a capire l'immagine complessiva di un progetto, molto meno in 1-2 ore. Inoltre, non saprei come decidere se fosse un buon programmatore o cattivo a meno che non vedessi del codice errato. Quindi la mia domanda è:
- L'idea sopra è qualcosa su cui lavorare? (in alto > in basso)
- Dovrei concentrarmi maggiormente sugli algoritmi?
- Dovrei provare a costruire un diagramma UML o qualche altra rappresentazione visiva del progetto?
Qualche altra idea?