Puni Java život: Što softverski arhitekt zaista radi cijeli dan?

Softverskim arhitektima je lako, ili tako vjeruju mnogi programeri i inženjeri. U ovom intervjuu za Full Java saznajte kako izgleda svakodnevni radni vijek arhitekta . Veteren Java programiranja Bruce Brouwer raspravlja o svom pristupu nadogradnji naslijeđenih Java web aplikacija na servisno orijentiranu front-end arhitekturu, svom brzo razvijajućem se web alatu korisničkog sučelja i zašto općenito više voli rad s ograničenjima Java nego da se odluči za manje rigorozan JVM jezik.

Kao i mnogi programeri, uvijek sam bio skeptičan prema arhitektima. Čini se da prečesto postavljaju zahtjeve kako će se raditi kodiranje, a da ne moraju živjeti s posljedicama. Ja sam tip koji je jednom napisao članak pod nazivom "Zašto nisam arhitekt", a poznato mi je da sam rekao "Njegov omiljeni IDE je MS Outlook."

Tada sam upoznao Brucea Brouwera, arhitekta aplikacija u Gordon Food Service (GFS), obiteljskom distributeru hrane s uredima u Michiganu. Kad sam upoznala Brucea, bio je duboko u ekranu svog računala, gledajući stvarni kod. Njegov je zadatak bio integrirati GFS-ov kompajler Compass zasnovan na Rubyu u izgradnju aplikacije pomoću JRubyja, a njegov pristup poslu izgledao je sve samo ne apstraktno. Bila sam zaintrigirana.

Bruceov posao u GFS-u je, kako kaže, i postavljanje vizije budućih web aplikacija i pokazivanje svoje vizije aplikacijama s dokazima o konceptu. Tipično radi s razvojnim timovima na prvih nekoliko implementacija uvođenja. Najmodernije pitanje na kojem je Bruce radio, na dan kada smo se upoznali, bilo je kako GFS premjestiti prošlost tradicionalnih web aplikacija sa zahtjevima / odgovorima u uslužno orijentiranu front-end arhitekturu (SOFEA), gdje se sva prezentacijska logika obrađuje u pregledniku nego na poslužitelju.

Bruce je podijelio neke od svojih ideja za pomicanje izvan klasične arhitekture orijentirane na usluge (SOA) u paradigme utemeljene na porukama. Te ideje moraju raditi na papiru, ali Bruceu je potreban ulazak tehničkih timova kako bi ih natjerao da rade. Kao arhitekt pruža smjernice za provedbu timova, tehnologija, pa čak i naslijeđenih sustava. Njegova je fascinantna perspektiva i ona koju sam smatrao vrijednom dijeljenja.

Matt Heusser : Razgovarajte sa mnom o svojoj karijeri programera i arhitekta. Kako se vaša uloga promijenila s vremenom? Kako ste pristupili svojoj ulozi mlađeg programera naspram srednjoškolskog programera ili arhitekta danas?

Bruce Brouwer : Nakon fakulteta prešao sam na svoj prvi pravi posao. Gotovo od samog početka potiskivao sam granice. Došlo je do tog zamornog postupka ažuriranja sloja pristupa podacima ove aplikacije. Svi su novi zaposlenici bili izloženi mukama u radu na tom procesu. Nakon svog prvog puta, odlučio sam ga automatizirati. Uprava je bila impresionirana, pa su me zamolili da je pokrenem za sve tablice u bazi podataka. Trebalo je otprilike tjedan dana da očistim nered iz svoje automatizacije, što se ispostavilo kao pokvaren postupak.

Kako sam nastavio u karijeri, pronalazio sam još mnogo prilika kako bih olakšao razvoj stvari. Sa mnom se brzo povezala fraza: "Jedan redak koda." Stalno sam forsirao svoj posao kako bih pojednostavnio programere. Nisam bio istinski zadovoljan svojim radom dok niste uspjeli učiniti nešto što je ranije bilo složeno, ali sada je bilo jednostavno poput jednog retka koda.

Ali tako daleko možete ići samo izradom boljih alata. Morao sam početi razmišljati šire. Kad počnete igrati u ovom većem svijetu, opet morate pomaknuti granice. Možda SQL baza podataka nije potrebna. Možda čekanje odgovora te službe nije najbolje iskorištavanje vremena. Možda ga Java više ne reže.

U redu, ta posljednja točka je pomalo sporna, ali to je pitanje koje sam postavio. Ali jednostavno postavljanje ovih pitanja nije pravi posao arhitekta. Ni dizajniranje apsolutno briljantne arhitekture nije dovoljno. Morate biti u stanju pokazati drugima kako doći, korak po korak. Arhitekt mora biti utemeljen u stvarnom svijetu, iskusiti probleme koji proizlaze iz onoga što su projektirali. Za to su potrebni i tehnički i društveni napori.

Matt Heusser : S kojim tehnologijama sada radite?

Bruce Brouwer : Nedavno sam odlučio ispuniti svoj LinkedIn profil, navodeći sve tehnologije koje zapravo koristim. Tijekom tog napora saznao sam da LinkedIn ima ograničenje. Ne kažem to da bih se hvalio, mislim da je to problem. Previše je stvari koje morate znati da biste bili dobar programer u današnjem svijetu. Moramo se bolje snaći u ograničavanju popisa alata kojima se služimo.

Uglavnom koristim Javu i Proljeće. Ono na čemu sam nedavno radio je dizajniranje budućnosti razvoja web aplikacija na GFS-u. GFS je razvijao web aplikacije koristeći Java EE iz vremena prije nego što su postojali okviri poput Struts ili JSF. Sada postoje neke nove ideje koje izazivaju ove mrežne okvire na strani poslužitelja, poput SOFEA-e i responzivnog dizajna. Da, mogli bismo upotrijebiti ove ideje u trenutnu infrastrukturu Struts 2 koju imamo, ali vrijeme je da napravimo pravi odmor između korisničkog sučelja i stražnjeg dijela. Na taj ćemo način biti u boljoj poziciji da odgovorimo na brzinu promjena u sloju web korisničkog sučelja, bez potrebe za drastičnim promjenama u sloju usluge.

"Sada postoje neke nove ideje koje izazivaju mrežne okvire na strani poslužitelja, poput SOFEA-e i responzivnog dizajna. Da, mogli bismo ove ideje ubaciti u trenutnu infrastrukturu Struts 2, ali vrijeme je da napravimo pravi prekid između korisničkog sučelja i stražnje strane kraj."

Za ovo novo web korisničko sučelje imam gotovo potpuno novi paket alata: Angular i Twitter Bootstrap, i naravno jQuery. Ono čime se ja bavim je izgradnja cijelog korisničkog sučelja od statičkih izvora. Nitko se od korisničkog sučelja neće oslanjati na poslužitelj koji generira bilo kakav dinamički sadržaj korisničkog sučelja. Potrebno je raditi na običnom web poslužitelju Apache; nema PHP-a, nema Perla, nema što.

Što se tiče servisnog sloja, GFS ima ogromno Java naslijeđe. I većinom je zapravo prilično dobar. GFS se godinama bavio arhitekturom orijentiranom na usluge, koristeći Spring POJO. Usluge su srž SOFEA-e. JSON je odabir podataka danas, a Spring MVC olakšava izlaganje ovih POJO-a putem JSON-a. Dakle, SOFEA je stvarno dobra prilika za GFS.

Izazovan je dio bila ta vizija da to korisničko korisničko sučelje postane uistinu statično. Da biste napravili dobru web aplikaciju koja je brza, potrebni su neki drugi alati. Koristim Compass za upravljanje CSS-om. Za JavaScript koristim prevodilac Google Closure koji ima sjajnu značajku izvornih karata. Uključite neke druge zahtjeve za uništavanjem predmemorije i olakšavanjem razvoja i odjednom vam je potrebno cjelovito rješenje za izgradnju nečega što na kraju postaje samo hrpa tekstualnih datoteka.

Postoji nekoliko impresivnih alata koji su počeli odgovarati na ove izazove. Bio sam prilično impresioniran Gruntom i Yeomanom, pa čak sam i predstavio GFS da napusti Mavena zbog Yeomana; barem za web korisničko sučelje. Stekao sam dojam da je odbacivanje Mavena možda malo predaleko za alate koji još nisu stari niti godinu dana. Tako sam počeo izrađivati ​​dodatak za Maven kako bih sve to povezao. Postoje dodaci Maven za upravljanje kompasom i zatvaranjem, ali oni ne pružaju cjelovito rješenje koje čak može modificirati HTML razvoj u odnosu na proizvodnju, a također pružaju funkcionalnost ponovnog učitavanja uživo. Ovo je zapravo bilo prekrasno iskustvo pisanja ovog Maven dodatka, koji je naravno napisan na Javi.

Možda uskoro uspijem uvjeriti upravu da mi dopusti da to vratim zajednici otvorenog koda.

Matt Heusser : Koliko ste dugo arhitekt? Na čemu ste radili prije godinu dana?

Bruce Brouwer : Ja sam arhitekt aplikacija već osam godina. Skočio sam od višeg programera do arhitekta kad sam prešao na GFS.

Moj prethodni veliki projekt, na kojem sam radio prije godinu dana, bio je prelazak na Google Apps. Ovo je i za mene bilo pravo iskustvo učenja. Imao sam sjajnu ideju o sinkronizaciji starog kalendara s Google kalendarom tijekom prijelaza. Koristio sam Google API-je iz Jave zajedno s Spring Integrationom kako bih sve to ostvario. Barem neko vrijeme. Nakon nekoliko ozbiljnih kvarova, morao sam priznati da se nije isplatilo riskirati. Biti i arhitekt i programer na tom projektu pomoglo mi je da stvarni svijet držim u perspektivi.

"Morali smo u pijesku povući crtu za ono što jest i što nije prikladno koristiti Google za integraciju s našim postojećim sustavima. Može biti teško kad budete prisiljeni ublažiti dio tog entuzijazma."

Google donosi čitav novi svijet mogućnosti za GFS. Njegov utjecaj tek počinjemo osjećati u načinu na koji dizajniramo svoje sustave. Već sam imao puno razgovora s ljudima koji žele koristiti Google jer je to sjajna nova igračka. Morali smo povući crtu u pijesku za ono što jest i što nije prikladno koristiti Google za integraciju s našim postojećim sustavima. Može biti teško kad ste prisiljeni ublažiti dio tog entuzijazma.

Matt Heusser : Kao arhitekt dosegli ste razinu koju postiže samo mali postotak programera. Imate li savjet za programere koji započinju u svojoj karijeri?

Bruce Brouwer : Volim kad novi programeri dođu na ideju da ospore trenutni status quo. Obično žele koristiti neki novi alat kako bi olakšali zadatak. Kad im se to dogodi, mogu im pomoći da sagledaju širu sliku. Često to znači ukazivanje na probleme s unošenjem tog alata. Razgovaranje kroz probleme prisiljava novog programera da otvori oči za veća pitanja.

Stoga je moj savjet novom programeru da nastavi i izazove neke ideje. Pronađite starijeg programera ili arhitekta kojeg možete koristiti kao mentora i izgovoriti svoju ideju. Vjerojatno se ideja neće dogoditi, ali naučit ćete puno saznajući zašto niste u pravu, a ne samo da griješite. Ali sjetite se također da stariji programeri i arhitekti mogu patiti od kratkovidnosti i možda ćete jednostavno pronaći ideju koju vrijedi slijediti.

Matt Heusser : Tko je vaš kupac? (Ili, posuditi redak od Bobsa u "Uredskom prostoru": Što biste rekli da radite ovdje?)

Bruce Brouwer : Zapravo ne podržavam izravno nijednog kupca u smislu da bi to bilo izravno poslovno usmjereno. Zapravo sam smješten unutar infrastrukturne strane IS-a, zajedno s DBA-ima i administratorima poslužitelja. Ostatak IS-a doista ima fokus da služi određenom području poslovanja. Možda bi se činilo čudnim smjestiti programera Jave u infrastrukturu, ali to mi omogućuje da se usredotočim na probleme koji imaju veći arhitektonski fokus nego što bi to mogli imati drugi. Dok drugi pokušavaju proći kroz definiranje poslovnih procesa, ja se više moram usredotočiti na tehnologiju koja se koristi za rješavanje svih problema na višekratnu upotrebu.

Ljudi me često traže da pomognem drugim projektima; ponekad na dulje vremensko razdoblje. To mi pomaže da ostanem utemeljen u stvarnom svijetu. Također mi pomaže širiti nove ideje kroz ostatak razvojnih timova. Otkrio sam da kada je od mene zatraženo da igram ulogu arhitekta projekta, moj je utjecaj bio ograničen na mlađe programere; zapravo mi je bilo korisnije sudjelovati u drugim projektima koji već imaju arhitekta, jer svoje ideje mogu progurati s onima koji su utjecajniji u svom dijelu organizacije.

Matt Heusser : Koliko dugo programirate na Javi? Kako ste vidjeli da se jezik i samo programiranje Java mijenjaju tijekom tih godina?

Bruce Brouwer : Javu zapravo nisam ozbiljno shvaćao do Jave 1.3. Dakle, to bi bilo oko 13 godina. Ali čak ni tada Java zapravo nije postala užitak za razvoj dok se 1.5 nije pojavio s generičkim lijekovima. Postoji toliko mnogo dobrih upotreba generika, a čini se da ih većina ljudi ne koristi izvan okvira Java kolekcija.

Još kad sam počeo s Javom, gotovo smo sve sami napisali. Vremenom sam vidio kako je ostatak svijeta prihvatio Javu, posebno u zajednici otvorenog koda. Ta eksplozija otvorenog koda najvažnija je promjena kroz koju sam prošao tijekom svoje karijere u programiranju Java. To je nešto čemu se donedavno doista nije podudarao nijedan drugi jezik.

Matt Heusser : Razgovarajte sa mnom o korištenju JRubyja na GFS-u. Kakav je vaš stav o JVM jezicima; bismo li sada svi trebali postati programeri Clojure?

Bruce Brouwer : JRuby je zaista bio sredstvo za postizanje cilja u Gordonsu. Kompas je stvarno premijerna implementacija Sass-a, a slučajno je napisan na Rubyju. Također sam koristio Rhina i Groovyja na JVM-u. Vidio sam koliko su ovi drugi jezici moćni i sposobni, ali isto tako i Java.

Drugi su jezici poput Scale, a spomenuli ste Clojure, u posljednje vrijeme stekli popularnost. Iako možete napraviti istu stvar u Scali s nečim poput polovice Java koda, vjerujem da čitljivost može patiti brže nego što to čini na Javi. Prije nekog vremena vidio sam brojne dobavljače s naljepnicama na prijenosnom računalu na kojima je pisalo "Upisivanje nije usko grlo." Potpuno se slažem. Razmisliti o problemu i pojasniti ga sljedećem čovjeku važnije je od pronalaženja pametnih načina za smanjenje broja redaka koda koji pišete. Nemojte me krivo shvatiti, održavanje manje koda je bolje od više koda, ali mora biti jasno što se događa.