Domanda:
Assegnato un lavoro che non posso fare
marsh
2015-07-29 05:31:32 UTC
view on stackexchange narkive permalink

Sono un neolaureato che si è trasferito in tutto il paese per trovare il lavoro dei suoi sogni nella programmazione di giochi. Ho lavorato per una società indipendente per un anno e poi sono stato assunto da una delle più grandi società. Questo è un sogno che si avvera per me perché è stata l'intera ragione per cui sono andato a scuola. Sono abbastanza nuovo nel settore e sto lottando per sentirmi competente.

Comunque, lavoro in questo lavoro da quasi un anno ormai come programmatore generalista. Siamo una squadra abbastanza piccola in azienda. Il mio lavoro è stato principalmente il refactoring di codice, funzionalità e correzioni di bug. Ho lavorato con un'altra persona che ha molta più esperienza. Sono stati promossi e non sono più in programma. Mi è stato affidato il loro lavoro.

Il problema è che sono un programmatore grafico. Gran parte del mio lavoro ora è matematica 3D. Ho abbandonato la matematica al decimo anno, l'ho fatto di nuovo al college e l'ho superato a malapena. Sono pessimo in matematica e non mi piace. Il mio nuovo lavoro è in una materia di cui non so assolutamente nulla. Anche se questa non è una brutta cosa poiché ho imparato molte cose e lingue quando ho iniziato questo lavoro, ora sono la principale linea di supporto per molti grandi team. Ho il compito di risolvere i bug in una pipeline grafica, nel frattempo riesco a malapena a fare la moltiplicazione di matrici. Non conosco né la terminologia né la matematica.

Come faccio a dire al mio capo che non sono adatto per questo lavoro. Mi sono state chieste le mie capacità matematiche durante il colloquio e ho detto loro che non erano buone. All'epoca dissero che non aveva importanza.

Parte del problema è anche che non c'è più nessuno che svolga queste attività. Sono ben consapevole che la risposta al problema potrebbe essere semplicemente succhiarlo e affrontarlo.

Se è importante, questa è un'azienda molto grande e potrebbe essere possibile trasferirla in un nuovo team. Ma vorrei evitarlo a tutti i costi perché mi è piaciuto il team e il lavoro.

Hai qualcuno che può servire come mentore per gli argomenti di matematica 3D
Ovviamente, hai imparato argomenti significativi e difficili. Puoi fare la stessa cosa con le abilità matematiche. Il problema è che ci vorrà molto tempo e attenzione ed è molto più difficile se lo fai da solo (o anche con un mentore informale) al di fuori della struttura di un corso con compiti seri ed esami. Non ci sono scorciatoie con quella roba.
Potresti aggiungere se sei interessato a provare a imparare a fare il percorso 3d o se preferisci non farlo. La migliore risposta se vuoi dilungarti con il "Non so cosa sto facendo, ma ci proverò!" è molto diverso dalla risposta migliore se vuoi dire "In realtà non traggo piacere da quel tipo di lavoro".
Non mi piace, ma sento che è perché non mi piacciono le cose in cui sono cattivo. Non voglio che questa sia la mia scelta professionale. Ma non lo odio.
I commenti non sono per discussioni estese; questa conversazione è stata [spostata in chat] (http://chat.stackexchange.com/rooms/26444/discussion-on-question-by-marsh-assigned-job-i-cannot-do).
Penso che le persone abbiano delineato ottimi modi per affrontare questo problema. Ma essendo brutalmente onesto, se non ti piace la matematica, sei nel campo sbagliato amico, lo sviluppo del gioco è pesante sull'algebra lineare e trigonometrica. D'altra parte, puoi iniziare a imparare la matematica e ad applicarla direttamente ai giochi, adottando un approccio pratico. Ciò potrebbe riaccendere il tuo interesse per la matematica e semplificarti la vita.
È importante per la salute del software coinvolto che qualcuno che si sente così a disagio con la matematica avanzata * non * sia costretto a supportarlo in questo modo. Chi ha promosso l'altro programmatore dovrebbe sapere che deve sostituirlo con un altro esperto di grafica 3D.
Cinque risposte:
Jane S
2015-07-29 05:41:26 UTC
view on stackexchange narkive permalink

Qualcosa che ho imparato sia dall'esperienza personale che dall'osservazione (soprattutto osservando i miei figli) è che se sei convinto di non poter fare qualcosa, allora avrai difficoltà con esso. Semplicemente non sembri applicare il potere del cervello perché sai che fallirai.

Quindi ti darò lo stesso consiglio che do ai miei figli :) Piuttosto piuttosto che guardare l'intero problema di "Non so fare matematica", scomporlo in parti più piccole. Scegli qualcosa che capisci quasi e poi prova ad applicarlo ai problemi pratici per cui lo stai usando. Ricorda, la matematica è un processo, un algoritmo, proprio come la programmazione. Fai un passo, poi il prossimo, applica le regole e arriverai alla risposta :)

Ora, come gestirlo con il tuo capo? Bene, hai sollevato la questione con il tuo manager che stai lottando? Se lui o lei non lo sa, non possono aiutarti. Potresti dire che proverai ad imparare, ma ci vorrà tempo e forse un po 'di formazione che potrebbe aiutare. Quindi il manager può gestire il rischio di tenerti lì o di trovare qualcun altro che assuma quel ruolo.

Vorrei parlare con il tuo capo, dirgli dove hai difficoltà e che potresti impiegare più tempo per svolgere questi compiti mentre cerchi di capire la complessità della matematica che c'è dietro. Quindi, se davvero, davvero non puoi farlo, hai fatto tutto il possibile e assicurato che le persone che hanno bisogno di sapere lo facciano :)

Sono disposti a insegnarmi come lo sto imparando lentamente per un po '. Si occuperebbero dei problemi più difficili. Non sta più succedendo. Si tratta principalmente di segnalazioni di bug. Quindi devono essere riparati il ​​prima possibile, poiché un'intera squadra potrebbe essere in attesa. Mi sento come se non ci fosse abbastanza tempo per imparare, mi sento come se il mio capo stesse diventando impaziente, anche se questo mi passa per la testa.
Se li hai informati delle tue preoccupazioni e sono pronti a darti un po 'di tempo, allora corrono il rischio di ritardi mentre impari, non tu. Mantieni il tuo manager aggiornato sui tuoi progressi, concentrati sull'apprendimento e la velocità con cui acquisisci familiarità con tutto.
Se il capo ti ha assegnato ad esso, sapendo che stai ancora imparando questo codice e le ipotesi alla base, allora il capo non può aspettarsi che tu gestisca le segnalazioni di bug in modo efficiente come quelli che hanno fissato questo codice per anni, E il capo, se del tutto competente, lo sa, e sa che è stata presa la decisione deliberata di riassegnare le altre persone e di non spendere i soldi per assumere qualcuno di nuovo. Quindi gran parte della pressione che senti è, almeno nel caso positivo, auto-generata. Stabilisci obiettivi realistici per te stesso, seguilo passo dopo passo e accetta che le soluzioni più lente siano pur sempre soluzioni.
@keshlam Esattamente :)
Il secondo paragrafo è fondamentale. È probabile che tutti incontrino dei problemi nella loro carriera che all'inizio sembrano montagne insormontabili. Il mio approccio in questi casi è stato esattamente ciò che viene sostenuto qui: trova un punto debole (un'attività secondaria che sembra fattibile) e inizia a rosicchiare. Le lezioni apprese dai primi bocconcini vengono applicate alle fasi successive fino a quando non si è scavato un tunnel attraverso quella montagna. La parte migliore: una volta che hai seguito il processo una volta e hai visto che puoi avere successo di fronte alle avversità, avrai più fiducia quando si presenterà il prossimo problema del genere.
+1: "Sia che tu pensi di poter o pensi di non poterlo fare, hai ragione - Henry Ford".
Una cosa che aiuta molto nel caso della grafica 3D, in particolare, è costruire applicazioni giocattolo davvero semplici con cui giocare per capire le trasformazioni. Questo è un modo molto pratico per suddividere l'intera "matematica 3D" in compiti più accessibili con cui puoi sperimentare e farti un'idea. Ed ecco un piccolo segreto: un numero enorme di programmatori nei giochi in realtà non comprende appieno tutta la matematica che usano. Probabilmente hanno delle basi in matematica, ma soprattutto conoscono le tecniche e come applicarle.
Ecco una risorsa molto utile per imparare il tipo di matematica di cui hai bisogno: http://www.euclideanspace.com/. Copre una vasta gamma di soggetti, dai semplici vettori fino ai doppi quaternioni. Dichiarazione di non responsabilità: ho contribuito a questo sito con una piccola quantità di materiale sui doppi quaternioni.
@marsh: Ciao, avevo qualcosa, che definirei un approccio di apprendimento di grande successo quando si tratta di programmazione di giochi. Da bambino, giocavamo a giochi 3D. Un amico ha scoperto che potresti fare un po 'di modellazione in 3d Studio MAX. Ho provato a giocarci e mi sono interessato così tanto, potevo letteralmente passare le notti solo cercando di fare qualcosa di interessante (un uccello, un cactus, una mano ecc.). Nel processo, ho imparato un sacco di vincoli, semplicemente colpendoli: gli oggetti sono solo unilaterali (concetto normale), i modelli umani hanno cuciture (le trame UV sono piatte), gli n-gons con più di 4 lati sono spazzatura se non planare ecc.
@marsh: ctd .: ci sono più modi sbagliati che buoni per modellare un aeroplano in volo (blocco del gimbal), tutte le forme organiche sono approssimate (tassellatura), non puoi nemmeno fare un cerchio perfetto con uno strumento Bezier (almeno il razionale più comunemente usato con 4 maniglie di controllo). Più tardi nella vita, ho avuto pochissimi problemi a comprendere la maggior parte dei concetti matematici alla base (proiezioni, operazioni con vettori incrociati, rotazioni, mondo, vista, matrici del modello ecc.). È estremamente difficile capire queste cose solo a livello di "pensiero". Molte ore di gioco mi hanno insegnato molto bene i concetti.
@marsh: Quindi, la matematica nella programmazione del gioco è "usata" come strumento per raggiungere "qualche obiettivo". Ad esempio, lo stack di matrici, che sembra molto intimidatorio (qual è il peso extra per? 4 equazioni invece di 3 per 3d? Perché questo particolare ordine di moltiplicazione?) È davvero semplice se ci pensi in termini di modellazione: Oh, quindi ho messo telecamera laggiù (view matrix), che è relativa al centro del palco (world matrix), dove sta un ragazzo (model matrix) e ha articolazioni, di cui quella che controllo direttamente è quella dell'anca (radice di IK- e la gerarchia delle catene FK) e il resto segue (matrice di trasformazione locale).
Penso che tutti qui stiano semplificando eccessivamente quanto sia complessa la pipeline di rendering di uno studio di giochi AAA. Il rendering non è solo moltiplicare alcune matrici. Non è davvero qualcosa che impari in un paio di fine settimana. Stiamo parlando di padroneggiare l'apice del rendering 3D in tempo reale qui. Marsh ha bisogno di una soluzione per la sua situazione attuale. Non uno per un paio d'anni. Nota che sicuramente non sto dicendo che non è un'abilità apprendibile, ma come per tutte le cose complesse, ci vorrà molto tempo!
@RoyT .: Sono d'accordo. Ho fatto il mio commento, con qualcosa in mente, che mi sono dimenticato di scrivere. All'inizio tutti sono sopraffatti, di fronte a un nuovo dominio. Alla fine bisogna impararlo, non ci sono scorciatoie. Ciò non significa che uno debba sapere _tutto_ in un momento. È meglio ottenere un'approssimazione introduttiva del dominio e specializzarsi nelle aree in cui dominano le richieste di modifica. Questo è qualcosa che può essere fatto, in un periodo di settimane. La cosa più importante all'inizio è sapere quali parti NON devono essere conosciute.
@Rekin, mi dispiace, non so cosa sia "l'approssimazione introduttiva del dominio". Ma penso che ci siano pochissime scorciatoie quando si tratta di matematica e rendering 3D. È necessario disporre di una base solida prima di poter saltare parti e concentrarsi su alcuni argomenti. Ma sembra che stiamo divagando dalla domanda. Ammettiamo solo che ci vuole una quantità di tempo non banale prima che tu abbia una conoscenza utilizzabile che puoi usare sul piano di lavoro.
Roy T.
2015-07-29 12:32:19 UTC
view on stackexchange narkive permalink

Tutte le risposte finora danno per scontato che tu possa imparare tutta la matematica grafica 3D (cosa che sono sicuro che puoi), che ti divertirai a farlo (il che potrebbe non essere vero) e che puoi imparare tutto velocemente abbastanza da poter applicare queste tecniche OGGI in un ambiente di produzione (il che probabilmente non è vero).

Penso che la cosa migliore che puoi fare sia parlare con il tuo supervisore diretto. Dire che non sei in grado di svolgere una parte del tuo lavoro in modo soddisfacente non significa mostrare debolezza, mostra che sei critico nei confronti del tuo lavoro e delle tue capacità e che vuoi il meglio per l'azienda. Assicurati di aggiungere (se vuoi) che sei disposto ad apprendere queste tecniche ma che stai cercando dei corsi o un mentore che ti aiuti a farlo. Questa è una grande opportunità per migliorare te stesso e per renderti più prezioso per l'azienda. (Cose che i manager amano vedere).

Sono d'accordo. "Imparalo" è abbastanza facile da dire, ma quando la maggior parte dei corsi universitari di informatica a tempo pieno scalfisce a malapena la superficie della computer grafica non è una risposta ragionevole a breve termine. A lungo termine puoi diventare competente, sì, ma deve essere fatto qualcosa a breve termine mentre stai ancora cercando il significato di qualsiasi parola.
@DavidTheWin +1. Nella mia università, ci viene richiesto di imparare l'algebra lineare e fino al calcolo II. Tuttavia, non impariamo mai nulla relativo alla computer grafica a meno che tu non prenda il * corso di grafica offerto una volta ogni 2 anni *, e anche se lo prendi, graffi a malapena la superficie della programmazione grafica effettiva, e certamente non per i videogiochi (noi basta costruire modelli statici che non si muovono), e * certamente * non in un ambiente di produzione in cui fare il lavoro di "livello C" è OK. +1 anche a te Roy, il tuo primo paragrafo è perfetto.
jcpennypincher
2015-07-29 06:06:52 UTC
view on stackexchange narkive permalink

Comunicare in modo diretto e non aver paura di comunicare troppo. Fai del tuo meglio per fornire stime accurate e valutazioni della complessità per le attività. Se hai bisogno di aiuto chiedi, se non c'è aiuto a livello locale, molto spesso lo stack overflow ti darà risposte più velocemente delle persone con cui stai lavorando se fai domande chiaramente e fornisci i dettagli giusti. Impara più che puoi il più velocemente possibile, una volta che hai il cervello avvolto intorno alle cose non sembrerà così complicato. Prova a trovare alcuni workshop per acquisire maggiore esperienza o segui alcuni tutorial online. Se stai facendo uno sforzo e il tuo team lo vede, spesso questo sarà a tuo vantaggio. La maggior parte delle persone preferirebbe lavorare con qualcuno che è appassionato e motivato piuttosto che un saputello che è un'isola

Chan-Ho Suh
2015-07-29 06:05:55 UTC
view on stackexchange narkive permalink

Ho un dottorato in matematica. Un giorno ho dovuto spiegare l'algebra lineare a uno studente dopo aver mai moltiplicato le matrici per alcuni anni. Mi sono reso conto di aver dimenticato la regola di moltiplicazione delle matrici *, ma è interessante notare che ero ancora in grado di spiegare molta algebra lineare. Il motivo è: molti concetti di algebra lineare non riguardano dettagli come come moltiplicare le matrici.

Nel tuo lavoro, puoi semplicemente utilizzare una libreria o copiare e incollare il codice. L'importante è capire le idee, che è qualcosa in cui potresti non essere cattivo. Non lo saprai mai a meno che non ci provi.

  • come una cosa dell'ego, lasciatemi dire che sono stato in grado di derivare la regola per lo studente.
A destra, e le matrici in 3D sono per lo più 4 vettori impacchettati che descrivono i vettori base di coordinate x, y, ze offset di origine. Inoltre dubito che abbia mai bisogno di fare la parte della moltiplicazione.
@joojaa: Giusto e tutto si riduce a matrici di matrici, che è qualcosa che impari entro il primo mese di programmazione.
Usare una libreria = molto buono. Copia-incolla codice che non capisci = ** molto male ** L'unico modo per utilizzare il codice copiato incollato è isolarlo in una libreria stessa, chiaramente contrassegnato come copia incollato e con l'URL di origine incluso, in modo che i futuri visitatori sappiano da dove proviene.
È una pessima idea che abbia un nome: https://en.wikipedia.org/wiki/Cargo_cult_programming
Mohair
2015-07-29 18:13:37 UTC
view on stackexchange narkive permalink

Sono stato in situazioni come la tua e non è mai una bella sensazione trovarsi sopra la testa e perso. Se questo è davvero il lavoro dei tuoi sogni, l'unica scelta è capirlo. Non puoi rimanere un programmatore junior per sempre a svolgere compiti umili.

La chiave è trovare qualcuno che ha lavorato al codice prima di te che possa aiutarti. Questa è una relazione che devi gestire bene, perché il tuo mentore avrà il proprio lavoro da fare e non avrà sempre tempo per te. Per iniziare, chiederei a chiunque abbia lavorato su quel codice prima di dedicare un'ora o due con te e di esaminarlo. Non essere timido. Poni domande, prendi appunti, ecc. Approfitta del tempo che quella persona ha dedicato a te. Si spera che imparerai abbastanza per immergerti nel codice con sicurezza. In caso contrario, forse questo non è il lavoro per te, dopotutto.

Dopodiché, avrai sicuramente altre domande, ma devi cercare di risolverle da solo. Cerca di usare il tuo mentore solo come ultima risorsa. Fai i compiti in modo da non sembrare sciocco e sprecare il loro tempo. Spiega come sei arrivato alle domande che hai. Di 'qualcosa del tipo: "Ho capito X, e ho capito Y, ma quello che non capisco è come X e Y fanno Z". Se dimostri che stai imparando queste cose e ci stai davvero provando, le persone saranno molto più aperte e ricettive alle tue domande.

"Non puoi restare un programmatore junior a svolgere per sempre compiti umili." Verissimo, qualcosa che non avevo considerato.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...