Programavimas

Visas „Java“ gyvenimas: ką programinės įrangos architektas iš tikrųjų veikia visą dieną?

Programinės įrangos architektams tai lengva, arba tiek daug tiki programuotojai ir inžinieriai. Sužinokite, kaip iš tikrųjų atrodo kasdienis architekto darbas Visas Java gyvenimas interviu. „Java“ programavimo veteranas Bruce'as Brouweris aptaria savo požiūrį į senų „Java“ žiniatinklio programų atnaujinimą į paslaugas orientuotą front-end architektūrą, savo sparčiai besivystantį žiniatinklio vartotojo sąsajos įrankių rinkinį ir tai, kodėl jis dažniausiai renkasi dirbti su „Java“ apribojimais, o ne rinktis griežtesnę JVM kalbą.

Kaip ir daugelis programinės įrangos kūrėjų, aš visada skeptiškai vertinau architektus. Panašu, kad per dažnai jie kelia reikalavimus, kaip bus atliekamas kodavimas, nereikia išgyventi su pasekmėmis. Aš esu vaikinas, kuris kažkada parašė straipsnį „Kodėl aš ne architektas“, ir man buvo žinoma, kad jis kvailina „Jo mėgstamiausia IDE yra„ MS Outlook “.

Tada susipažinau su Bruce'u Brouweriu, „Gordon Food Service“ (GFS), šeimos valdomo maisto platintojo, turinčiu biurus Mičigane, programų architektu. Kai susipažinau su Bruce'u, jis buvo giliai į savo kompiuterio ekraną ir žiūrėjo tikrąjį kodą. Jo užduotis buvo integruoti GFS „Ruby“ pagrindu sukurtą kompiliatorių į programų kūrimą naudojant „JRuby“, o jo požiūris į darbą atrodė tik abstraktus. Buvau suintriguota.

Pasak jo, Bruce'o darbas GFS yra ir ateities žiniatinklio programų vizijos nustatymas, ir vizijos demonstravimas taikant koncepciją. Paprastai jis dirba su kūrėjų komandomis, įgyvendindamas kelis pirmuosius diegimo variantus. Pažangiausias klausimas, kurį Bruce'as dirbo tą dieną, kai susitikome, buvo tai, kaip perkelti GFS per tradicines užklausų / atsakymų žiniatinklio programas į į paslaugas orientuota front-end architektūra (SOFEA), kur visa pateikimo logika tvarkoma naršyklėje, o ne serveryje.

Bruce'as pasidalijo keliomis savo idėjomis, kaip peržengti klasikines į paslaugas orientuotas architektūras (SOA) daugiau į pranešimais pagrįstas paradigmas. Šios idėjos turi būti parengtos popieriuje, tačiau Bruce'ui reikia techninių komandų įpirkos, kad jos veiktų. Kaip architektas jis teikia komandų, technologijų ir netgi senų sistemų įgyvendinimo gaires. Jo žavinga perspektyva, kurią maniau vertą pasidalinti.

Mattas Heusseris: Pakalbėkite su manimi apie savo, kaip programuotojo ir architekto, karjerą. Kaip laikui bėgant pasikeitė tavo vaidmuo? Kaip šiandien priartėjote prie savo, kaip jaunesniojo programuotojo, palyginti su vidutinės karjeros programuotojo ar architekto vaidmeniu?

Bruce'as Brouweris: Po studijų perėjau į savo pirmąjį tikrąjį darbą. Beveik nuo pat pradžių aš stumdžiau ribas. Atnaujinant šios programos prieigos prie duomenų sluoksnį vyko šis varginantis procesas. Visus naujus darbuotojus patyrė skausmas dirbant tą procesą. Po pirmo karto nusprendžiau tai automatizuoti. Valdymas buvo sužavėtas, todėl jie paprašė, kad jį paleisčiau visoms duomenų bazės lentelėms. Tai užtruko maždaug savaitę, kad išvalyčiau netvarką, kad automatizuočiau tai, kas pasirodė sugedusiu procesu.

Tęsdamas savo karjerą radau daug daugiau galimybių, kad viskas būtų lengviau vystoma. Greitai su manimi susivienijo frazė: „Viena kodo eilutė“. Aš nuolat stengiausi, kad kūrėjams būtų paprasčiau. Nebuvau iš tikrųjų patenkinta savo darbu, kol jūs negalėjote padaryti to, kas anksčiau buvo sudėtinga, bet dabar buvo taip paprasta, kaip viena kodo eilutė.

Bet taip toli eiti galima tik pasigaminus geresnių įrankių. Turėjau pradėti mąstyti didesniu mastu. Pradėję žaisti šiame didesniame pasaulyje, vėl turite peržengti ribas. Galbūt SQL duomenų bazė nėra būtina. Galbūt laukimas atsakymo iš tos tarnybos nėra geriausias laiko panaudojimas. Gal Java nebepjauna.

Gerai, tas paskutinis punktas yra šiek tiek ginčytinas, tačiau tai yra klausimas, kurį aš uždaviau. Bet paprasčiausias šių klausimų uždavimas nėra tikrasis architekto darbas. Net nepakanka suprojektuoti visiškai genialios architektūros. Jūs turite mokėti žingsnis po žingsnio parodyti kitiems, kaip ten patekti. Architektas turi būti pagrįstas realiu pasauliu, patirti problemas, kylančias dėl to, ką jie suprojektavo. Tam reikia tiek techninių, tiek socialinių pastangų.

Mattas Heusseris: Su kokiomis technologijomis dirbate dabar?

Bruce'as Brouweris: Ne per seniausiai nusprendžiau užpildyti savo „LinkedIn“ profilį ir surašyti visas technologijas, kurias iš tikrųjų naudoju. Per šias pastangas sužinojau, kad „LinkedIn“ turi ribą. Nesakau, kad girtųsi, manau, kad tai yra problema. Yra daug dalykų, kuriuos reikia žinoti, kad būtum geras kūrėjas šiuolaikiniame pasaulyje. Turime geriau suvaržyti sąrašą įrankių, kuriuos naudojame savo darbui atlikti.

Apskritai aš naudoju „Java“ ir „Spring“. Ką aš pastaruoju metu dirbau, yra kurti internetinių programų kūrimo ateitį GFS. GFS kūrė žiniatinklio programas naudodamas „Java EE“ nuo tada, kai dar nebuvo tokių struktūrų kaip „Struts“ ar „JSF“. Dabar yra keletas naujų idėjų, kurios iššaukia šias serverio pusės žiniatinklio sistemas, pvz., SOFEA ir reaguojantis dizainas. Taip, mes galėtume pakreipti šias idėjas į dabartinę „Struts 2“ infrastruktūrą, kurią turime, tačiau atėjo laikas padaryti tikrą pertrauką tarp vartotojo sąsajos ir galinės pusės. Tokiu būdu mes galėsime geriau reaguoti į žiniatinklio sąsajos sluoksnio pokyčių tempą, nereikėdami atlikti tokių kardinalių pakeitimų paslaugų lygmenyje.

"Dabar yra keletas naujų idėjų, kurios meta iššūkį serverio žiniatinklio struktūroms, pvz., SOFEA ir reaguojantis dizainas. Taip, šias idėjas galėtume įtraukti į dabartinę„ Struts 2 “infrastruktūrą, tačiau atėjo laikas padaryti tikrą pertrauką tarp vartotojo sąsajos ir galinės pusės. galas."

Šiai naujai žiniatinklio vartotojo sąsajai turiu beveik visiškai naują įrankių rinkinį: „Angular“ ir „Twitter Bootstrap“, ir, žinoma, „jQuery“. Siekiu sukurti visą vartotojo sąsają iš statinių išteklių. Nė vienas iš vartotojo sąsajų nesirems, kad serveris generuos dinamišką vartotojo sąsajos turinį. Jis turi veikti paprastame „Apache“ tinklo serveryje; nei PHP, nei „Perl“, nieko.

Kalbant apie paslaugų sluoksnį, GFS turi didžiulį „Java“ palikimą. Ir didžiąja dalimi tai iš tikrųjų gana gera. GFS daugelį metų vykdė į paslaugas orientuotą architektūrą, naudodama „Spring POJO“. Paslaugos yra SOFEA pagrindas. JSON yra šių dienų pasirinktas duomenų transportas, o pavasario MVC leidžia lengvai parodyti šiuos POJO per JSON. Taigi, SOFEA iš tikrųjų labai tinka GFS.

Vis dėlto iššūkis buvo ta vizija, kaip tą žiniatinklio vartotojo sąsają paversti tikrai statiška. Norint sukurti gerą ir greitą žiniatinklio programą reikia tam tikrų kitų įrankių. CSS valdymui naudoju „Compass“. „JavaScript“ naudoju „Google Closure“ kompiliatorių, kuris turi puikią šaltinių žemėlapių funkciją. Išmeskite kai kuriuos kitus talpyklos pašalinimo reikalavimus ir palengvinkite jų kūrimą, ir staiga jums reikia išsamaus sprendimo ko nors, kas galiausiai taps tik daugybe tekstinių failų, kūrimo.

Yra keletas įspūdingų įrankių, kurie pradėjo atsakyti į šiuos iššūkius. Mane labai sužavėjo Gruntas ir Yeomanas, ir aš netgi pakėliau GFS, kad atsisakyčiau Maveno dėl Yeomano; bent jau žiniatinklio vartotojo sąsajai. Man susidarė įspūdis, kad „Maven“ griovimas gali būti kiek per toli įrankiams, kuriems dar nėra metų. Taigi aš pradėjau kurti „Maven“ papildinį, kad visa tai sujungčiau. Yra „Maven“ papildinių, leidžiančių tvarkyti „Compass“ ir „Closure“, tačiau jie nepateikia išsamaus sprendimo, kuris netgi gali modifikuoti HTML kūrimą, palyginti su gamyba, ir taip pat užtikrinti tiesioginio perkėlimo funkciją. Tai iš tikrųjų buvo nuostabi patirtis rašant šį „Maven“ papildinį, kuris, žinoma, parašytas „Java“.

Galbūt netrukus sugebėsiu įtikinti vadovybę leisti man tai grąžinti atvirojo kodo bendruomenei.

Mattas Heusseris: Kiek laiko buvote architektas? Prie ko dirbote prieš metus?

Bruce'as Brouweris: Aš jau aštuonerius metus esu programų architektas. Perėjau iš vyresniojo programuotojo į architektą, kai persikėliau į GFS.

Mano ankstesnis didelis projektas, prie kurio dirbau prieš metus, buvo perėjimas prie „Google Apps“. Tai buvo tikra mokymosi patirtis ir man. Perėjimo metu kilo tokia puiki idėja sinchronizuoti seną kalendorių su „Google“ kalendoriumi. Aš panaudojau „Google“ API iš „Java“ kartu su „Spring Integration“, kad visa tai įvyktų. Bent kurį laiką. Po kelių rimtų nesklandumų turėjau pripažinti, kad neverta rizikuoti. Buvimas to projekto architektu ir kūrėju padėjo man perspektyvoje išlaikyti tikrąjį pasaulį.

"Mes turėjome nubrėžti smėlyje liniją, kas yra ir netikslinga naudoti" Google "integruojantis į mūsų esamas sistemas. Gali būti sunku, kai esate priversti malšinti tam tikrą entuziazmą."

„Google“ suteikia GFS visiškai naują galimybių pasaulį. Mes tik pradedame jausti jo poveikį kurdami savo sistemas. Aš jau daug kalbėjau su žmonėmis, kurie nori naudotis „Google“, nes tai yra blizgus naujas žaislas. Mes turėjome nubrėžti smėlyje liniją, kas yra ir netikslinga naudoti „Google“, kai integruojame savo esamas sistemas. Gali būti sunku, kai esi priverstas malšinti tam tikrą entuziazmą.

Mattas Heusseris: Kaip architektas, jūs pasiekėte lygį, kurį pasiekia tik nedidelė dalis programuotojų. Ar turite patarimų programuotojams, pradedantiems savo karjerą?

Bruce'as Brouweris: Man labai patinka, kai nauji programuotojai sugalvoja užginčyti dabartinę dabartinę padėtį. Paprastai jie nori naudoti kokį nors naują įrankį, kad palengvintų užduotį. Kai tai nutinka, galiu padėti jiems pažvelgti į didesnį vaizdą. Dažnai tai reiškia nurodyti problemas, susijusias su šio įrankio įvedimu. Kalbėjimasis su problemomis kartais priverčia naująjį programuotoją atverti akis didesniems klausimams.

Taigi naujam programuotojui patariu eiti į priekį ir užginčyti kai kurias idėjas. Raskite vyresnį programuotoją ar architektą, kurį galėsite naudoti kaip patarėją ir išsakyti savo idėją. Tikėtina, kad idėja neišnyks, bet sužinosite daug sužinoję kodėl klystate ne tik kad klystate. Tačiau atminkite ir tai, kad vyresnieji programuotojai ir architektai gali nukentėti nuo trumparegystės ir galbūt tiesiog rasite idėją, kurios verta įgyvendinti.

Mattas Heusseris: Kas yra jūsų klientas? (Arba, norėdami pasiskolinti „Bobs“ eilutę „Biuro erdvėje“: ką jūs pasakytumėte, kad čia darote?)

Bruce'as Brouweris: Aš tiesiogiai nepalaikau nė vieno kliento ta prasme, kad būtų nukreiptas tiesioginis verslas. Iš tikrųjų esu IS infrastruktūros pusėje, kartu su DBA ir serverio administratoriais. Likusi IS dalis iš tikrųjų yra skirta tam tikrai verslo sričiai. Gali atrodyti keista „Java“ kūrėją įtraukti į infrastruktūrą, tačiau tai leidžia man sutelkti dėmesį į problemas, kurių architektūrinis dėmesys yra didesnis nei kiti. Kol kiti bando apibrėžti verslo procesus, aš daugiau dėmesio skiriu technologijoms, kurios naudojamos kiekvieno žmogaus problemoms spręsti pakartotinai.

Žmonės dažnai manęs prašo padėti kitiems projektams; kartais ilgesniam laikui. Tai man padeda išlikti pagrįstam realiame pasaulyje. Tai taip pat padeda man skleisti naujas idėjas visoms kitoms kūrėjų komandoms. Pastebėjau, kad kai manęs paprašė atlikti projekto architekto vaidmenį, mano įtaka apsiribojo daugiau jaunesnių kūrėjų; man iš tikrųjų buvo naudingiau prisidėti prie kitų projektų, kurie jau turi architektą, nes galiu savo idėjas perduoti tiems, kurie turi didesnę įtaką savo organizacijos daliai.

Mattas Heusseris: Kiek laiko programavote „Java“? Kaip matėte, kaip per tuos metus pasikeitė pati kalba ir „Java“ programavimas?

Bruce'as Brouweris: „Java“ rimtai nežiūrėjau iki „Java 1.3“. Taigi, tai būtų apie 13 metų. Tačiau net tada „Java“ iš tikrųjų netapo džiaugsmu kuriant, kol atsirado 1,5 su generiniais vaistais. Yra tiek daug gerų generikų naudojimo būdų, ir atrodo, kad dauguma žmonių jų nenaudoja už „Java“ kolekcijų sistemos ribų.

Dar tada, kai pradėjau naudotis „Java“, beveik viską rašėme patys. Laikui bėgant mačiau, kaip likęs pasaulis priėmė „Java“, ypač atvirojo kodo bendruomenėje. Tas atvirojo kodo sprogimas yra svarbiausias pokytis, kurį patyriau per savo karjerą programuodamas „Java“. Tai kažkas, ko iki šiol tikrai nepritaikė jokia kita kalba.

Mattas Heusseris: Pakalbėkite su manimi apie „JRuby“ naudojimą GFS. Koks jūsų požiūris į JVM kalbas; ar dabar turėtume visi tapti „Clojure“ programuotojais?

Bruce'as Brouweris: „JRuby“ iš tikrųjų buvo priemonė pasiekti tikslą Gordone. Kompasas iš tikrųjų yra premjeras „Sass“ įgyvendinimas, ir jis parašytas rubinu. JVM taip pat naudojau Rhino ir Groovy. Aš mačiau, kokios galingos ir pajėgios yra šios kitos kalbos, bet taip pat yra ir „Java“.

Pastaruoju metu populiarėja kitos kalbos, pvz., „Scala“ ir jūs minėjote „Clojure“. Nors tą patį galite padaryti „Scala“ naudodami maždaug pusę „Java“ kodo, manau, kad skaitomumas gali nukentėti greičiau nei „Java“. Dar kurį laiką pamačiau daug rangovų su lipdukais ant savo nešiojamojo kompiuterio su užrašu „Rašyti nėra kliūtis“. Aš visiškai sutinku. Geriau apgalvoti problemą ir aiškiai pasakyti kitam vaikinui yra svarbiau nei rasti protingų būdų, kaip sumažinti rašomų kodo eilučių skaičių. Nesupraskite manęs klaidingai, kad išlaikyti mažiau kodo yra geriau nei daugiau kodo, tačiau turi būti aišku, kas vyksta.