pg.gimran.org

Дизайн һәм тикшеренү

Гыйнвар 2003 · Барлык эсселар

Пол Грэмның «Дизайн һәм тикшеренү» эссесы тәрҗемәсе. Төп нөсхә: https://paulgraham.com/desres.html. Машина тәрҗемәсе (Gemini).

Translation of Paul Graham's essay 'Design and Research'. Original: https://paulgraham.com/desres.html. Machine translation (Gemini).

(Бу мәкалә NEPLS-ның 2002 елгы көзге очрашуындагы төп нотыкка нигезләнгән.)

Бу илгә килүчеләр америкалыларның сөйләшүне «сез нәрсә белән шөгыльләнәсез?» дип башларга яратуларына еш кына гаҗәпләнә. Бу сорау миңа беркайчан да ошамады. Минем аңа беркайчан да кыска һәм төгәл җавабым булмады. Ләкин, ниһаять, бу проблеманы хәл иттем кебек. Хәзер, кемдер миңа ни белән шөгыльләнүем турында сорау бирсә, мин аның күзенә туры карыйм һәм: «Мин Lisp-ның яңа диалектын проектлыйм»,— дим. Үзләреннән нәрсә белән шөгыльләнүләре турында сорауны яратмаган һәркемгә бу җавапны киңәш итәм. Әңгәмә шунда ук башка темаларга күчәчәк.

Мин үземне программалаштыру телләре буенча фәнни тикшеренүләр алып бара дип санамыйм. Мин бары тик бер телне проектлыйм — кемдер бинаны, урындыкны яки яңа шрифтны проектлаган кебек. Мин ниндидер яңа нәрсә ачарга тырышмыйм. Мин бары тик программа язу өчен уңайлы булган тел ясарга телим. Ниндидер мәгънәдә, бу якын килү тормышны шактый җиңеләйтә.

Дизайн белән тикшеренү арасындагы аерма яңалык һәм яхшылык төшенчәләренең чагыштырмасында кебек. Дизайнның яңа булуы мәҗбүри түгел, ләкин ул яхшы булырга тиеш. Тикшеренүнең яхшы булуы мәҗбүри түгел, ләкин ул яңа булырга тиеш. Минемчә, бу ике юл иң түбәдә берләшә: иң яхшы дизайн яңа идеяләр кулланып үзенең элгәрләрен узып китә, ә иң яхшы тикшеренү яңа гына түгел, ә чыннан да хәл итәргә кыйммәтле булган проблемаларны чишә. Шуңа күрә, ахыр чиктә, без бер үк максатка омтылабыз, бары тик аңа төрле яклардан киләбез.

Бүген мин сөйләячәк нәрсә — сезнең максатыгызның арткы яктан ничек күренүе турында. Сез программалаштыру телләренә тикшеренү темасы итеп түгел, ә дизайн мәсьәләсе итеп караганда нәрсәне башкача эшлисез?

Иң зур аерма — сез игътибарыгызны кулланучыга күбрәк юнәлтәсез. Дизайн «бу кем өчен һәм аларга моннан нәрсә кирәк?» дигән сораудан башлана. Мәсәлән, яхшы архитектор эшен кулланучыларга тагачак проект төзүдән түгел, ә булачак кулланучыларны өйрәнүдән һәм аларга нәрсә кирәклеген ачыклаудан башлый.

Игътибар итегез, мин «алар нәрсә тели» түгел, ә «аларга нәрсә кирәк» дидем. Мин дизайнер булып эшләү клиент нәрсә кушса, шуны әзерләүче тиз туклану пешекчесе булып эшләүне аңлата дигән тәэсир калдырырга теләмим. Сәнгатьнең төрле тармакларында бу төрлечә, ләкин иң яхшы эшне бары тик клиентлар әйткәнне генә төгәл үтәүчеләр башкара торган бер генә өлкә дә юк дип уйлыйм.

Клиент һәрвакыт хаклы, әмма яхшы дизайнның үлчәме — аның кулланучы өчен никадәр яхшы эшләвендә дигән мәгънәдә генә. Әгәр сез һәркемне ялкыткан роман язсагыз яки утыруы котчкыч уңайсыз булган урындык ясасагыз, димәк сез эшегезне начар башкаргансыз, һәм вәссәлам. Роман яки урындык иң алдынгы теоретик принциплар нигезендә проектланган дип аклану файдасыз.

Шулай да, кулланучы өчен эшләгән нәрсәне булдыру кулланучы әйткән нәрсәне генә ясауны аңлатмый. Кулланучылар нинди мөмкинлекләр барлыгын белми һәм үзләренең нәрсә теләүләре турында еш кына ялгыша.

Бу парадокска җавап, минемчә, шунда: сез кулланучы өчен проектларга тиешсез, ләкин аның теләгән сүзләрен генә түгел, ә аңа чыннан да нәрсә кирәклеген проектларга тиешсез. Бу күп яктан табиб булуга охшаган. Сез пациентның симптомнарын гына дәвалый алмыйсыз. Пациент үз симптомнарын әйткәндә, сез аңа нәрсә булганын төгәл ачыкларга һәм нәкъ менә шуны дәваларга тиешсез.

Кулланучыга мондый игътибар — яхшы дизайн практикасының күп өлешен чыгарып була торган һәм дизайн мәсьәләләренең күбесе тупланган үзенә күрә бер аксиома.

Әгәр яхшы дизайн кулланучыга кирәкле нәрсәне эшләргә тиеш икән, кем соң ул кулланучы? Дизайн кулланучылар өчен булырга тиеш дигәндә, мин яхшы дизайн иң түбән уртак сыйфатка омтылырга тиеш дип әйтмим. Сез үзегез теләгән теләсә кайсы кулланучылар төркемен сайлый аласыз. Әгәр сез корал проектлыйсыз икән, мәсәлән, аны башлап өйрәнүчеләрдән алып экспертларга кадәр теләсә кем өчен ясый аласыз, һәм бер төркем өчен яхшы дизайн булган нәрсә икенчесе өчен начар булырга мөмкин. Төп фикер шул: сез кулланучыларның ниндидер бер төркемен сайларга тиешсез. Билгеле бер кулланучыны күздә тотмыйча торып, яхшы яки начар дизайн турында хәтта сөйләшеп тә булмый дип саныйм.

Әгәр күздә тотылган кулланучылар арасында дизайнер үзе дә булса, сез яхшы дизайнга ирешү ихтималы иң югары. Үзегезне үз эченә алмаган төркем өчен нәрсәдер проектлаганда, ул гадәттә сез үзегездән азрак белемле дип санаган кешеләр өчен килеп чыга, ә күбрәк белемлеләр өчен түгел.

Бу — проблема, чөнки кулланучыга югарыдан аска карау, хәтта яхшы ният белән булса да, дизайнерны котылгысыз рәвештә боза. АКШтагы күпфатирлы торак проектларының бик азы гына аларда яшәргә өметләнгән архитекторлар тарафыннан проектлангандыр дип уйлыйм. Программалаштыру телләрендә дә шул ук нәрсәне күрергә була. C, Lisp һәм Smalltalk үзләренең авторлары куллану өчен булдырылган. Cobol, Ada һәм Java башка кешеләр куллансын өчен ясалган.

Әгәр сез үзегезне ахмаклар өчен нәрсәдер проектлый дип уйлыйсыз икән, зур ихтимал белән сез хәтта ахмаклар өчен дә яхшы булмаган нәрсә ясыйсыз.

Хәтта сез иң алдынгы кулланучылар өчен нәрсәдер проектласагыз да, сез барыбер аны кешеләр өчен проектлыйсыз. Тикшеренүдә исә барысы да башкача. Математикада сез абстракцияләрне кешеләр аңлавы өчен җиңел булганга күрә түгел, ә исбатлауны кыскарак иткәнгә күрә сайлыйсыз. Гомумән фәннәр өчен бу дөрес дип уйлыйм. Фәнни идеяләр эргономик булырга тиеш түгел.

Ә сәнгатьтә эш бөтенләй башкача. Дизайн — тулысынча кешеләр турында. Адәм баласының тәне — сәер нәрсә, ләкин сез урындык проектлаганда, сез аны нәкъ менә шул тән өчен проектлыйсыз, һәм моннан качып булмый. Барлык сәнгать төрләре дә кешеләрнең кызыксынуларына һәм чикләүләренә яраклашырга тиеш. Мәсәлән, рәсем сәнгатендә, башка шартлар тигез булганда, кешеләр төшерелгән картина кешеләрсез картинага караганда кызыклырак булачак. Яңарыш дәверенең бөек картиналарының барысында да кешеләр тулы булуы — тарихның очраклылыгы гына түгел. Әгәр алай булмаса, нәкыш үзенә хас булган абруйга ия булмас иде.

Ошыймы бу сезгә, юкмы, программалаштыру телләре дә кешеләр өчен, һәм кеше мие дә кеше тәне кебек үк катлаулы һәм үзенчәлекле дип уйлыйм. Кайбер идеяләрне кешеләргә үзләштерү җиңел, ә кайберләрен юк. Мәсәлән, безнең вак-төякне истә тоту сәләтебез бик чикле кебек. Нәкъ менә шушы факт программалаштыру телләрен яхшы идеягә әйләндерә; әгәр без барлык детальләр белән эшли алсак, без машина телендә генә язар идек.

Шуны да истә тотыгыз: телләр иң элек әзер программалар өчен форма түгел, ә программаларны ясарга кирәк булган мохит. Сәнгать өлкәсендәге теләсә кем сезгә бу ике очрак өчен төрле чаралар кирәк булырга мөмкин икәнен әйтер иде. Мәрмәр, мәсәлән, әзер идеяләр өчен яхшы, ныклы материал, ләкин яңа идеяләрне үстерү өчен ул чарасыз дәрәҗәдә сыгылмасыз.

Программа, математик исбатлау кебек үк, үткәндә һәр ягына ялган башлангычлар тармакланган агачның киселгән варианты булып тора. Шуңа күрә телнең сыйфаты анда әзер программаның никадәр пөхтә күренүендә генә түгел, ә әзер программага илтүче юлның никадәр чиста булуында. Сезгә нәфис әзер программалар бирүче дизайн сайлавы сезгә нәфис проектлау процессын бирмәскә мөмкин. Мәсәлән, мин эчкә урнаштырылган кире апострофлар белән тулы берничә макрос билгеләүче макрос яздым; хәзер алар бәләкәй энҗе бөртекләре кебек күренә, ләкин аларны язу сәгатьләр буе иң ямьсез сынап карау һәм ялгышулар таләп итте, һәм, дөресен генә әйткәндә, аларның дөреслегенә мин әле дә тулысынча ышанмыйм.

Без еш кына телнең сынавы анда әзер программаларның никадәр яхшы күренүендә дип фикер йөртәбез. Бер үк программаның ике телдә язылганын һәм бер вариантының күпкә кыскарак булуын күргәч, бу бик ышандыргыч тоела. Проблеманы сәнгать ягыннан караганда, сез мондый сынауга азрак таянырсыз. Сезгә мәрмәр кебек программалаштыру телендә тукталырга кирәк түгел.

Мәсәлән, программа тәэминатын ясаганда интерактив югары дәрәҗәле мохит булуы — Lisp-та «read-eval-print loop» дип аталган нәрсә — зур өстенлек булып тора. Һәм ул булганда, бу телнең дизайнына реаль йогынты ясый. Мәсәлән, үзгәрешлеләрне кулланыр алдыннан игълан итәргә кирәк булган тел өчен бу яхшы эшләмәс иде. Югары дәрәҗәле мохиткә чыгымнарны язганда гына да, сез x-ка ниндидер кыйммәт бирергә һәм аннары x белән төрле гамәлләр кылырга телисез. Сез башта x-ның тибын игълан итәргә теләмисез. Сез бу фикерләрнең теләсә кайсы белән бәхәсләшә аласыз, ләкин тел уңайлы булсын өчен аның югары дәрәҗәле интерактив мохите булырга тиеш икән һәм мәҗбүри тип игъланнары бу мохит белән сыешмый икән, димәк, тип игъланнарын мәҗбүри иткән бер генә тел дә программалау өчен уңайлы була алмый.

Гәмәлдә, яхшы дизайнга ирешү өчен сез кулланучыларыгызга якын булырга һәм якын булып калырга тиешсез. Сез идеяләрегезне реаль кулланучыларда даими рәвештә тикшерергә тиеш, бигрәк тә башында. Джейн Остин романнарының шулкадәр яхшы булуының бер сәбәбе — ул аларны үз гаиләсенә кычкырып укыган. Шуңа күрә ул беркайчан да үз-үзен канәгатьләндерүче сәнгатьчә табигать тасвирламаларына яки тәкәббер фәлсәфәгә батмый. (Фәлсәфә анда бар, ләкин ул ярлык кебек ябыштырылмаган, ә хикәягә үрелгән.) Әгәр сез гадәти «әдәби» романны ачсагыз һәм аны дусларыгызга үзегез язган нәрсә буларак кычкырып укыганыгызны күз алдына китерсәгез, сез мондый нәрсәнең укучыга никадәр зур мәҗбүри йөк булуын бик яхшы аңларсыз.

Программа тәэминаты дөньясында бу идея «Начаррак булган яхшырак» (Worse is Better) дип билгеле. Чынлыкта, бу төшенчәдә берничә идея кушылган, шуңа күрә кешеләр начарракның чыннан да яхшырак булу-булмавы турында әле дә бәхәсләшә. Ләкин бу катнашмадагы төп идеяләрнең берсе — яңа нәрсә ясаганда, сез мөмкин кадәр тизрәк прототипны кулланучыларга чыгарырга тиешсез.

Икенче юлны «Hail Mary» стратегиясе дип атарга була. Прототипны тиз арада чыгарып һәм аны әкренләп камилләштерү урынына, сез бер генә озын пас белән тулы, әзер продукт ясарга тырышасыз. Мин белгән кадәр, бу — һәлакәт рецепты. Интернет күпере чорында сансыз стартаплар шушы юл белән үзләрен юк иттеләр. Моның уңышлы эшләгән бер генә очрагын да ишеткәнем булмады.

Программа тәэминаты дөньясыннан читтә булган кешеләр белмәскә мөмкин: «Начаррак булган яхшырак» фикере сәнгатьнең барлык өлкәләрендә дә бар. Мәсәлән, рәсем ясауда бу идея Яңарыш чорында ачылган. Хәзер рәсем ясау буенча һәрбер укытучы диярлек төгәл рәсем алуның дөрес юлы объектның контуры буйлап әкрен генә бару түгел икәнен әйтер, чөнки хаталар җыелачак һәм ахырда сез сызыкларның берләшмәвен күрерсез. Киресенчә, сез якынча дөрес урында берничә тиз сызык ясарга тиешсез, аннары бу беренче нобайны әкренләп камилләштерергә тиешсез.

Күпчелек өлкәләрдә прототип гадәттә төрле материаллардан ясалган. Металлда киселәчәк шрифтлар башта кәгазьдә пумала белән эшләнгән. Бронзага коелган сыннар балауздан ясалган. Гобеленнарга чигеләчәк бизәкләр кәгазьдә кара белән ясалган. Таштан төзеләчәк биналар кечерәк масштабта агачтан сыналган.

Унбишенче гасырда майлы буяу популярлашкач, аны шулкадәр дулкынландыргыч иткән нәрсә — әзер эшне нәкъ менә прототипның үзеннән ясау мөмкинлеге иде. Теләсәгез, сез башлангыч рәсем ясый ала идегез, ләкин сез аңа бәйләнгән түгел идегез; картинаны тәмамлаган саен сез барлык детальләрне эшкәртә һәм хәтта зур үзгәрешләр кертә ала идегез.

Сез моны программа тәэминатында да эшли аласыз. Прототип гади генә модель булырга тиеш түгел; сез аны әзер продукт дәрәҗәсенә җиткерә аласыз. Мөмкин булганда, сез һәрвакыт шулай эшләргә тиеш дип уйлыйм. Бу сезгә юл буенда туган яңа ачышлардан файдаланырга мөмкинлек бирә. Ләкин, бәлки, иң мөһиме — бу рухи халәт өчен файдалы.

Дизайнда рухи халәт төп урында тора. Кешеләрнең бу хакта күбрәк сөйләмәвенә мин гаҗәпләнәм. Минем беренче рәсем укытучыларымның берсе миңа болай диде: әгәр сез берәр нәрсә сызганда эчегез пошса, рәсем дә кызыксыз күренәчәк. Мәсәлән, сезгә бина ясарга кирәк ди, һәм сез һәр кирпечне аерым ясарга карар итәсез. Теләсәгез, сез моны эшли аласыз, ләкин ярты юлда эчегез пошып, һәрберсен күзәтү урынына кирпечләрне механик рәвештә ясый башласагыз, рәсем кирпечләрне бары тик өстән генә күрсәткәнгә караганда начаррак күренәчәк.

