JavaRush /Java Blog /Random-TL /Isang araw sa buhay ng isang developer ng Java. Bahagi 1
alex8894
Antas
Санкт-Петербург

Isang araw sa buhay ng isang developer ng Java. Bahagi 1

Nai-publish sa grupo
Pagbati, mahal na mga kasamahan! Matapos ang paglalathala ng " 20+ Years Later ", humiling ang ilang mambabasa ng pagpapatuloy ng kuwento. Ano pa ang maaari kong pag-usapan? Tila ganap kong natalakay ang paksa ng paggawa ng isang "bearded enikey" sa isang developer ng Java. Magiging posible na gumuhit ng ilang mga konklusyon nang hindi mas maaga kaysa pagkatapos ng isang taon ng trabaho. At pagkatapos ay nagpasya akong ilarawan lamang kung paano napupunta ang aking karaniwang araw ng trabaho. Sa ilalim ng cut na "Isang araw sa buhay ng isang developer ng Java." Noong bata pa ako, mahilig akong matulog. Noong enikey pa ako, nagkataon na natulog ako hanggang tanghali at pumasok sa trabaho ng alas tres, o kahit alas tres y medya. Sa bawat oras na tumugon ako sa pana-panahong mga kahilingan ng management na "dumating katulad ng iba," ibig sabihin, pagsapit ng 9 a.m., sa parehong paraan sa bawat oras-sabi nila, kailangan kong magtrabaho sa mga computer kapag hindi ako nakakagambala sa sinuman. Gumulong ito. Ngunit sa edad, tila, may nagbago sa katawan, at ngayon ako ay higit pa sa isang "lark" kaysa sa isang "kuwago sa gabi". Kaya naman ngayon nauuna akong magtrabaho (o isa sa mga nauna). Ngayon ako ang una, at mayroon akong kalahating oras o isang oras na katahimikan hanggang sa makahuli ang iba, mas kaunting "mga maagang ibon". Oras na para magplano ngayon. Nagde-develop ako sa ilalim ng Linux Mint. Gusto ko ang Start button, katamtaman at eleganteng, hindi tulad ng mga tile na ito. Ang Cinnamon desktop manager ay hindi na-overload ng mga visual effect, ngunit sa mga tuntunin ng polish ito ay bahagyang mas mababa sa MacOS, na, siyempre, ang pamantayan sa bagay na ito. Madaling ihambing, mayroong Mac sa susunod na talahanayan, isang taga-disenyo ng UX ang nagtatrabaho sa likod nito. Halos wala rin akong mga reklamo tungkol sa OS mismo: mabilis itong gumagana at napaka-stable, tatlong beses ko lang itong na-reboot sa panahong ito - noong pinatay ko ang computer sa mahabang bakasyon. Sa totoo lang, halos agad din itong naglo-load, kahit na ang splash screen ay walang oras na lumitaw, dahil ang lahat ng mga computer ng mga developer ay nilagyan ng mga SSD drive. Una sa lahat, binuksan ko ang email client ng Thunderbird, may mga sulat na dumarating na may impormasyon tungkol sa mga pagbabago sa mga pahina na interesado ako sa wiki (may mga setting at pagtutukoy), ngunit ang pangunahing bagay ay mga abiso mula sa tracker. Anong kawili-wiling bagay ang nangyari sa atin? Oh, bumalik sila mula sa pagsubok ng isang tampok na natapos ko kahapon, mukhang nakakita sila ng isang bug. Well, oo, ito ay. Kailangan kong ayusin ito sa lalong madaling panahon, baka magkaroon ako ng oras bago dumating ang tester at titingnan niya kaagad ang mga pagwawasto bago siya pumasok sa ilang "hindi natapos na konstruksyon" pa. Iyan ang unang bagay para sa araw na ito. Kaya, ito ay tungkol sa aking "hindi natapos na konstruksyon", na isinulat ko sa buong huling sprint. Mukhang sa pagkakataong ito ay matagumpay niyang nalabanan ang lahat ng bilog ng impiyernomga yugto ng pagsubok at ngayon, malamang, kakailanganin itong isama sa pangunahing sangay ng proyekto. Ngunit darating iyon mamaya, pagkatapos ng tanghalian. Kahit ngayon ay kailangan nating magtrabaho sa devops at i-update ang stand mula sa sangay kung saan kasalukuyang isinasagawa ang development, kailangan nating magpakita ng bagong functionality. "Sa malaking kapangyarihan ay may malaking responsibilidad," ang sudo command ay nagpapakita ng babala bago magbigay ng mga pribilehiyo sa ugat. Sa medyo maluwag kong pagsasalin, ang pariralang ito ay parang "the more you can do, the more you will have to do." Hindi kataka-taka, samakatuwid, na ako, na nagtataglay ng "stamp ng tagapangasiwa," ay madalas na tumatanggap ng gayong mga gawaing "hangganan". Well, simulan na natin. Kahapon ay nagtatrabaho ako sa isa pang tampok, at ngayon kailangan kong bumalik sa sangay kung saan naroroon ang bug. Karaniwang gustung-gusto ng mga user ng Windows ang lahat ng uri ng graphical shell at gumagamit sila ng Turtle (TortoiseGit), ngunit para sa akin mas madali at mas pamilyar ito sa pamamagitan ng command line. Sa pangkalahatan, ang command line sa Linux ay isang maliit na obra maestra, hindi kapani-paniwalang maalalahanin at makapangyarihan, lalo na sa kumbinasyon ng Midnight Commander. Lumipat kami, ngayon kailangan naming itayo muli ang proyekto. Tina-type ko ang command gradle malinis asno. Hindi ko alam kung ang utos na ito ay orihinal na inilaan ng mga may-akda ng gradle o nilikha ng pagkakataon, ngunit nililinis at muling itinayo nito ang proyekto (ang asno ay maikli para sa pag-assemble, at hindi kung ano ang unang pumasok sa isip). Sa javarush, ang gradle ay binanggit lamang nang maikli, bilang "at iba pang mga build system." Oo, ang gradle ay walang mga pakinabang sa maven para sa pag-assemble ng mga proyektong pang-edukasyon. Karamihan sa mga tutorial at how-tos sa internet ay gumagamit din ng maven. Ang paglitaw at lumalagong katanyagan ng gradle ay malamang dahil sa mabilis na pagtaas ng pagiging kumplikado ng pagbuo ng mga modernong proyekto. Ang proyekto kung saan ako kasali ay binubuo ng ilang dosenang bahagi, kung saan ang backend ay nakasulat sa Java, ang frontend sa Javascript, at ang mga pagsubok sa Python. Sa ngayon, ang pag-assemble ng isang proyekto ng Javascript ay isang hiwalay at ganap na kumplikadong proseso, na kahit na may pangalan - Web Workflow, at ang dependency tree doon ay halos kasing laki ng sa Java. Well, hindi bababa sa hindi mo kailangang mag-assemble ng mga bahagi ng Python, mabuti, halos hindi na kailangan... Pagkatapos ng pagpupulong at paglunsad (na hindi rin mahalaga), kailangan mong itaas at simulan gamit ang data ng pagsubok ang isang buong kapaligiran na may kaugnayan at NoSql database, isang message queue at isang in-memory cache . Pagkatapos ang lahat ng ito ay kailangang tipunin muli at tumakbo sa CI server, at pagkatapos ay i-deploy gamit ang ansible. Kasabay nito, ang pag-unlad ay pangunahing isinasagawa sa ilalim ng Windows, at ang "labanan", demo, pagsubok at iba pang mga pre-prod server ay natural, sa ilalim ng Linux. Hindi ko talaga maisip kung paano posible na ipatupad ang mga ganoong bagay sa maven, ngunit medyo mahusay sa gradle. Ang katotohanan ay ang gradle build file ay nakasulat sa Groovy. Ito ay isang napaka nakakatawang wika, sinasabi nila na ito ay isang krus sa pagitan ng Java at Ruby, ngunit hindi ko kilala si Ruby, ngunit alam ko ang isang maliit na Javascript, at maraming mga konstruksyon mula dito ay gumagana din. Ang mga tagalikha ng gradle ay nagpatupad ng tulad ng isang API na sa mga simpleng kaso ang build file ay mukhang deklaratibo (at, sa pamamagitan ng paraan, sa aking opinyon, mas madaling basahin kaysa sa Maven's pom.xml), ngunit kung kailangan mo ng isang bagay na mas kumplikado, ang lahat ng pagpapahayag na ito ay itinapon, ang mga variable, pag-andar, mga klase ay lilitaw - sa isang salita, ang lahat ng mga tampok ng Groovy, na, sa pamamagitan ng paraan, ay maaaring i-compile at maisakatuparan sa parehong JVM bilang Java code. Ang pagpupulong mismo, tulad ng nabanggit ko na, ay cross-platform, ngunit nakikipag-ugnayan ito sa kapaligiran, kaya kailangan din itong suriin sa ilalim ng Windows. Upang gawin ito, mayroon akong Windows na naka-install sa isang virtual machine. Ang KVM ay sumusulong nang mabilis, at kung ang sistema ng panauhin ay na-configure nang tama, ang virtualization ay halos hindi nakikita. Oo, sinusuportahan na ngayon ng spice ang dalawang monitor, awtomatikong inaayos ang mga resolution ng screen, at halos walang pagkawala ng performance ang mga paravirtualized na device driver. Minsan naiisip ko ang sarili ko na wala akong nararamdamang pagkakaiba sa pagitan ng dalawang platform. Gayunpaman, ang Java ay isang kamangha-manghang tool na nagdulot ng dalawang ganap na magkaibang at, kung minsan, maging ang magkaaway na mundo na mas malapit na magkasama - ang mundo ng pagmamay-ari na software, mga bitak, keygen at serial,epitomized ng Windows at ng mundo ng mga open system na Linux. Kaya, ang proyekto ay binuo, inilunsad namin ito (siyempre, sa pamamagitan din ng gradle) at tingnan. Well, oo, kahihiyan sa aking kulay-abo na balbas, hindi ko ipinatupad ang isa sa mga kinakailangan ng produksyon, narito, nakasulat sa itim at puti sa wiki. Sa dati kong trabaho, regular kong nakatagpo ang sitwasyong ito at palaging naguguluhan sa kung paano maaaring napalampas ng developer ang isang buong talata mula sa detalye. Oo, madali! Naisip ko ito, nakatutok sa isa pang problema - at nagkaroon ng bug. Dito lamang, salamat sa maraming yugto ng pagsubok, mahuhuli siya, ngunit sa nakaraang lugar - mabuti, anuman ang nangyari. Buti na lang at hindi magtatagal ang trabaho dito. Naglulunsad ako ng Idea Ultimate, na kung saan ay isa sa ilang mga bayad na produkto na ginagamit sa pagbuo. Sa prinsipyo, makakayanan mo ang Community Edition, ngunit mabilis kang masanay sa magagandang bagay, halimbawa, pagsasama sa Spring. Kailangan mo rin ng ilang mga terminal para sa mga log, isang browser para sa frontend at isang wiki, isa pang terminal na may command line, lahat ay gumagalaw, kumikislap... Sa pangkalahatan, ang larawan sa mga screen ng dalawang monitor ay nagsisimulang kumuha ng nakakatakot. hitsura, tulad ng kung ano ang ipinapakita sa mababang badyet na mga pelikula, na naglalarawan ng masipag na trabaho ng isang hacker. Ngunit ito ay mga maliliit na bagay pa rin, ngunit naaalala ko noong kinailangan kong itaas at i-configure ang isang failover cluster - pitong terminal windows, iba pa sa sulok ng screen, sa lahat ng mga bintana - ilang mga numero at larawan mula sa ascii graphics... Ngunit Medyo lumayo ako sa trabaho, at lumilipas ang oras. ... Phew, well, parang ginawa ko na ang lahat ng kailangan ko at, parang, wala akong sinira sa ginawa ko kanina. Nagdaragdag ako ng komento sa tampok at ipinadala ang thread para sa pagsubok. Sinusubukan kong isulat nang mas detalyado kung ano ang eksaktong ginawa ko o binago upang pasimplehin ang gawain ng tester. Sa dati kong trabaho, talagang na-miss ko ang mga ganoong paliwanag nang kailangan kong suriin ang mga pagpapabuti na natanggap mula sa mga developer. Samantala, ang umaga ay maayos na naging araw, ang mga tao ay unti-unting humiwalay. Sa lalong madaling panahon magkakaroon ng isang stand up meeting, o sa aming opinyon, isang stand-up. Sa katunayan, ang araw ng pagtatrabaho ay dapat magsimula dito, at para sa karamihan ng "mga kuwago sa gabi" ito ay halos ang kaso. Ang stand-up ay nagsisilbing hangganan para sa pagdating sa trabaho nang huli hangga't maaari; ang pagiging huli para dito ay lubos na hindi hinihikayat. Well, para sa akin ito ay tulad ng isang pahinga. Kaya, tumayo tayong lahat. Sa isang stand-up, gaya ng dati, sinasabi ng mga developer kung ano ang ginawa nila kahapon at kung ano ang plano nilang gawin ngayon, sasabihin sa amin ng mga tester kung ano ang sinubukan nila at kung ano ang mga resulta, at ang mga boss, malinaw, kung ano ang plano nilang gawin sa susunod, anong mga problema ang lumitaw at kung ano ang kailangang bigyan ng espesyal na pansin. Ang aming koponan ay heograpikal na ipinamamahagi, at ang buong pandagdag nito ay makikita lamang sa stand-up (sa TV, siyempre), at gayundin, marahil, sa isang pangkalahatang kaganapan ng korporasyon nang ilang beses sa isang taon. Sa panahon ng stand-up, madalas kong naiisip na ito ay talagang inimbento upang hindi makapag-relax ang mga developer. Kapag araw-araw kailangan mong magpakita ng pag-unlad sa iyong trabaho, at hindi sa isang papel na ulat na ang iyong boss lamang ang magbabasa, ngunit sa harap ng iyong mga kasamahan, sa ayaw at sapilitan ay susubukan mong gumawa ng higit pa, para may mapag-usapan. Mayroong, siyempre, "mga pangmatagalang proyekto sa konstruksyon", tungkol sa kung saan sa loob ng ilang araw na sunud-sunod ay inuulit mo ang "kahapon ginawa ko ito, at ngayon ay patuloy kong gagawin ito," ngunit kahit na sa kanila ang ilang maliliit na kagyat na gawain ay patuloy na nakasabit. Sa madaling salita, totoo Palaging may sasabihin ang isang cowboy developer sa kanyang mga kasamahan. Sa stand-up ay hiniling sa akin na mabilis na i-update ang aking stand, kaya ngayon gagawin ko iyon. Kapag ang pangunahing sangay ng proyekto ay nai-publish, ang pag-update ay ginawa ng mga admin, ngunit ngayon kailangan naming mag-publish ng isang tampok na hindi pa tapos, at sa parehong oras ang ilang mga problema ay hindi maiiwasang lumitaw na hindi malulutas ng mga admin. Ang stand ay matatagpuan sa isang data center, ang pag-access dito ay posible lamang sa pamamagitan ng ssh, mayroong, siyempre, walang graphical na shell doon - kaya lamang ang command line, hardcore lamang! Ang pag-update mismo ay awtomatiko at naging maayos, ngunit pagkatapos ng pag-update ay hindi magsisimula ang isa sa mga bahagi. Tinitingnan ko ang mga log na may mas kaunting utos; sa pamamagitan ng paraan, mayroon itong napaka-maginhawang pag-andar: kung pinindot mo ang Shift-F, patuloy itong ipapakita ang kasalukuyang nilalaman ng file, na perpekto para sa mga log. At ano ito... kakaibang bagay? Buong screen ng mga tandang pananong na pinaghihiwalay ng mga kuwit. Pangalawang screen, pangatlo, pangsampu... Ilan sila? Oh, tapos na, naging stacktrace pala. May sumulat ng SQL query sa operator ng IN para piliin ang mga gustong record mula sa isang listahan, at gumawa ng parameter para sa bawat elemento ng listahan. Lahat ay gumana hanggang sa ang listahan ay naglalaman ng higit sa 32767 elemento, pagkatapos nito ang SQL server sa wakas ay naubusan ng pasensya. Kakailanganin mong magsulat ng ulat ng bug tungkol dito, ngunit wala itong kinalaman sa problema sa hindi gumaganang bahagi. Tingnan pa natin. Ngayon ay malinaw na ang paglipat ng istraktura ng database sa bagong bersyon ay hindi dumaan, tila ang may-akda ng tampok ay nagbago ng isang bagay sa paglipat, at dito, sa stand, mayroong naunang bersyon nito. Kakailanganin mong ibalik nang manu-mano ang mga pagbabago sa istraktura, sa pamamagitan ng SQL server console utility. Paano ako makakasulat ng utos sa DML para magtanggal ng field? index? mga mesa? Parang yun na yun. Ni-restart ko ang component, naging maayos ang paglipat... maayos ang lahat. Oras na para kumain ng tanghalian, maganda ang panahon ngayon. "Ang maliwanag na dilaw na bola na nakasabit na hindi gumagalaw sa kalangitan at nakakatakot sa mga taong bayan ay naging Araw." Halos ang unang maaraw na araw ng taon. Hindi ko man gustong umalis sa kalye, ngunit kailangan ko - ang oras para sa pagsasama ay papalapit na. Itutuloy
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION