Programmēšana

Pilna Java dzīve: ko programmatūras arhitekts patiesībā dara visu dienu?

Programmatūras arhitektiem ir viegli, vai arī tik daudzi kodētāji un inženieri uzskata. Uzziniet, kā šajā dzīvē izskatās arhitekta ikdienas darba dzīve Pilna Java dzīve intervija. Java programmēšanas veterāns Brūss Brouvers apspriež savu pieeju mantoto Java tīmekļa lietojumprogrammu jaunināšanai uz pakalpojumu orientētas priekšējās daļas arhitektūrai, viņa strauji attīstīto tīmekļa lietotāja saskarnes rīkkopu un to, kāpēc viņš parasti dod priekšroku darbam ar Java ierobežojumiem, izvēloties mazāk stingru JVM valodu.

Tāpat kā daudzi programmatūras izstrādātāji, es vienmēr esmu skeptiski noskaņots pret arhitektiem. Pārāk bieži viņi, šķiet, izvirza prasības par to, kā tiks veikts kodēšanas darbs, nedzīvojot ar sekām. Es esmu puisis, kurš savulaik uzrakstīja rakstu ar nosaukumu "Kāpēc es neesmu arhitekts", un man ir zināms, ka viņš mēdz domāt: "Viņa mīļākais IDE ir MS Outlook.

Tad es iepazinos ar Bruce Brouwer, lietojumprogrammu arhitektu Gordon Food Service (GFS), ģimenes īpašumā esošu pārtikas izplatītāju ar birojiem Mičiganā. Kad es satiku Brūsu, viņš atradās dziļi sava datora ekrānā un skatījās faktisko kodu. Viņa uzdevums bija integrēt GFS kompāniju Ruby balstītu kompasatoru lietojumprogrammu būvē, izmantojot JRuby, un viņa pieeja darbam šķita tikai abstrakta. Es biju ieintriģēta.

Pēc viņa teiktā, Brūsa darbs GFS ir gan noteikt nākotnes tīmekļa lietojumprogrammu redzējumu, gan demonstrēt savu redzējumu ar koncepcijas pierādīšanas lietojumprogrammām. Viņš parasti strādā ar izstrādes komandām dažos pirmajos ieviešanas gadījumos. Mūsdienās, kad mēs tikāmies, Brūss strādāja ar to, kā GFS pārcelt tradicionālās pieprasījumu / atbildes tīmekļa lietojumprogrammas uz uz pakalpojumu orientēta priekšgala arhitektūra (SOFEA), kur visa prezentācijas loģika tiek apstrādāta pārlūkprogrammā, nevis serverī.

Brūss dalījās ar dažām savām idejām, kā virzīties ārpus klasiskām uz pakalpojumu orientētām arhitektūrām (SOA) vairāk uz ziņām balstītās paradigmās. Šīm idejām ir jāstrādā uz papīra, taču Brūsam ir jāpērk tehniskās komandas, lai tās darbotos. Kā arhitekts viņš sniedz ieviešanas vadlīnijas komandām, tehnoloģijām un pat mantotajām sistēmām. Viņš ir aizraujoša perspektīva, un es domāju, ka ir vērts ar to dalīties.

Mets Heussers: Runājiet ar mani par savu programmētāja un arhitekta karjeru. Kā jūsu loma laika gaitā ir mainījusies? Kā jūs šodien pietuvojāties jaunākā programmētāja vai karjeras vidus līmeņa vai arhitekta lomai?

Brūss Bruvers: Pēc koledžas es pārcēlos uz savu pirmo īsto darbu. Gandrīz no paša sākuma es virzījos uz robežām. Notika šis garlaicīgais šīs lietojumprogrammas datu piekļuves slāņa atjaunināšanas process. Visi jaunie darbinieki tika pakļauti sāpēm, strādājot šajā procesā. Pēc pirmās reizes es nolēmu to automatizēt. Vadība bija pārsteigta, tāpēc viņi lūdza mani palaist to visām datu bāzes tabulām. Pagāja apmēram nedēļa, lai iztīrītu jucekli no manas automatizētās darbības, kas izrādījās salauzts process.

Turpinot karjeru, es atradu daudz vairāk iespēju, lai padarītu lietas vieglāk attīstāmas. Ar mani ātri kļuva saistīta frāze: "Viena koda rindiņa". Es turpināju virzīt savu darbu, lai izstrādātājiem būtu vienkāršāk. Es nebiju patiesi apmierināts ar savu darbu, kamēr jūs nevarējāt izdarīt kaut ko tādu, kas iepriekš bija sarežģīts, bet tagad tas bija tikpat vienkāršs kā viena koda rindiņa.

Bet tik tālu var aiziet, tikai izgatavojot labākus rīkus. Man bija jāsāk domāt plašākā mērogā. Kad sākat spēlēt šajā lielākajā pasaulē, jums atkal ir jāpārvar robežas. Varbūt SQL datu bāze nav nepieciešama. Varbūt gaidīt atbildi no šī dienesta nav labākais laika izlietojums. Varbūt Java to vairs negriež.

Labi, ka pēdējais punkts ir mazliet strīdīgs, bet tas ir jautājums, kuru es uzdevu. Bet vienkārši šo jautājumu uzdošana nav īsts arhitekta darbs. Pat ar absolūti izcilas arhitektūras dizainu nepietiek. Soli pa solim jāspēj parādīt citiem, kā tur nokļūt. Arhitektam jābūt pamatotam reālajā pasaulē, piedzīvojot problēmas, kas rodas no tā, ko viņi ir izstrādājuši. Tas prasa gan tehniskas, gan sociālas pūles.

Mets Heussers: Ar kādām tehnoloģijām jūs tagad strādājat?

Brūss Bruvers: Ne pārāk sen es nolēmu aizpildīt savu LinkedIn profilu, uzskaitot visas tehnoloģijas, kuras es faktiski izmantoju. Šo centienu laikā es uzzināju, ka LinkedIn ir ierobežojums. Es to nesaku, lai lielītos, manuprāt, tā ir problēma. Lai būtu labs izstrādātājs mūsdienu pasaulē, jums vienkārši jāzina pārāk daudz lietu. Mums labāk jāierobežo to rīku saraksts, kurus mēs izmantojam, lai veiktu savu darbu.

Lielākoties es izmantoju Java un Spring. Pie kā es nesen strādāju, ir tīmekļa lietojumprogrammu izstrādes nākotnes plānošana GFS. GFS ir izstrādājis tīmekļa lietojumprogrammas, izmantojot Java EE, jau pirms tam, kad bija tādas struktūras kā Struts vai JSF. Tagad ir dažas jaunas idejas, kas izaicina šīs servera puses tīmekļa struktūras, piemēram, SOFEA un atsaucīgs dizains. Jā, mēs varētu šīs idejas ieviest pašreizējā Struts 2 infrastruktūrā, kas mums ir, taču ir pienācis laiks veikt reālu pārtraukumu starp lietotāja saskarni un aizmuguri. Tādā veidā mēs varēsim labāk reaģēt uz tīmekļa lietotāja saskarnes slāņa izmaiņu tempu, neveicot tik krasas izmaiņas pakalpojuma slānī.

"Tagad ir dažas jaunas idejas, kas izaicina servera puses tīmekļa ietvarus, piemēram, SOFEA un atsaucīgs dizains. Jā, mēs varētu ielikt šīs idejas pašreizējā Struts 2 infrastruktūrā, taču ir pienācis laiks veikt reālu pārtraukumu starp lietotāja saskarni un aizmuguri. beigas. "

Šim jaunajam tīmekļa lietotāja interfeisam man ir gandrīz pilnīgi jauns rīku komplekts: Angular un Twitter Bootstrap, un, protams, jQuery. Es cenšos izveidot visu lietotāja interfeisu no statiskiem resursiem. Neviens no lietotāja saskarnes nav paļāvies uz to, ka serveris ģenerē dinamisku lietotāja saskarnes saturu. Tam jāstrādā vienkāršā Apache tīmekļa serverī; ne PHP, ne Perls, nekas.

Kas attiecas uz pakalpojumu slāni, GFS ir milzīgs Java mantojums. Un lielākoties tas patiesībā ir diezgan labs. GFS gadiem ilgi ir veidojis uz pakalpojumu orientētu arhitektūru, izmantojot Spring POJO. Pakalpojumi ir SOFEA pamatā. JSON ir izvēlētais datu transports šajās dienās, un pavasara MVC ļauj viegli atklāt šos POJO, izmantojot JSON. Tātad SOFEA faktiski ir ļoti piemērots GFS.

Tomēr izaicinošā daļa ir bijusi šī vīzija, kā padarīt šo tīmekļa lietotāja saskarni patiesi statisku. Lai izveidotu labu un ātru tīmekļa lietotni, ir nepieciešami citi rīki. CSS pārvaldībai izmantoju Compass. JavaScript es izmantoju Google Closure kompilatoru, kuram ir lieliska avotu karšu funkcija. Ievietojiet dažas citas kešatmiņas atlaišanas prasības un padarot to viegli attīstāmu, un pēkšņi jums ir nepieciešams pilnīgs veidošanas risinājums kaut kam, kas galu galā kļūst tikai par virkni teksta failu.

Ir daži iespaidīgi rīki, kas sākuši atbildēt uz šīm problēmām. Mani ir ļoti iespaidojuši Grunt un Yeoman, un es pat veicu laukumu GFS, lai pamestu Maven Yeoman; vismaz tīmekļa lietotāja saskarnei. Man radās iespaids, ka Mavenas novākšana var būt mazliet par tālu instrumentiem, kas vēl nav pat gadu veci. Tāpēc es sāku izveidot Maven spraudni, lai to visu apvienotu. Ir kompānijas Compass un Closure apstrādei paredzēti Maven spraudņi, taču tie nenodrošina pilnīgu risinājumu, kas pat var modificēt HTML izstrādi salīdzinājumā ar ražošanu, kā arī nodrošina tiešraides pārlādēšanas funkcionalitāti. Šī patiesībā ir bijusi brīnišķīga pieredze, rakstot šo Maven spraudni, kas, protams, ir rakstīts Java valodā.

Varbūt drīz es varēšu pārliecināt vadību, lai ļautu man to atdot atklātā pirmkoda kopienai.

Mets Heussers: Cik ilgi tu esi arhitekts? Ar ko jūs strādājāt pirms gada?

Brūss Bruvers: Esmu bijis lietojumprogrammu arhitekts jau astoņus gadus. Es pārcēlos no vecākā programmētāja uz arhitektu, kad pārcēlos uz GFS.

Mans iepriekšējais lielais projekts, pie kura es strādāju pirms gada, bija pāreja uz Google Apps. Šī bija īsta mācīšanās pieredze arī man. Pārejas laikā man bija šī lieliskā ideja sinhronizēt mantoto kalendāru ar Google kalendāru. Lai tas viss notiktu, es izmantoju Google API no Java kopā ar Spring Integration. Vismaz kādu laiku. Pēc dažām nopietnām kļūmēm man nācās atzīt, ka tas nav vērts riskēt. Būšana gan kā arhitekts, gan projekta attīstītājs man palīdzēja saglabāt reālās pasaules perspektīvu.

"Mums nācās novilkt svītru tam, kas ir un nav pareizi izmantot Google, integrējoties ar mūsu esošajām sistēmām. Tas var būt grūti, ja jūs esat spiests nomierināt daļu šī entuziasma."

Google piedāvā GFS pilnīgi jaunu iespēju pasauli. Mēs tikai sākam izjust tā ietekmi, veidojot savas sistēmas. Man jau ir bijis daudz sarunu ar cilvēkiem, kuri vēlas izmantot Google, jo tā ir jaunā spīdīgā rotaļlieta. Mums nācās novilkt līniju smiltīs tam, kas ir un nav piemērots Google izmantošanai, integrējot mūsu esošajās sistēmās. Tas var būt grūti, ja jūs esat spiests nomierināt kādu no šī entuziasma.

Mets Heussers: Kā arhitekts esat sasniedzis līmeni, kuru sasniedz tikai neliela daļa programmētāju. Vai jums ir padoms programmētājiem, kuri sāk savu karjeru?

Brūss Bruvers: Man patīk, kad jaunie programmētāji izdomā apstrīdēt pašreizējo status quo. Parasti viņi vēlas izmantot kādu jaunu rīku, lai atvieglotu uzdevumu. Tieši tad, kad tas notiek, es varu viņiem palīdzēt paskatīties uz kopainu. Bieži vien tas nozīmē norādīt uz problēmām, kas saistītas ar šī rīka ieviešanu. Dažreiz problēmu pārrunāšana liek jaunajam programmētājam atvērt acis lielākiem jautājumiem.

Tāpēc mans padoms jaunajam programmētājam ir turpināt darbu un apstrīdēt dažas idejas. Atrodiet vecāko programmētāju vai arhitektu, kuru varat izmantot kā mentoru un izteikt savu ideju. Visticamāk, ka ideja netiks izlaista, bet jūs uzzināsiet daudz, uzzinot kāpēc jūs kļūdāties, ne tikai to, ka kļūdāties. Bet atcerieties arī to, ka vecākie programmētāji un arhitekti var cieš no tuvredzības, un jūs, iespējams, atradīsit ideju, kuru ir vērts īstenot.

Mets Heussers: Kas ir jūsu klients? (Vai arī, lai aizņemtos rindu no "Bobs" sadaļā "Biroja telpa": ko jūs teiktu, ka jūs šeit darāt?)

Brūss Bruvers: Es īsti neatbalstu nevienu klientu tādā nozīmē, ka tas būtu tieši orientēts uz uzņēmējdarbību. Es faktiski esmu ievietots IS infrastruktūras pusē kopā ar DBA un servera administratoriem. Pārējā IS patiešām ir vērsta uz konkrētas uzņēmējdarbības jomas apkalpošanu. Varētu šķist dīvaini izvietot Java izstrādātāju infrastruktūrā, taču tas ļauj man koncentrēties uz jautājumiem, kuriem arhitektūras uzmanība ir lielāka nekā citiem. Kamēr citi mēģina strādāt, definējot biznesa procesus, es vairāk koncentrējos uz tehnoloģijām, kuras tiek izmantotas, lai atkārtoti izmantotu ikviena cilvēka problēmas.

Cilvēki bieži lūdz mani palīdzēt citiem projektiem; dažreiz uz ilgāku laiku. Tas palīdz man palikt zemē reālajā pasaulē. Tas arī palīdz man izplatīt jaunas idejas pārējās attīstības komandās. Es atklāju, ka tad, kad man lūdza spēlēt projekta arhitekta lomu, mana ietekme bija ierobežota ar jaunākiem izstrādātājiem; man faktiski ir bijis noderīgāk piedalīties citos projektos, kuriem jau ir arhitekts, jo es varu virzīt savas idejas ar tiem, kuri ir ietekmīgāki savā organizācijas daļā.

Mets Heussers: Cik ilgi jūs esat programmējis Java? Kā jūs esat redzējis, kā šajos gados mainījās pati valoda un Java programmēšana?

Brūss Bruvers: Es īsti neuztvēru Java līdz Java 1.3. Tātad, tas būtu apmēram 13 gadi. Bet pat tad Java īsti nekļuva par prieku attīstīties, līdz 1.5 parādījās vispārīgi medikamenti. Ir tik daudz labu vispārīgu zāļu lietojumu, un šķiet, ka lielākā daļa cilvēku tos neizmanto ārpus Java kolekciju ietvara.

Toreiz, kad es sāku ar Java, mēs gandrīz visu rakstījām paši. Laika gaitā esmu redzējis, kā pārējā pasaule ir pieņēmusi Java, it īpaši atvērtā koda sabiedrībā. Šī atvērtā koda eksplozija ir vissvarīgākās izmaiņas, ko esmu piedzīvojis savas Java programmēšanas karjeras laikā. Tas ir kaut kas, kas patiešām vēl nesen nav ticis saskaņots nevienā citā valodā.

Mets Heussers: Runājiet ar mani par JRuby lietošanu GFS. Kāds ir jūsu viedoklis par JVM valodām; vai mums visiem tagad jākļūst par Clojure programmētājiem?

Brūss Bruvers: JRuby patiešām bija līdzeklis, lai sasniegtu Gordons. Kompass patiešām ir pirmizrāde, ko tur īsteno Sass, un tas tiek rakstīts rubīnā. Esmu arī izmantojis Rhino un Groovy, kā arī JVM. Esmu redzējis, cik spēcīgas un spējīgas ir šīs citas valodas, bet arī Java.

Pēdējā laikā popularitāti ir ieguvušas citas valodas, piemēram, Scala, un jūs pieminējāt Clojure. Lai gan jūs varat darīt to pašu Scala ar kaut ko līdzīgu pusei Java koda, es uzskatu, ka lasāmība var ciest ātrāk nekā Java. Vēl kādu laiku es redzēju vairākus darbuzņēmējus, kuru klēpjdatorā bija uzlīmes ar uzrakstu "Rakstīšana nav šaurā vieta". Es pilnīgi piekrītu. Pārdomāt problēmu un padarīt to saprotamu nākamajam puisim ir svarīgāk nekā atrast gudrus veidus, kā samazināt uzrakstīto koda rindu skaitu. Nepārprotiet, ka mazāk koda uzturēšana ir labāka nekā vairāk koda, taču ir jābūt skaidram, kas notiek.

$config[zx-auto] not found$config[zx-overlay] not found