Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)

Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)
Sama sa ilang giingon, kung dili ka maulaw sa imong daan nga code, nan dili ka motubo isip usa ka programmer - ug miuyon ako niini nga opinyon. Nagsugod ako sa pagprograma alang sa kalingawan kapin sa 40 ka tuig ang milabay, ug sa propesyonal nga 30 ka tuig ang milabay, mao nga daghan ako mga sayup. daghan kaayo. Isip propesor sa computer science, gitudloan nako ang akong mga estudyante sa pagkat-on gikan sa mga sayopβ€”sa ila, sa akoa, ug sa uban. Nagtuo ko nga panahon na nga maghisgot sa akong mga sayop aron dili mawala ang akong pagkamakasaranganon. Nanghinaut ko nga kini mapuslanon sa usa ka tawo.

Ikatulong dapit - Microsoft C compiler

Nagtuo ang akong magtutudlo sa eskuylahan nga si Romeo ug Juliet dili maisip nga usa ka trahedya tungod kay ang mga karakter walay trahedya nga pagkasad-an - sila nagbinuotan lamang, sama sa mga tin-edyer. Wala ako makauyon kaniya kaniadto, apan karon nakita nako ang usa ka lugas sa rationality sa iyang opinyon, labi na sa koneksyon sa programming.

Sa dihang nahuman nako ang akong sophomore nga tuig sa MIT, bata pa ko ug walay kasinatian, sa kinabuhi ug sa programming. Sa ting-init, nag-intern ako sa Microsoft, sa C compiler team. Sa sinugdan gibuhat nako ang naandan nga mga butang sama sa pagsuporta sa profiling, ug dayon gisaligan ako sa pagtrabaho sa labing makalingaw nga bahin sa compiler (sama sa akong gihunahuna) - backend optimization. Sa partikular, kinahanglan nakong pauswagon ang x86 code alang sa mga pahayag sa sanga.

Determinado nga isulat ang labing kamalaumon nga code sa makina alang sa matag posible nga kaso, gihulog nako ang akong kaugalingon sa pool headlong. Kung ang densidad sa pag-apod-apod sa mga kantidad taas, gisulod ko kini lamesa sa pagbalhin. Kung sila adunay usa ka komon nga divisor, gigamit nako kini aron mas hugot ang lamesa (apan kung ang pagbahin mahimo ra gamit ang gamay nga pagbalhin). Kung ang tanan nga mga kantidad mga gahum sa duha, naghimo ako og lain nga pag-optimize. Kung ang usa ka hugpong sa mga kantidad wala makatagbaw sa akong mga kondisyon, gibahin nako kini sa daghang mga ma-optimize nga mga kaso ug gigamit ang na-optimize nga code.

Usa kadto ka damgo. Daghang tuig ang milabay gisultihan ako nga ang programmer nga nakapanunod sa akong code nagdumot kanako.

Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)

Nakat-onan ang leksyon

Sama sa gisulat ni David Patterson ug John Hennessy sa Computer Architecture ug Computer Systems Design, usa sa mga nag-unang prinsipyo sa arkitektura ug disenyo mao ang paghimo sa mga butang sa labing madali nga panahon.

Ang pagpadali sa kasagarang mga kaso makapauswag sa performance nga mas epektibo kay sa pag-optimize sa talagsaong mga kaso. Katingad-an, ang kasagaran nga mga kaso kasagaran mas simple kaysa sa mga talagsaon. Kini nga lohikal nga tambag nagtuo nga nahibal-an nimo kung unsang kaso ang giisip nga komon - ug kini posible lamang pinaagi sa proseso sa mabinantayon nga pagsulay ug pagsukod.

Sa akong depensa, gisulayan nako nga mahibal-an kung unsa ang hitsura sa mga pahayag sa sanga sa praktis (sama sa kung pila ang mga sanga ug kung giunsa ang pag-apod-apod sa mga makanunayon), apan kaniadtong 1988 kini nga kasayuran wala magamit. Bisan pa, dili ako kinahanglan nga magdugang mga espesyal nga kaso kung ang karon nga compiler dili makahimo og labing maayo nga code alang sa artipisyal nga pananglitan nga akong nahimo.

Kinahanglan kong tawagan ang usa ka eksperyensiyado nga developer ug, kauban niya, hunahunaa kung unsa ang kasagaran nga mga kaso ug atubangon kini nga piho. Mosulat ako og gamay nga code, apan kana usa ka maayong butang. Sama sa gisulat sa magtutukod sa Stack Overflow nga si Jeff Atwood, ang labing daotan nga kaaway sa usa ka programmer mao ang programmer mismo:

Nahibal-an ko nga ikaw adunay labing kaayo nga katuyoan, ingon usab kami tanan. Naghimo kami og mga programa ug ganahan nga magsulat og code. Ingon niana ang paghimo kanamo. Nagtuo kami nga ang bisan unsang problema masulbad gamit ang duct tape, usa ka homemade crutch ug usa ka pinch of code. Sama sa kasakit sa mga coder sa pag-angkon niini, ang pinakamaayo nga code mao ang code nga wala maglungtad. Ang matag bag-ong linya nanginahanglan pag-debug ug suporta, kinahanglan kini sabton. Kung magdugang ka bag-ong code, kinahanglan nimo nga buhaton kini nga adunay pagduha-duha ug pagkasuko tungod kay ang tanan nga uban nga mga kapilian nahurot na. Daghang mga programmer ang nagsulat og daghan kaayo nga code, nga naghimo niini nga atong kaaway.

Kung nagsulat ako og mas simple nga code nga naglangkob sa komon nga mga kaso, mas sayon ​​​​ang pag-update kung gikinahanglan. Nagbilin ko ug kagubot nga walay gustong atubangon.

Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)

Ikaduhang dapit: advertising sa mga social network

Sa dihang nagtrabaho ko sa Google sa social media advertising (hinumdomi ang Myspace?), Nagsulat ko og sama niini sa C++:

for (int i = 0; i < user->interests->length(); i++) {
  for (int j = 0; j < user->interests(i)->keywords.length(); j++) {
      keywords->add(user->interests(i)->keywords(i)) {
  }
}

Mahimong makita dayon sa mga programmer ang sayup: ang katapusan nga argumento kinahanglan nga j, dili i. Ang pagsulay sa yunit wala magpadayag sa sayup, ug ni ang akong tigrepaso. Ang paglansad gihimo, ug usa ka gabii ang akong code miadto sa server ug na-crash ang tanan nga mga kompyuter sa data center.

Walay daotang nahitabo. Wala’y nabuak alang sa bisan kinsa, tungod kay sa wala pa ang global nga paglansad ang code gisulayan sa sulod sa usa ka sentro sa datos. Gawas lang kon ang mga inhenyero sa SRE mihunong sa pagdula og billiard sa makadiyot ug nihimo og gamay nga rollback. Pagkasunod buntag nakadawat ko og email nga adunay crash dump, gitul-id ang code ug gidugang ang mga unit test nga makadakop sa sayop. Tungod kay gisunod nako ang protocol - kung dili ang akong code mapakyas sa pagdagan - wala’y ubang mga problema.

Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)

Nakat-onan ang leksyon

Daghan ang nakasiguro nga ang ingon nga usa ka dako nga kasaypanan siguradong gasto ang hinungdan sa pagpalagpot, apan kini dili mao: una, ang tanan nga mga programmer masayop, ug ikaduha, sila panagsa ra makahimo sa sama nga sayop sa makaduha.

Sa tinuud, naa koy higala nga programmer nga usa ka maayo nga inhenyero ug gipalagpot tungod sa usa ka sayup. Pagkahuman niana, gisuholan siya sa Google (ug sa wala madugay gi-promote) - matinud-anon niyang gisulti ang sayup nga iyang nahimo sa usa ka interbyu, ug wala kini giisip nga makamatay.

Mao na isulti mahitungod ni Thomas Watson, ang maalamat nga pangulo sa IBM:

Usa ka mando sa gobyerno nga nagkantidad ug mga usa ka milyon nga dolyar ang gipahibalo. IBM Corporation - o hinoon, personal nga si Thomas Watson Sr. - gusto gyud nga makuha kini. Ikasubo, ang sales representative wala makahimo niini ug ang IBM nawala ang bid. Pagkasunod adlaw, kini nga empleyado misulod sa opisina ni Mr. Watson ug nagbutang ug sobre sa iyang lamesa. Si Mr. Watson wala gani magtagad sa pagtan-aw niini - naghulat siya sa usa ka empleyado ug nahibal-an nga kini usa ka sulat sa pagluwat.

Gipangutana ni Watson kung unsa ang nahitabo.

Ang sales representative misulti sa detalye mahitungod sa pag-uswag sa tender. Iyang gihinganlan ang mga sayop nga nahimo nga unta malikayan. Sa katapusan, siya miingon, β€œMr. Watson, salamat sa pagtugot kanako sa pagpasabut. Nahibal-an ko kung unsa ka dako ang among gikinahanglan niini nga order. Nahibal-an ko kung unsa siya ka hinungdanon," ug nangandam sa pagbiya.

Giduol siya ni Watson sa pultahan, gitan-aw siya sa mga mata ug gibalik ang sobre uban ang mga pulong: β€œUnsaon ko nimo buhian? Namuhunan lang ko og usa ka milyon nga dolyar sa imong edukasyon.

Duna koy T-shirt nga nag-ingon: "Kung nakakat-on ka gikan sa mga sayup, nan master na ako." Sa pagkatinuod, kon bahin sa mga sayop, ako usa ka doktor sa siyensiya.

Unang dapit: App Inventor API

Ang tinuod nga makalilisang nga mga kasaypanan makaapekto sa daghang mga tiggamit, mahimong kahibalo sa publiko, dugay nga matul-id, ug gihimo sa mga dili makahimo niini. Ang akong pinakadako nga sayop mohaum sa tanan niini nga mga criteria.

Ang mas grabe mas maayo

nagbasa ko essay ni Richard Gabriel mahitungod niini nga pamaagi sa mga nineties isip usa ka graduate nga estudyante, ug ganahan kaayo ko niini nga akong gipangutana kini sa akong mga estudyante. Kung dili nimo kini mahinumduman, i-refresh ang imong memorya, kini gamay. Kini nga sanaysay nagtandi sa tinguha nga "mahimo kini nga husto" ug ang "mas grabe mas maayo" nga pamaagi sa daghang mga paagi, lakip ang kayano.

Unsa man kini: ang disenyo kinahanglan nga yano sa pagpatuman ug interface. Ang kayano sa interface mas importante kay sa kayano sa pagpatuman.

Ang mas grabe, mas maayo: ang disenyo kinahanglan nga yano sa pagpatuman ug interface. Ang kayano sa pagpatuman mas importante kay sa kayano sa interface.

Kalimtan nato kana sa makadiyot. Ikasubo, nakalimtan nako kini sa daghang mga tuig.

App Imbentor

Samtang nagtrabaho sa Google, kabahin ko sa team App Imbentor, usa ka drag-and-drop nga online development environment para sa mga aspiring Android developers. Niadtong 2009, ug kami nagdali sa pagpagawas sa alpha nga bersyon sa tukmang panahon aron sa ting-init makahimo kami og mga master classes alang sa mga magtutudlo nga makagamit sa palibot sa pagtudlo sa tingdagdag. Nagboluntaryo ako sa pagpatuman sa mga sprite, nostalgic kung giunsa nako pagsulat ang mga dula sa TI-99/4. Alang niadtong wala mahibalo, ang sprite kay usa ka two-dimensional graphical nga butang nga makalihok ug maka-interact sa ubang mga elemento sa software. Ang mga pananglitan sa mga sprite naglakip sa mga spaceship, asteroid, marbles, ug racket.

Among gipatuman ang object-oriented nga App Inventor sa Java, mao nga adunay usa ka hugpong sa mga butang didto. Tungod kay ang mga bola ug mga sprite parehas kaayo ang paggawi, naghimo ako usa ka abstract sprite nga klase nga adunay mga kabtangan (mga field) X, Y, Speed ​​​​(speed) ug Heading (direksyon). Sila adunay parehas nga mga pamaagi sa pag-ila sa mga pagbangga, pag-bounce sa ngilit sa screen, ug uban pa.

Ang nag-unang kalainan tali sa usa ka bola ug usa ka sprite mao ang eksakto nga gilaraw - usa ka puno nga lingin o usa ka raster. Tungod kay una nakong gipatuman ang mga sprite, makatarunganon nga ipiho ang x- ug y-coordinate sa ibabaw nga wala nga suok diin nahimutang ang imahe.

Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)
Sa dihang nagtrabaho na ang mga sprite, nakahukom ko nga mahimo nakong ipatuman ang mga butang sa bola nga gamay ra ang code. Ang bugtong problema mao nga akong gikuha ang pinakasimple nga ruta (gikan sa punto sa panglantaw sa implementer), nga nagpakita sa x- ug y-coordinate sa ibabaw nga wala nga suok sa contour framing sa bola.

Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)
Sa pagkatinuod, gikinahanglan nga ipakita ang x- ug y-coordinate sa sentro sa lingin, ingon sa gitudlo sa bisan unsang libro sa matematika ug bisan unsang tinubdan nga naghisgot sa mga lingin.

Ang labing makauulaw nga mga sayup sa akong karera sa programming (hangtod karon)
Dili sama sa akong nangaging mga kasaypanan, kini nga usa nakaapekto dili lamang sa akong mga kauban, apan usab milyon-milyon nga mga tiggamit sa App Inventor. Daghan kanila mga bata o bag-o pa sa programming. Kinahanglan nila nga buhaton ang daghang dili kinahanglan nga mga lakang kung nagtrabaho sa matag aplikasyon diin ang bola naa. Kung mahinumdoman nako ang uban nakong mga sayop uban sa pagkatawa, nan kini makapasingot kanako bisan karon.

Sa katapusan akong gi-patch kini nga bug bag-o lang, napulo ka tuig ang milabay. "Gipatch", dili "giayo", tungod kay sama sa giingon ni Joshua Bloch, ang mga API walay katapusan. Dili makahimo og mga kausaban nga makaapektar sa kasamtangan nga mga programa, among gidugang ang OriginAtCenter nga propyedad nga adunay bili nga bakak sa daan nga mga programa ug tinuod sa tanang umaabot nga mga programa. Ang mga tiggamit mahimo’g mangutana usa ka lohikal nga pangutana: kinsa nakahunahuna nga ibutang ang pagsugod sa usa ka lugar gawas sa sentro. Para kang kinsa? Sa usa ka programmer nga tapolan kaayo sa paghimo ug normal nga API napulo ka tuig na ang milabay.

Mga Leksyon nga Nakat-onan

Kung nagtrabaho sa mga API (nga kinahanglan buhaton usahay sa matag programmer), kinahanglan nimong sundon ang labing kaayo nga tambag nga gilatid sa video ni Joshua Bloch "Giunsa paghimo ang usa ka maayo nga API ug ngano nga kini hinungdanon"O niining mubo nga listahan:

  • Ang usa ka API makahatag kanimo og dakong kaayohan ug dakong kadaot.. Ang usa ka maayo nga API nagmugna og balik nga mga kustomer. Ang daotan mahimong imong mahangturong damgo.
  • Ang mga publikong API, sama sa mga diamante, molungtad hangtod sa hangtod. Ihatag ang tanan: wala nay laing higayon nga buhaton ang tanan nga husto.
  • Ang mga outline sa API kinahanglan nga mubo β€” usa ka panid nga adunay mga pirma ug mga deskripsyon sa klase ug pamaagi, nga dili molapas sa usa ka linya. Makatugot kini kanimo nga dali nga ma-restructure ang API kung dili kini perpekto sa unang higayon.
  • Ihulagway ang mga kaso sa paggamitsa wala pa ipatuman ang API o bisan ang pagtrabaho sa espesipikasyon niini. Niining paagiha malikayan nimo ang pagpatuman ug pagpiho sa usa ka hingpit nga dili magamit nga API.

Kung nagsulat ako bisan usa ka mubo nga synopsis nga adunay artipisyal nga script, lagmit nahibal-an nako ang sayup ug gitul-id kini. Kung dili, usa sa akong mga kauban sigurado nga mobuhat niini. Ang bisan unsang desisyon nga adunay daghang mga sangputanan kinahanglan nga hunahunaon sa labing menos usa ka adlaw (kini magamit dili lamang sa pagprograma).

Ang titulo sa sanaysay ni Richard Gabriel, "Mas Mas Maayo," nagtumong sa bentaha nga mahimong una sa merkado-bisan sa usa ka dili perpekto nga produkto-samtang ang usa ka tawo naggugol sa usa ka kahangturan sa paggukod sa usa nga perpekto. Sa pagpamalandong sa code sa sprite, akong naamgohan nga dili na kinahanglan nga magsulat pa ako og dugang nga code aron kini husto. Bisag unsa pay isulti sa usa, nasayop gyud ko.

konklusyon

Ang mga programmer masayop kada adlaw, nagsulat man kini og buggy code o dili gusto nga sulayan ang usa ka butang nga makapauswag sa ilang kahanas ug produktibidad. Siyempre, mahimo ka nga usa ka programmer nga wala’y nahimo nga grabe nga mga sayup sama sa akong gibuhat. Apan imposible nga mahimong usa ka maayong programmer nga wala makaila sa imong mga sayup ug nakakat-on gikan niini.

Kanunay kong makasugat og mga estudyante nga mibati nga sila nakahimo og daghan kaayong mga sayop ug busa dili giputol alang sa programming. Nahibal-an ko kung unsa ka sagad ang impostor syndrome sa IT. Nanghinaut ko nga makakat-on ka sa mga leksyon nga akong gilista - apan hinumdomi ang panguna: matag usa kanato masayop - makauulaw, kataw-anan, makalilisang. Matingala ako ug maguol kung sa umaabot wala akoy igong materyal aron mapadayon ang artikulo.

Source: www.habr.com

Idugang sa usa ka comment