Прототипны әкренләп камилләштереп төзү рухи көч өчен яхшы, чөнки ул сезнең игътибарыгызны җәлеп итеп тора. Программа тәэминатында минем кагыйдәм: һәрвакыт эшләүче кодка ия булу. Әгәр сез бер сәгатьтән соң сыный алачак нәрсә язасыз икән, сезне дәртләндерү өчен шунда ук бүләк алу өмете бар. Бу сәнгатьтә дә, аеруча майлы буяу белән язуда да шулай ук дөрес. Күпчелек рәссамнар тонык нобайдан башлый һәм аны әкренләп камилләштерә. Әгәр сез шулай эшләсәгез, принципта сез көнне чыннан да тәмамланмаган булып күренгән нәрсә белән тәмамларга тиеш түгелсез. Чыннан да, рәссамнар арасында хәтта мондый әйтем бар: «Картина беркайчан да тәмамланмый, сез бары тик аның өстендә эшләүне туктатасыз». Бу фикер программа тәэминаты өстендә эшләгән һәркемгә таныш булыр.

Рухи халәт — гади кулланучы өчен нәрсәдер проектлауның авыр булуының тагын бер сәбәбе. Үзегезгә ошамаган нәрсәгә кызыксынуны саклап калу кыен. Яхшы нәрсә ясау өчен, сез «ай-һай, бу чыннан да шәп» дип уйларга тиешсез, ә «нинди чүп бу; теге юләрләргә бу ошаячак» дип түгел.

Дизайн кешеләр өчен әйберләр ясауны аңлата. Ләкин кеше булып кулланучы гына калмый. Дизайнер да — кеше.

Игътибар итегез, бу вакыт эчендә мин гел «дизайнер» турында сөйләдем. Дизайн яхшы булсын өчен, гадәттә ул бер кешенең контроле астында булырга тиеш. Шулай да, фәнни-тикшеренү проектында берничә кешенең хезмәттәшлек итүе мөмкин кебек тоела. Бу миңа тикшеренү белән дизайн арасындагы иң кызыклы аермаларның берсе булып күренә.

Сәнгатьтә хезмәттәшлекнең танылган үрнәкләре булган, ләкин аларның күбесе төш кушылу түгел, ә молекуляр бәйләнеш очраклары кебек күренә. Операда бер кешенең либретто язуы, ә икенчесенең музыка язуы — гадәти хәл. Һәм Яңарыш дәверендә Төньяк Европадан килгән һөнәрчеләр еш кына Италия картиналарының фонындагы пейзажларны ясау өчен ялланган. Ләкин болар чын хезмәттәшлек түгел. Алар күбрәк Роберт Фростның «яхшы коймалар яхшы күршеләр ясый» дигән сүзләренә охшаган. Сез яхшы дизайн үрнәкләрен бергә ябыштыра аласыз, ләкин һәр аерым проект эчендә бер кеше җитәкчелек итәргә тиеш.

Мин яхшы дизайн бер кешенең бөтен нәрсәне уйлап табуын таләп итә дип әйтмим. Сез үзенең фикеренә ышанган кешенең киңәшеннән дә кыйммәтрәк бернәрсә дә юк. Ләкин сөйләшү тәмамлангач, нәрсә эшләргә кирәклеге турында карар бер кешедә калырга тиеш.

Ни өчен тикшеренүне автордашлар белән башкарып була, ә дизайнны юк? Бу кызыклы сорау. Мин җавабын белмим. Бәлки, дизайн белән тикшеренү берләшә икән, иң яхшы тикшеренү шулай ук яхшы дизайн булып торадыр һәм, асылда, аны бергәләп башкарып булмыйдыр. Иң танылган галимнәрнең күбесе ялгыз эшләгән кебек. Ләкин мин монда бернинди канун бармы-юкмы икәнен әйтерлек җитәрлек белмим. Бәлки, күп кенә билгеле галимнәр хезмәттәшлек сирәгрәк булган заманда эшләгәнгә генә шулайдыр.

Фәндә эш нинди генә булмасын, сәнгатьтә чын хезмәттәшлек гадәттән тыш сирәк очрый кебек. Комитет тарафыннан проектлау — начар дизайнның синонимы. Ни өчен алай? Бу чикләүне җиңәр өчен ниндидер юл бармы?

Мин аның юк дип уйларга омтылам — яхшы дизайн диктатор таләп итә. Сәбәпләрнең берсе — яхшы дизайн бөтен бер йомгак кебек бердәм булырга тиеш. Дизайн бары тик кешеләр өчен генә түгел, ә аерым кеше өчен. Әгәр дизайн бер кешенең башына сыя торган идеяне чагылдырса, ул идея кулланучының башына да сыячак.

Бәйләнешле: