Новая методыка


Original: http://martinfowler.com/articles/newMethodology.html

 

У апошнія некалькі гадоў там было росквіт новага стылю метадалогіі праграмнага забеспячэння – называюць гнуткіх метадаў. У якасці альтэрнатывы характарызуюцца як проціяддзе да бюракратыі або ліцэнзіі ўзламаць яны распачалі цікавасць ва ўсім ПА ландшафту. У гэтым эсэ я даследаваць прычыны гнуткіх метадаў, арыентуючыся не столькі на іх вагі, але на іх адаптыўнай прыроды і іх народзе ў першую чаргу арыентацыі.

13 снежня 2005 года

Photo of  	Martin FowlerМарцін Фаулер
Пераклады: Рускі · Кітайскі · інданезійскі · Італьянскі · Французскі ·

Знайсці падобныя артыкулы ў гэта, гледзячы на гэтыя тэгі: папулярныя · спрытны · тэорыі працэс

Змест

З нічога, каб Манументальная, каб Agile
Інтэлектуальны супраць Adaptive
Падзел праектавання і будаўніцтва
Непрадказальнасць патрабаванняў
З’яўляецца Прадказальнасць невыканальная?
Кантроль у непрадказальны працэс – ітэрацыі
Кліент Адаптыўная
Клопату пра інтарэсы людзей
Plug-сумяшчальныя прылады па праграмаванні
Праграмісты адказных прафесіяналаў
Кіраванне Людзі арыентаваны працэс
Цяжкасць вымярэння
Ролю бізнес-лідэрства
Self-адаптыўны працэс
Водары гнуткай распрацоўкі
Agile Manifesto
XP (Extreme Programming)
бойка
крышталь
Кантэкстнае Тэставанне
Ашчадная развіцця
(Rational) Unified Process
Калі вы ідзяце гнуткай?

_______________________________________________

Верагодна, найбольш прыкметнае змяненне ў працэсе праграмнага мыслення ў апошнія некалькі гадоў стала з’яўленне словы «гнуткай». Мы гаворым пра гнуткіх метадаў праграмнага забеспячэння, аб тым, як ўвесці спрыт у камандзе распрацоўшчыкаў, ці пра тое, як супрацьстаяць насоўваецца буру agilists рашучасці змяніць ўстояныя практыкі.

Гэта новы рух вырасла з намаганням розных людзей, якія мелі справу з працэсам распрацоўкі праграмнага забеспячэння ў 1990 годзе, знайшлі іх, жадаючы, і шукаў новы падыход да працэсу забеспячэння. Большасць ідэй не былі новымі, сапраўды многія людзі лічылі, што значна паспяховым праграма была пабудавана такім чынам на працягу доўгага часу. Быў, аднак, меркаванне, што гэтыя ідэі былі падушаныя і не звярталіся дастаткова сур’ёзна, у прыватнасці, людзей, зацікаўленых у працэсе праграмнага забеспячэння.

Гэта эсэ было першапачаткова часткай гэтага руху. Я ўпершыню апублікаваная яго ў ліпені 2000 года. Я напісаў яе, як і большасць маіх эсэ, як частка спрабуе зразумець тэму. У той час я выкарыстаў Экстрэмальнае праграмаванне на працягу некалькіх гадоў пасля таго, як я быў ​​досыць удачлівы, каб працаваць з Кент Бек, Рон Джеффрис, Дон Уэлс, і, перш за ўсё, астатнія каманды Chrysler C3 ў 1996 годзе. Я з тых часоў былі размовы і чытаць кнігі ад іншых людзей, якія мелі падобныя ідэі аб працэсе праграмнага забеспячэння, але не абавязкова хацелі ўзяць той жа шлях, Extreme Programming. Так у эсэ я хацеў даследаваць, якія былі падабенства і адрозненні паміж гэтымі метадалогіямі.

Калі вы зацікаўлены ў гістарычных кур’ёзаў, вы можаце прачытаць арыгінальную версію гэтага артыкула. Акрамя фарматавання змяняе тэкст без зменаў.

Мая выснова тое, што я ўсё яшчэ веру зараз, што былі некаторыя фундаментальныя прынцыпы, якія аб’яднаны гэтыя метадалогіі, і гэтыя прынцыпы былі прыкметным кантраст з здагадак устаноўленых методык.

Гэта эсэ па-ранейшаму з’яўляецца адным з самых папулярных нарысаў аб маім сайце, а гэта значыць я адчуваю сябе некалькі загадана трымаць яго ў актуальным стане. У сваім першапачатковым выглядзе эсэ і вывучыць гэтыя адрозненні ў прынцыпах і падаў агляд гнуткіх метадаў, як я потым зразумеў іх. Занадта шмат усяго адбылося з гнуткіх метадаў Так як для мяне, каб ісці ў нагу з апытальных часткі, хоць я даць некаторыя спасылкі, каб працягнуць свае пошукі. Адрозненні ў прынцыпах па-ранейшаму застаюцца, і гэта абмеркаванне я захаваў.

З нічога, каб Манументальная, каб Agile

Самыя распрацоўка праграмнага забеспячэння з’яўляецца хаатычная дзейнасць, часта характарызуецца фразай «кода і выправіць”. Праграмнае забеспячэнне напісана без асаблівых базавай плана, а дызайн сістэмы злеплены з многіх кароткатэрміновых рашэнняў. Гэта на самай справе працуе даволі добра, так як сістэма невялікая, але як сістэма расце становіцца ўсё цяжэй дадаваць новыя функцыі ў сістэму. Акрамя таго памылкі становяцца ўсё больш частымі і ўсё больш цяжка выправіць. Тыповы прыкмета такой сістэмы з’яўляецца доўгі этап праверкі пасля сістэмы “скончаным”. Такі доўгі этап праверкі гуляе хаос з графікамі, як тэставанне і адладка немагчыма запланаваць.

Арыгінальны рух, каб паспрабаваць змяніць гэта ўвёў паняцце метадалогіі. Гэтыя метадалогіі накласці дысцыплінаваны працэс пры распрацоўцы праграмнага забеспячэння з мэтай зрабіць распрацоўкі праграмнага забеспячэння больш прадказальным і больш эфектыўным. Яны робяць гэта шляхам распрацоўкі дэталёвы працэс з моцным акцэнтам на планаванне натхнёны іншых інжынерных дысцыплін – менавіта таму мне падабаецца называць іх інжынерных метадалогій (іншы шырока выкарыстоўваецца тэрмін для іх план па ініцыятыве метадалогіі).

Інжынерныя методыкі былі вакол на працягу доўгага часу. Яны не прыкметныя за тое, што жудасна паспяховым. Яны яшчэ менш вядомы, каб быць папулярным. Найбольш часта крытыка гэтых метадалогій у тым, што яны бюракратычная. Там так шмат матэрыялу, каб зрабіць, каб прытрымлівацца метадалогіі, што ўся тэмпы развіцця запавольвае.

Agile метадалогіі, распрацаваныя ў якасці рэакцыі на гэтых метадалогій. Для многіх людзей прывабнасць гэтых гнуткіх метадалогій з’яўляецца іх рэакцыя на бюракратыі інжынерных методык. Гэтыя новыя метады спрабаваць карысны кампраміс паміж ня працэсу і занадта шмат працэсу, забяспечваючы досыць проста працэс, каб атрымаць разумную аддачу.

Вынікам усяго гэтага з’яўляецца тое, што спрытныя метады маюць некаторыя істотныя змены ў ўпор з інжынерных метадаў. Самым непасрэдным Розніца ў тым, што яны менш арыентаванай на дакументы, як правіла, падкрэсліваючы меншая колькасць дакументацыі для дадзенай задачы. У многіх адносінах яны даволі код-арыентаванай: па маршруце: што кажа пра тое, што ключавой часткай дакументацыі з’яўляецца зыходны код.

Аднак я не думаю, што гэта з’яўляецца ключавым момантам аб гнуткіх метадаў. Адсутнасць дакументацыі з’яўляецца сімптомам двух больш глыбокіх адрозненняў:

  • Гнуткія метады адаптыўныя, а ня інтэлектуальнага. Інжынерныя метады, як правіла, імкнуцца планаваць большую частку працэсу праграмнага забеспячэння ў драбнюткіх падрабязнасцях на працягу доўгага прамежку часу, гэта не працуе добра, пакуль сітуацыя не зменіцца. Так іх прырода супраціўляцца зменам. У гнуткіх метадаў, аднак, вітаюць змены. Яны спрабуюць быць працэсы, якія адаптуюцца і квітнеюць на змены, аж да таго, змены сябе.
  • Agile метады арыентаваная на людзей, а не на працэс. Мэта інжынерных метадаў з’яўляецца вызначэнне працэсу, які будзе добра працаваць, хто, здараецца, выкарыстоўваючы яго. Гнуткія метады сцвярджаць, што ні адзін працэс не будзе ніколі складаюць майстэрства каманды распрацоўшчыкаў, таму роля працэсу з’яўляецца падтрымка каманды распрацоўшчыкаў у іх працы.

У наступных раздзелах я разгледжу гэтыя адрозненні больш падрабязна, так што вы можаце зразумець, што адаптыўны і інтарэсы людзей працэс, як, яе перавагі і недахопы, і гэта тое, што вы павінны выкарыстоўваць: альбо ў якасці распрацоўніка або заказчыка праграмнае забеспячэнне.

 

Інтэлектуальны супраць Adaptive
Падзел праектавання і будаўніцтва

Звычайная натхнення для метадалогій інжынерных дысцыплін, такіх, як грамадзянская або машынабудаванні. Такія дысцыпліны пакласці шмат увагі планаванню, перш чым будаваць. Такія інжынеры будуць працаваць над серыяй малюнкаў, якія дакладна паказваюць, што павінна быць зроблена і як трэба гэтыя рэчы, каб быць разам. Многія дызайнерскія рашэнні, такія як, як мець справу з нагрузкай на мосце, вырабляюць чарцяжы вырабляюцца. Чарцяжы затым перададзены ў іншую групу, часта іншай кампаніі, які будзе пабудаваны. Гэта мяркуецца, што працэс будаўніцтва будзе прытрымлівацца малюнкі. На практыцы будаўнікі будуць працаваць з некаторымі праблемамі, але яны, як правіла, мала.

Паколькі чарцяжы пазначыць часткі і як яны павінны быць разам, яны дзейнічаюць у якасці асновы для дэталёвага плана будаўніцтва. Такі план можа высветліць, задачы, якія неабходна зрабіць, і тое, што залежнасці існуюць паміж гэтымі задачамі. Гэта дазваляе разумна прадказальным графікам і бюджэтам на будаўніцтва. Ён таксама кажа, у дэталях, як людзі, якія робяць будаўнічыя работы павінны выконваць сваю працу. Гэта дазваляе будаўніцтва, менш дасведчаны інтэлектуальна, хоць яны часта вельмі дасведчаны ўручную.

Такім чынам, што мы бачым тут два прынцыпова розных мерапрыемстваў. Дызайн, які цяжка прадказаць, і патрабуе дарагіх і творчых людзей, і будаўніцтва, якое лягчэй прадказаць. Як толькі ў нас ёсць дызайн, мы можам планаваць будаўніцтва. Як толькі ў нас ёсць план будаўніцтва, мы можам мець справу з будаўніцтвам ў значна больш прадказальным чынам. У грамадзянскага будаўніцтва знаходзіцца і кошту і часу нашмат больш, чым праектавання і планавання.

Такім чынам, падыход да распрацоўкі праграмнага забеспячэння метадалогіі выглядае так: мы хочам прадказальны графік, які можна выкарыстоўваць людзям з больш нізкай кваліфікацыі. Для гэтага мы павінны аддзяліць дызайн ад будаўніцтва. Таму мы павінны высветліць, як зрабіць дызайн для праграмнага забеспячэння, так што будаўніцтва можа быць проста, калі планаванне ажыццяўляецца.

Так якой форме гэты план ўзяць? Для многіх гэта з’яўляецца ролю дызайну пазначэнняў, такіх як UML. Калі мы можам зрабіць усё важныя рашэнні з выкарыстаннем UML, мы можам пабудаваць план будаўніцтва, а затым перадаць гэтыя праекты прэч кодэраў як будаўнічай дзейнасці.

Але тут крыецца галоўнае пытанне. Ці можаце вы атрымаць дызайн, які здольны ператварыць кадаваньне ў прадказальны будаўнічай дзейнасці? І калі так, то затраты на вядзенне гэтага дастаткова мала, каб зрабіць гэты падыход варта?

Усё гэта прыносіць некалькі пытанняў на розум. Першым з іх з’яўляецца пытанне, як цяжка атрымаць UML, як дызайн ў стан, што ён можа быць перададзены праграмістаў. Праблема з UML-падобны дызайн з’яўляецца тое, што яна можа выглядаць вельмі добра на паперы, але быць сур’ёзныя недахопы, калі вы на самой справе трэба запраграмаваць рэч. Мадэлі, якія выкарыстоўваюць інжынеры-будаўнікі заснаваныя на шматгадовай практыкі, замацаваныя ў інжынерных кодаў. Акрамя таго ключавыя пытанні, такія як шляху сілы гуляць у дызайне, паддаюцца матэматычнаму аналізу. Адзіная праверка мы можам зрабіць з UML-дыяграм, як экспертная ацэнка. У той час як гэта карысна гэта прыводзіць да памылак у праектаванні, якія часта толькі выяўленых у кадавання і тэсціравання. Нават дасведчаныя дызайнеры, такія, як я лічу сябе, часта дзівяцца, калі мы звяртаемся такі дызайн ў праграмнае забеспячэнне.

Іншае пытанне, што параўнальных выдаткаў. Калі вы пабудаваць мост, кошт праектавання высілкаў складае каля 10% ад задання, а астатні час будаўніцтва. У праграмным забеспячэнні колькасць часу, выдаткаванага ў кадаванні значна, значна менш Макконнелл мяркуе, што для вялікага праекта, толькі 15% праекта з’яўляецца код і модульнага тэставання, амаль ідэальны разварот з адносін мостабудаўнічага. Нават калі вы аднаразовай ва ўсіх выпрабаванняў у рамках будаўніцтва, то дызайн па-ранейшаму 50% працы. Гэта падымае важнае пытанне аб прыродзе дызайну ў праграмнае забеспячэнне па параўнанні з яго роляй у іншых галінах тэхнікі.

Гэтыя пытанні прывялі Джэк Рыўз выказаць здагадку, што на самой справе зыходны код з’яўляецца дызайн дакумент і што на этапе будаўніцтва на самай справе выкарыстанне кампілятара і кампаноўніка. Сапраўды ўсё, што вы можаце звяртацца як будаўніцтва можа і павінна быць аўтаматызавана.

Гэта мысленне прыводзіць да некаторых важным высноваў:

  • У праграмным забеспячэнні: будаўніцтва так танна, каб быць свабодным
  • У праграмным забеспячэнні ўсе намаганні дызайн, і, такім чынам, патрабуе творчых і таленавітых людзей
  • Творчыя працэсы не так лёгка і планавалася, і так прадказальнасць цалкам можа быць немагчыма мэта.
  • Мы павінны быць вельмі асцярожныя з традыцыйнай інжынернай метафары для стварэння праграмнага забеспячэння. Гэта іншы выгляд дзейнасці і патрабуе іншага працэсу

Непрадказальнасць патрабаванняў

Там у прыпеў Я чуў на кожным праблем праекта я сутыкнуўся. Распрацоўшчыкі прыходзяць да мяне і кажуць “праблема з гэтым праектам у тым, што патрабаванні пастаянна змяняюцца”. Тое, што я знайсці дзіўна ў гэтай сітуацыі з’яўляецца тое, што нехта здзіўлены ім. У будынку бізнес Патрабаванні да праграмнага забеспячэння змены з’яўляюцца нормай, пытанне ў тым, што мы з гэтым зрабіць.

Адзін маршрут для лячэння зменлівых патрабаванням у выніку бедныя тэхнічных патрабаванняў. Ідэя тэхнічных патрабаванняў, каб атрымаць цалкам зразумеў карціну патрабаванням, перш чым пачаць будаваць праграмнае забеспячэнне, атрымаць кліентаў знак-оф да гэтых патрабаванням, а затым ўсталяваць працэдуры, якія абмяжоўваюць патрабаванні змены пасля знака-оф.

Адна з праблем, з гэтым што проста спрабую зразумець варыянты патрабаванняў з’яўляецца жорсткім. Гэта яшчэ больш жорсткія, таму што арганізацыя развіцця, як правіла, не забяспечвае інфармацыю аб выдатках на выкананне прадпісанняў. Вы ў канчатковым выніку ў сітуацыі, калі вы можаце мець некаторыя жаданне дахам сонца на вашым аўтамабілі, але прадавец не магу сказаць вам, калі яно дадае $ 10 да кошту аўтамабіля, або $ 10,000. Без асаблівых ідэі кошту, як вы можаце зразумець, ці вы хочаце плаціць за гэта люк на даху?

Ацэнка цяжка па многіх прычынах. Частка з іх з’яўляецца тое, што распрацоўка праграмнага забеспячэння з’яўляецца праектная дзейнасць, і, такім чынам цяжка планаваць і кошт. Частка з іх з’яўляецца тое, што асноўныя матэрыялы трымаць хутка мяняецца. Частка з іх з’яўляецца тое, што вельмі многае залежыць ад якой удзельнічаюць асобныя людзі, і асобы, цяжка прадказаць і колькасна.

Неосязаемых характар ​​Праграмнае забеспячэнне таксама скарачае цалі Гэта вельмі цяжка ўбачыць, якое значэнне функцыя праграмнага забеспячэння ёсць, пакуль вы не выкарыстоўваць яго па-сапраўднаму. Толькі тады, калі вы выкарыстоўваеце раннюю версію некаторых праграм вы сапраўды пачынаеце разумець, якія функцыі з’яўляюцца каштоўнымі і якія часткі не з’яўляюцца.

Гэта прыводзіць да іранічнай пункту, што людзі чакаюць, што патрабаванні павінны быць зменлівай. Бо праграма павінна быць мяккай. Так не толькі патрабаванні зменлівая, яны павінны быць зменлівая. Гэта займае шмат энергіі, каб атрымаць кліентаў з праграмнага забеспячэння, каб выправіць патрабаванням. Гэта яшчэ горш, калі яны калі-небудзь спрабаваў сябе ў распрацоўцы праграмнага забеспячэння сябе, таму што тады яны “ведаюць”, што праграмнае забеспячэнне можна лёгка змяніць.

Але нават калі б вы маглі ўрэгуляваць усе, што і на самай справе мог атрымаць дакладную і стабільную набор патрабаванняў вы, верагодна, па-ранейшаму асуджаныя. У сённяшняй эканоміцы фундаментальныя бізнес-сілы, змяніўшы значэнне праграмных функцый занадта хутка. Што можа быць добрай набор патрабаванняў цяпер, не добры набор у шэсць месяцаў. Нават калі кліенты могуць выправіць свае патрабаванні, дзелавой свет не збіраецца спыняцца на іх. І шмат змен у свеце бізнесу з’яўляюцца цалкам непрадказальны: любы, хто кажа інакш альбо лежачы, альбо ўжо зрабіў мільярд на біржавога гандлю.

Усё астатняе ў распрацоўцы праграмнага забеспячэння залежыць ад патрабаванняў. Калі вы не можаце атрымаць стабільныя патрабаванні вы не можаце атрымаць прадказальны план.
З’яўляецца Прадказальнасць невыканальная?

Увогуле, няма. Ёсць некаторыя праграмныя распрацоўкі, дзе прадказальнасць магчыма. Такія арганізацыі, як шатла праграмнага забеспячэння групы НАСА з’яўляюцца яркім прыкладам таго, дзе распрацоўка праграмнага забеспячэння можа быць прадказальным. Гэта патрабуе шмат цырымоніі, вялікай колькасцю часу, вялікага калектыву, і стабільных патрабаванняў. Ёсць праекты, якія там шатлы. Аднак я не думаю, значна праграмнага забеспячэння для бізнесу ўпісваецца ў гэтую катэгорыю. Для гэтага вам неабходна розныя віды працэсу.

Адно з самых вялікіх небяспек з’яўляецца зрабіць выгляд, што вы можаце прытрымлівацца прадказальны працэс, калі вы не можаце. Людзі, якія працуюць па метадалогіі не вельмі добра на выяўленне межавыя ўмовы: месцы, дзе метадалогія пераходзіць з мэтазгодным недарэчна. Большасць метадыстаў хочуць, каб іх метадалогіі, якімі могуць карыстацца ўсе, так што яны не разумеюць, ні прапагандаваць свае межавыя ўмовы. Гэта прыводзіць да людзей, якія выкарыстоўваюць метадалогію ў няправільных умовах, напрыклад, з дапамогай прадказальны метадалогіі ў непрадказальнай сітуацыі.

Там у моцнае спакуса зрабіць гэта. Прадказальнасць з’яўляецца вельмі пажаданым уласцівасцю. Аднак, калі вы лічыце, што можаце быць прадказальнай, калі вы не можаце, гэта прыводзіць да сітуацыі, калі людзі будуюць план на ранняй стадыі, то не належным чынам ўрэгуляваць сітуацыю, калі план развальваецца. Вы бачыце, што план і рэальнасць павольна аддаляюцца адзін ад аднаго. На працягу доўгага часу вы можаце рабіць выгляд, што план застаецца ў сіле. Але ў нейкі момант дрэйф становіцца занадта шмат, і гэты план развальваецца. Звычайна падзенне з’яўляецца хваравітым.

Так што калі вы знаходзіцеся ў сітуацыі, якая ня прадказальная вы не можаце выкарыстоўваць прагнастычныя методыку. Гэта цяжкі ўдар. Гэта азначае, што многія з мадэляў для кіравання праектамі, многія з мадэляў для ўсёй адносін з кліентамі, проста не адпавядаюць рэчаіснасці больш. Перавагі прадказальнасці настолькі вялікія, што цяжка адпусціць іх. Як і многія праблемы, самая цяжкая частка проста разумеючы, што праблема існуе.

Аднак адпускаючы прадказальнасці не значыць, што трэба вярнуцца да некантралюемага хаосу. Замест гэтага вы павінны працэсу, які можа даць вам кантроль над непрадказальнасцю. Гэта тое, што адаптыўнасць гэта ўсё аб.
Кантроль у непрадказальны працэс – ітэрацыі

Так як жа мы кантралюем самі ў непрадказальным свеце? Самае галоўнае, і да гэтага часу складаная частка, каб ведаць дакладна, дзе мы знаходзімся. Нам патрэбна сумленная механізм зваротнай сувязі, які можа дакладна сказаць нам, якая сітуацыя з частымі інтэрваламі.

Ключ да гэтай зваротнай сувязі з’яўляецца итеративной распрацоўкі. Гэта не новая ідэя. Итеративная распрацоўка была вакол на працягу некаторага часу пад шматлікімі імёнамі: дадатковых, эвалюцыйных, паэтапны, спіральных … Шмат імёнаў. Ключ да итеративной распрацоўкі з’яўляецца часта вырабляюць працоўныя версіі канчатковай сістэмы, якія маюць падмноства неабходных функцый. Гэтыя працоўныя сістэмы не хапае функцыянальнасці, але павінны б быць вернымі патрабаванням канчатковай сістэмы. Яны павінны быць цалкам інтэграваныя і як старанна тэстуюцца ў якасці канчатковай здачы.

Сэнс гэтага ў тым, што няма нічога, як выпрабаванага, інтэграванай сістэмы для прыцягнення сілавое дозу рэальнасці ў любы праект. Дакументы могуць схаваць разнастайныя недахопы. Неправераныя код можа схаваць мноства недахопаў. Але калі людзі на самай справе сядзець перад сістэмай і працаваць з ім, то недахопы стаць па-сапраўднаму відавочная: як з пункту гледжання памылак і з пункту гледжання незразумелых патрабаванняў.

Итеративная распрацоўка мае сэнс у прадказальных працэсаў, а таксама. Але важна ў адаптыўных працэсаў, таму што працэс адаптацыі павінен быць у стане мець справу з зменамі ў неабходных функцый. Гэта прыводзіць да стылю планавання, дзе доўгатэрміновыя планы з’яўляюцца вельмі вадкасці, і толькі стабільныя планы кароткатэрміновыя планы, якія зроблены для аднаго ітэрацыі. Итеративная распрацоўка дае трывалы падмурак у кожнай ітэрацыі, што вы можаце засноўваць свае пазнейшыя планы вакол.

Ключавы пытанне для гэтага з’яўляецца, як доўга ітэрацыі павінна быць. Розныя людзі даюць розныя адказы. XP мяркуе ітэрацый адной або двух тыдняў. SCRUM мяркуе даўжыню месяца. Крышталь можа расцягнуцца далей. Тэндэнцыя, аднак, зрабіць кожная ітэрацыя максімальна кароткім, як вы можаце сысці з рук. Гэта забяспечвае больш частую зваротную сувязь, каб вы ведалі, дзе вы знаходзіцеся часцей.

Кліент Адаптыўная

Гэты выгляд адаптыўнага працэсу патрабуе іншага роду адносін з кліентам, чым тыя, якія часта разглядаюцца, у прыватнасці, калі распрацоўка ажыццяўляецца з дапамогай асобнай фірмы. Калі вы наймаеце асобнай фірмы, каб зрабіць распрацоўку праграмнага забеспячэння, большасць кліентаў аддалі перавагу б кантракт з фіксаванай цаной. Раскажы распрацоўнікам, што яны хочуць, папрасіць заявак, прымаць прапанову, а затым адказнасць ляжыць на арганізацыі распрацоўкі для стварэння праграмнага забеспячэння.

Дамову з фіксаванай цаной патрабуецца стабільныя патрабаванні і, такім чынам, прагнастычныя працэс. Адаптыўныя працэсы і нестабільныя патрабаванні мяркуюць вы не можаце працаваць з звычайным паняццем фіксаванай цаны. Спрабуючы адпавядаць фіксаваную мадэль цана для адаптыўнага працэсу трапляе ў вельмі балючай выбуху. Адваротны частка гэтага выбуху з’яўляецца тое, што кліент не пацярпеў сапраўды гэтак жа, як кампанія па распрацоўцы праграмнага забеспячэння. Бо кліент не будзе жадаючых некаторы праграмнае забеспячэнне, калі іх бізнэс не меў патрэбу ў гэтым. Калі яны не атрымліваюць іх бізнесам, пакутуе. Так што нават калі яны не плацяць развіцця кампаніі нічога, яны ўсё яшчэ прайграюць. Сапраўды, яны губляюць больш, чым яны б плаціць за праграмнае забеспячэнне (навошта ім плаціць за праграмнае забеспячэнне, калі бізнес значэнне гэтага праграмнага забеспячэння былі менш?)

Такім чынам, ёсць небяспека для абодвух бакоў у падпісанні традыцыйны дамову па фіксаванай цане ва ўмовах, калі інтэлектуальны працэс не могуць быць выкарыстаныя. Гэта азначае, што кліент павінен працаваць па-іншаму.

Гэта не азначае, што вы не можаце выправіць бюджэт на праграмнае забеспячэнне да фронту. Што гэта значыць, што вы не можаце выправіць час, кошт і аб’ём. Звычайная гнуткай падыход выправіць час і цану, і дазволіць сфера вар’іраваць у кіраванай рэжыме.

У адаптыўнай працэсу кліент мае шмат больш гнуткай кантроль над працэсам распрацоўкі праграмнага забеспячэння. У кожнай ітэрацыі яны атрымліваюць як праверыць прагрэсу і змяніць кірунак распрацоўкі праграмнага забеспячэння. Гэта прыводзіць да значна больш цесных адносін з распрацоўшчыкамі праграмнага забеспячэння, праўдзівы дзелавога партнёрства. Гэты ўзровень узаемадзеяння не для кожнай арганізацыі заказчыка, ні для любога распрацоўніка праграмнага забеспячэння; але важна, каб працэс адаптацыі працаваць належным чынам.

Усё гэта дае шэраг пераваг для кліента. Для пачатку яны атрымліваюць значна больш спагадным распрацоўку праграмнага забеспячэння. Карысная, хоць мінімальная, сістэма можа пайсці ў вытворчасць на ранніх стадыях. Кліент можа змяніць свае магчымасці ў адпаведнасці са зменамі ў бізнэсе, а таксама ад навучання ад таго, як выкарыстоўваецца сістэма на самай справе.

Гэтак жа важна, як гэта большай нагляднасці ў сапраўдную стане праекта. Праблема з прагнозных працэсаў з’яўляецца тое, што якасць праекта вымяраецца адпаведнасці з планам. Гэта ўскладняе для людзей, каб сігналізаваць, калі рэальнасць і план разыходзяцца. Агульным вынікам з’яўляецца вялікім слізгацення ў раскладзе ў канцы праекта. У гнуткім праекце існуе пастаянная перапрацоўка плана з кожнай ітэрацыі. Калі дрэнная навіна хаваецца яна імкнецца прыехаць раней, калі яшчэ ёсць час, каб зрабіць нешта пра гэта. Сапраўды, гэта кантроль рызык з’яўляецца ключавым перавагай итеративной распрацоўкі.

Гнуткія метады прыняць гэта далей, захоўваючы даўжыні ітэрацыі невялікі, але і, бачачы гэтыя змены па-рознаму. Мэры Poppendieck падсумаваў гэтую розніцу ў пункту гледжання лепш для мяне з яе фразай “позна змяненне патрабаванняў з’яўляецца канкурэнтнай перавагай». Я думаю, што большасць людзей, заўважылі, што гэта вельмі цяжка для дзелавых людзей, каб сапраўды зразумець, што ім трэба ад праграмнага забеспячэння ў пачатку. Часта мы бачым, што людзі вучацца ў працэсе, якія элементы з’яўляюцца каштоўнымі, а якія няма. Часта найбольш каштоўныя функцыі не відавочна, пакуль кліент не меў шанец згуляць з праграмным забеспячэннем. Гнуткія метады імкнуцца скарыстацца гэтым, заахвочваючы дзелавыя людзі, каб даведацца аб іх патрэбах, як сістэма будзе пабудаваны, і пабудаваць сістэму такім чынам, што змены могуць быць уключаны хутка.

Для майго выступу на першай канферэнцыі XP / Agile (XP 2000) я падрыхтаваў з’яўляецца праектаванне Dead: эсэ, які даследуе ролю дызайну ў экстрэмальным праграмаванні.

Усё гэта мае важнае значэнне, што ўяўляе сабой паспяховы праект. Прагнастычныя праект часта вымяраецца тым, наколькі добра ён сустрэў свой ​​план. Праект, які знаходзіцца на часе і па-кошту лічыцца паспяховым. Гэта вымярэнне бессэнсоўна гнуткай асяроддзі. Для agilists пытанне ў тым, кошту бізнесу – зрабіў атрымаць праграмнае забеспячэнне кліентаў, які больш каштоўным для іх, чым кошт ўклаў у яе. Добры інтэлектуальны праект будзе ісці па плане, добры жывы праект будзе грунтавацца нешта іншае, і лепш, чым першапачатковы план прадбачыў.

Клопату пра інтарэсы людзей

Выкананне адаптыўны працэс не з лёгкіх. У прыватнасці, ён патрабуе вельмі эфектыўнай каманды распрацоўшчыкаў. Каманда павінна быць эфектыўнай як у якасці асоб, а ў тым, як каманда спалучае ў сабе. Там таксама цікавая сінэргія: не проста не адаптыўнасць патрабуюць моцную каманду, большасць добрыя распрацоўнікі аддаюць перавагу адаптыўны працэс.

Plug-сумяшчальныя прылады па праграмаванні

Адна з мэтаў традыцыйных методык заключаецца ў распрацоўцы працэсу, дзе людзі, залучаныя заменныя часткі. З такога працэсу можна лячыць людзей у якасці рэсурсаў, якія даступныя ў розных тыпаў. У вас ёсць аналітык, некаторыя кодэры, некаторыя тэстары, менеджэр. Асобы, якія не так важныя, толькі ролі важныя. Такім чынам, калі вы плануеце праект не мае значэння, якія аналітык і якія Тэстары вы атрымліваеце, проста, што вы ведаеце, колькі ў вас ёсць, каб вы ведалі, як колькасць рэсурсаў ўплывае на план.

Але тут узнікае ключавой пытанне: як людзі ўдзельнічаюць у распрацоўцы праграмнага забеспячэння замяняем частак? Адна з ключавых асаблівасцяў гнуткіх метадаў з’яўляецца тое, што яны адпрэчваюць гэтую здагадку.

Мабыць, найбольш відавочнае непрыманне людзей, як рэсурсаў Алістэр Коберн. У сваёй працы, якія характарызуюць людзей як нелінейны характар​​, першага парадку кампанентаў у распрацоўцы праграмнага забеспячэння, ён робіць пункт, што прадказальныя працэсы патрабуюць кампаненты, якія вядуць сябе прадказальным чынам. Аднак людзі не прадказальныя кампаненты. Акрамя таго яго даследавання праграмных праектаў прывялі яго да высновы, што людзі з’яўляюцца найбольш важным фактарам у распрацоўцы праграмнага забеспячэння.

У загалоўку [яго артыкула] Я маю на ўвазе людзей, як «кампаненты». Гэта значыць, як людзі звяртаюцца ў працэс / метадалогіі праектавання літаратуры. Памылка ў гэтым падыходзе з’яўляецца тое, што “народ”, вельмі нясталыя і нелінейны, з унікальным поспеху і відаў адмоў. Гэтыя фактары з’яўляюцца першага парадку, нязначныя фактары. Адмова працэс і метадалогію дызайнераў да адказнасці за іх уносіць свой ​​уклад у рознага роду незапланаваных праектаў траекторый мы так часта бачым.

– [Коберн нелінейны]

Можна толькі гадаць, калі не прырода распрацоўкі праграмнага забеспячэння працуе супраць нас тут. Калі мы праграмуем кампутар, мы кантралюем па сваёй прыродзе прадказальнай прылада. Так як мы знаходзімся ў гэтым бізнесе, таму што мы добра рабіць гэта, мы ідэальна падыходзяць для Месінга, калі сутыкаюцца з людзьмі.

Хоць Коберн з’яўляецца найбольш відавочным у яго людзі-арыентаванай гледжання распрацоўкі праграмнага забеспячэння, паняцце людзей спачатку з’яўляецца агульнай тэмай з многімі мыслярамі ў галіне праграмнага забеспячэння. Праблема, занадта часта, у тым, што метадалогія была супрацьлегласць паняццю людзей як фактар ​​першага парадку ў поспех праекта.

Гэта стварае моцны станоўчы эфект зваротнай сувязі. Калі вы чакаеце, што ўсе вашы распрацоўшчыкі быць убудова сумяшчальны адзінак праграмавання, вы не спрабуйце лячыць іх як людзей. Гэта зніжае маральны дух (і прадукцыйнасці). Добрыя людзі шукаюць лепшае месца, каб быць, і ў выніку вы атрымаеце тое, што вы хочаце: падключаюцца сумяшчальныя адзінак праграмавання.

Вырашыўшы, што людзі прыходзяць у першую чаргу з’яўляецца сур’ёзным рашэннем, той, які патрабуе шмат рашучасці, каб праціснуць. Паняцце народа як рэсурсаў глыбока ўкаранілася ў бізнес-мыслення, яго карані вяртаючыся да ўздзеяння навуковага кіравання падыходу Фрэдэрыка Тэйлара. Ва ўпраўленні завод, такі падыход тейлористская можа мець сэнс. Але для вельмі творчай і прафесійнай дзейнасці, якому я веру распрацоўка праграмнага забеспячэння, каб быць, гэта не мае месца. (А бо сучасная вытворчая таксама адыходзяць ад мадэлі тейлористской.)

Праграмісты адказных прафесіяналаў

Адным з ключавых элементаў паняцці тейлористской у тым, што людзі, якія робяць працу не тыя людзі, хто можа лепш зразумець, як лепш зрабіць гэтую працу. У заводзе гэта можа быць праўдай па некалькіх прычынах. Частка гэтага з’яўляецца тое, што многія завадчане не самыя разумныя, альбо творчыя людзі, у прыватнасці, гэта адбываецца таму, што напружанасць у адносінах паміж кіраўніцтвам і работнікамі ў гэтым кіраванні робіць больш грошай, калі працоўныя зрабіць менш.

Найноўшая гісторыя больш паказвае нам, як няправільна гэта для распрацоўкі праграмнага забеспячэння. Усё часцей яркія і здольныя людзі прыцягваюць да распрацоўкі праграмнага забеспячэння, прыцягнутыя як яго бляску і патэнцыйна вялікімі ўзнагародамі. (Абодва з якіх спакушалі Мяне ад электроннай тэхнікі.) Нягледзячы на спад у пачатку 00-х, ёсць яшчэ шмат таленту і творчасці ў распрацоўцы праграмнага забеспячэння.

(Там цалкам можа быць пакаленняў эфект тут. Некаторыя неафіцыйныя дадзеныя прымушае мяне задацца пытаннем, калі больш яркія людзі адважыліся праграмнай інжынерыі ў апошнія пятнаццаць гадоў або каля таго. Калі гэта так, што гэта будзе прычынай, чаму існуе такі культ моладзі ў кампутарны бізнэс, як і большасць культаў там павінна быць зерне ісціны ў ім.)

Калі вы хочаце наняць і ўтрымаць добрых людзей, вы павінны прызнаць, што яны кампетэнтных спецыялістаў. Як такія, яны самыя лепшыя людзі, каб вырашыць, як праводзіць сваю тэхнічную працу. Тейлористская паняцце асобнага дэпартамента планавання, які вырашае, як рабіць рэчы працуе, толькі калі пляніроўнікі зразумець, як зрабіць працу лепш, чым тых, хто робіць гэта. Калі ў вас ёсць яркія, матываваных людзей, якія робяць працу, то гэта не мае месца.

Кіраванне Людзі арыентаваны працэс

Людзі арыентацыя выяўляецца ў некалькіх розных напрамках ў гнуткіх працэсаў. Гэта прыводзіць да розных эфектаў, не ўсе з іх адпавядаюць.

Адным з ключавых элементаў з’яўляецца тое, што прымаць працэс, а не навязвання працэсу. Часта праграмныя працэсы накладваюцца лічбамі кіравання. Як такія, яны часта супраціўляліся, асабліва калі лічбы па кіраванні аказалі значную колькасць часу ўдалечыні ад актыўнага развіцця. Прыём працэс патрабуе прыхільнасці, і як такой мае патрэбу ў актыўным удзеле ўсёй каманды.

Гэта заканчваецца з цікавым вынікам, што толькі самі распрацоўшчыкі могуць выбраць, каб прытрымлівацца адаптыўны працэс. Гэта асабліва дакладна для XP, якая патрабуе шмат дысцыпліны для выканання. Крышталь лічыць сябе менш дысцыплінаванага падыходу, гэта падыходзіць для больш шырокай аўдыторыі.

Іншая справа, што распрацоўшчыкі павінны быць у стане зрабіць усё тэхнічныя рашэнні. XP трапляе ў сэрца гэтага калі, па яе працэсе планавання ім гаворыцца, што толькі распрацоўшчыкі могуць рабіць ацэнкі таго, колькі часу гэта зойме, каб зрабіць некаторую працу.

Такое тэхнічнае кіраўніцтва вялікі зрух для многіх людзей, якія займаюць кіруючыя пасады. Такі падыход патрабуе сумеснай адказнасці, дзе распрацоўшчыкі і кіраванне маюць роўнае месца ў кіраўніцтве праектам. Звярніце ўвагу, што я кажу, роўныя. Упраўленне па-ранейшаму гуляе важную ролю, але прызнае экспертызу распрацоўнікаў.

Важнай прычынай гэтага з’яўляецца хуткасць змены тэхналогій у нашай галіны. Пасля некалькіх гадоў тэхнічныя веды выходзяць з моды. Гэта паўраспаду тэхнічных навыкаў не мае аналагаў у любой іншай галіны. Нават тэхнічныя людзі павінны прызнаць, што ўвод кіраванне азначае, што іх тэхнічныя навыкі хутка вянуць. Экс-распрацоўшчыкі павінны прызнаць, што іх тэхнічныя навыкі будуць хутка знікаюць, і яны павінны давяраць і спадзявацца на бягучых распрацоўнікаў.

Цяжкасць вымярэння

Калі ў вас ёсць працэс, у якім людзі, якія кажуць, як праца павінна быць выканана адрозніваюцца ад людзей, якія на самай справе зрабіць гэта, лідэры павінны нейкім чынам вымяраць, наколькі эфектыўна выканаўцы з’яўляюцца. У навуковага кіравання быў моцны штуршок, каб распрацаваць аб’ектыўныя падыходы да вымярэння выхад людзей.

Гэта асабліва актуальна для праграмнага забеспячэння з-за складанасці прымянення вымярэнне да праграмнага забеспячэння. Нягледзячы на ўсе нашы намаганні, мы не можам вымераць самыя простыя рэчы аб праграмным забеспячэнні, такіх як прадукцыйнасць. Без добрых мер для гэтых рэчаў, любы від вонкавага кантролю, асуджаная.

Прадстаўляючы як вымяраецца кіраванне без добрых мер прыводзіць да яго ўласных праблемах. Роберт Осцін зрабілі выдатны абмеркаванне гэтага. Ён паказвае на тое, што пры вымярэнні прадукцыйнасці вы павінны атрымаць усе важныя фактары, пад вымярэння. Усё, што не хапае мае непазбежны вынік, што выканаўцы будуць змяняць тое, што яны робяць, каб вырабляць лепшыя меры, нават калі гэта відавочна зніжае сапраўдную эфектыўнасць, што яны робяць. Гэта дысфункцыя вымярэння з’яўляецца ахілесавай пятай кіравання заснаваных на вымярэннях.

Выснову Осціна з’яўляецца тое, што вы павінны выбраць паміж вымярэння-шчолачнай кіравання і delegatory кіравання (дзе выканаўцы вырашыць, як зрабіць працу). Кіраванне Вымярэнне аснове лепш за ўсё падыходзіць для паўтаральных просты працы, з патрабаваннямі нізкіх ведаў і лёгка вымяраных выхадаў – дакладна супрацьлегласць распрацоўкі праграмнага забеспячэння.

Сэнс усяго гэтага ў тым, што традыцыйныя метады дзейнічалі ў здагадцы, што менеджменту вымярэнняў на аснове з’яўляецца найбольш эфектыўным спосабам кіравання. Спрытны супольнасць прызнае, што характарыстыкі распрацоўкі праграмнага забеспячэння такія, што менеджменту вымярэнняў на аснове прыводзіць да вельмі высокія ўзроўні вымярэння дысфункцыі. Гэта на самай справе больш эфектыўна выкарыстоўваць delegatory стыль кіравання, які з’яўляецца такі падыход, што знаходзіцца ў цэнтры agilist пункту гледжання.

Ролю бізнес-лідэрства

Але тэхнічныя людзі не могуць зрабіць увесь працэс самастойна. Яны маюць патрэбу ў кіраўніцтве на патрэбы бізнесу. Гэта прыводзіць да іншага важнага аспекту адаптыўных працэсаў: яны маюць патрэбу ў вельмі цесны кантакт з бізнес-экспертызы.

Гэта выходзіць за рамкі большасці праектаў ўдзеле бізнес-ролі. Agile каманды не можа існаваць з рэдкімі сувязі. Яны павінны пастаянны доступ да бізнес-экспертызы. Акрамя таго гэты доступ не тое, што апрацоўваецца на ўзроўні кіравання, гэта тое, што прысутнічае для кожнага распрацоўніка. Паколькі распрацоўшчыкі, здольныя прафесіяналы ў сваёй уласнай дысцыпліны, яны павінны быць у стане працаваць на роўных з іншымі прафесіяналамі ў іншых дысцыплінах.

Большая частка гэтага, вядома, з-за характару адаптыўнага развіцця. Паколькі ўся перадумова адаптыўнага развіцця з’яўляецца тое, што ўсё мяняецца хутка, неабходна пастаянны кантакт з раю ўсім зменаў.

Там няма нічога больш жудаснага, для распрацоўніка, чым бачыць іх цяжкая праца марна. Таму важна, каб пераканацца, што ёсць добрае якасць бізнес вопыт, які з’яўляецца даступным для распрацоўніка і досыць высокай якасці, што распрацоўнік можа давяраць іх.

Self-адаптыўны працэс

Да гэтага часу я казаў пра адаптыўнасць ў рамках праекта адаптацыі яго праграмнае забеспячэнне часта для задавальнення змяняюцца патрэбаў сваіх кліентаў. Аднак ёсць яшчэ адзін кут, каб адаптыўнасць: што з працэсу змяняецца з цягам часу. Праект, які пачынаецца з выкарыстаннем адаптыўнага працэсу не будзе мець той жа працэс на год пазней. З часам, каманда будзе знайсці тое, што працуе для іх, і змяніць працэс, каб адпавядаць.

Першая частка ўласнай адаптыўнасць з’яўляецца рэгулярны перагляд працэсу. Звычайна вы робіце гэта з кожнай ітэрацыі. У канцы кожнай ітэрацыі, маюць кароткую сустрэчу і задаць сабе наступныя пытанні (узятыя з Norm Керт)

  • Што мы робім добра?
  • Што ж мы даведаліся?
  • Што мы можам зрабіць лепш?
  • Што бянтэжыць нас?

Гэтыя пытанні прывядуць вас да ідэй, каб змяніць працэс для наступнай ітэрацыі. Такім чынам працэс, які пачынаецца з праблем можа палепшыць, так як праект працягваецца, адаптацыі лепш каманды, якая яго выкарыстоўвае.

У выпадку паспяховага завяршэння адаптыўнасць адбываецца ў рамках праекта, гэта яшчэ больш значным у маштабах усёй арганізацыі. Следствам самастойнай адаптыўнасць з’яўляецца тое, што вы ніколі не павінны чакаць, каб знайсці адзінага карпаратыўнага метадалогіі. Замест кожная каманда павінны не проста выбраць свой ​​уласны працэс, але трэба таксама актыўна наладжваць іх працэс, як яны прыступіць да рэалізацыі праекту. Хоць абодва апублікаваныя працэсы і вопыт іншых праектаў можа выступаць у якасці натхнення і базавай лініі, распрацоўшчыкі прафесійнай адказнасці заключаецца ў адаптацыі працэсу да задачы.

Водары гнуткай распрацоўкі

Тэрмін «гнуткай» ставіцца да філасофіі распрацоўкі праграмнага забеспячэння. У адпаведнасці з гэтым шырокім парасонам сядзіць шмат больш канкрэтныя падыходы, такія як Extreme Programming, Scrum, Lean развіцця і інш Кожны з гэтых больш канкрэтных падыходаў мае свае ўласныя ідэі, суполак і лідэраў. Кожная абшчына з’яўляецца асобнай групай самастойна, але быць правільна называецца гнуткай яна павінна прытрымлівацца тым жа агульныя прынцыпы. Кожная абшчына таксама запазычвае ад ідэй і метадаў адзін ад аднаго. Многія практыкуюць перамяшчацца паміж рознымі суполкамі распаўсюджвання розных ідэй вакол – у цэлым, гэта складана, але жывы экасістэмы.

Да гэтага часу я даў сваё ўзяцце на агульную карціну майго вызначэння гнуткімі. Цяпер я хачу прадставіць некаторыя з розных гнуткіх абшчын. Я магу толькі даць кароткі агляд тут, але я сапраўды ўключаюць у сябе спасылкі, каб вы маглі капаць далей, калі хочаце.

Паколькі я збіраюся пачаць даваць больш спасылак, гэта добры момант, каб паказаць на некаторыя крыніцы для атрымання агульнай інфармацыі аб гнуткіх метадаў. Вэб-цэнтрам з’яўляецца Agile Альянс некамерцыйная створана для заахвочвання і даследаванні гнуткай распрацоўкі праграмнага забеспячэння. Для кніг, якія я хацеў бы прапанаваць агляды Алістера Кокберн і Джым Хайсмит. Кніга Крэйг Ларман па хуткай распрацоўкі змяшчае вельмі карысную гісторыю итеративной распрацоўкі. Для больш маіх поглядаў на гнуткіх метадаў паглядзець на адпаведных раздзелах маіх артыкулаў і блога.

Прыведзены спіс далёка не поўны. Яна адлюстроўвае асабістую падборку водарамі Agile, якія маюць больш за ўсё цікавіць і паўплывалі на мяне на працягу апошняга дзесяцігоддзя ці каля таго.

Agile Manifesto

Тэрмін «гнуткай» атрымаў сагналі для гэтай дзейнасці ў пачатку 2001 года, калі група людзей, якія былі ў значнай ступені мае дачыненьне да гэтай працу сабраліся разам, каб абмяняцца ідэямі і прыдумаў Маніфеста гнуткай распрацоўкі праграмнага забеспячэння.

Да гэтага семінара цэлы шэраг розных груп былі развіваюцца падобныя ідэі аб распрацоўцы праграмнага забеспячэння. Большасць, але далёка не ўсе, частка гэтай працы прыйшлі з аб’ектна-арыентаванага праграмнага забеспячэння супольнасці, якія доўгі час выступаў ітэрацыйныя падыходы развіцця. Гэта эсэ было першапачаткова напісана ў 2000 годзе, каб паспрабаваць зблізіць гэтыя розныя тэмы. У той час не было агульная назва для гэтых падыходаў, але мянушку ‘лёгкі’ вырас вакол іх. Многія з людзей, уцягнутых не адчуваю, што гэта быў добры тэрмін, паколькі ён не дакладна перадаць сутнасць таго, што гэтыя падыходы былі а.

Там былі некаторыя казалі аб больш шырокіх пытанняў у гэтых падыходаў у 2000 годзе ў майстэрні, якія праводзяцца Кент Бек у штаце Арэгон. Хоць гэты семінар быў засяроджаны на Extreme Programming (супольнасці, што ў той час атрымала найбольшую ўвагу) прыняў удзел некалькі якія не з’яўляюцца XPers. Адзін дыскусіі, якія прыйшлі, ці было гэта лепш для XP, каб быць шырокай або бетон рух. Кент аддалі перавагу больш мэтанакіраваны згуртаванай суполкі.

Семінар быў арганізаваны, калі я правільна памятаю, у першую чаргу Джым Хайсмит і Боб Марцін. Яны звязаліся з людзьмі, якія на іх думку, актыўнасць у супольнасцях з гэтымі ж ідэямі і атрымалі семнаццаць з іх разам для семінара Snowbird. Першапачатковая ідэя была проста сабрацца і пабудаваць лепшае разуменне падыходаў адзін аднаго. Роберт Марцін імкнуўся атрымаць заяву, маніфест, які можа быць выкарыстаны, каб з’яднаць галіны за гэтых відаў тэхнікі. Мы таксама вырашылі, што хацелі выбраць імя дзейнічаць у якасці галаўнога назва для розных падыходаў.

У ходзе семінара мы вырашылі выкарыстоўваць «жывы» у якасці імя парасон, і прыдумаў значэнняў частцы маніфеста. У раздзеле прынцыпы пачалося на семінары, але ў асноўным распрацаваны на вікі пасля.

Намаганні выразна ударыў нерва, я думаю, мы ўсе былі вельмі здзіўлены тым, па ступені увагі і ўдзячнасці маніфест атрымаў. Хоць маніфест наўрад ці строгае вызначэнне гнуткай, яна дае факусоўкі заяву, што дапамагае засяродзіцца ідэі. Неўзабаве пасля таго як мы скончылі маніфест Джым Хайсмит і я напісаў артыкул для SD Magazine, які падаў некаторыя каментары да маніфесту.

У тым жа годзе, большасць з семнаццаці, які напісаў маніфест атрымаў зноў разам, з даволі шматлікімі іншымі, у OOPSLA 2001 года. Быў здагадку, што аўтары маніфест павінен пачаць некаторыя бягучых гнуткай рух, але аўтары пагадзіліся, што яны былі проста людзі, якім давялося апынуцца для гэтага семінара і вырабляюцца што маніфест. Там не было ніякай магчымасці, што гэтая група можа прэтэндаваць кіраўніцтва ўсёй гнуткай супольнасці. Мы дапамаглі запусціць карабель і павінны адпусціць яе для таго, хто, хто хацеў плыць у ёй, каб зрабіць гэта. Так што гэта было канцом з аўтараў семнаццаці маніфесту як арганізаванай цела.

Адзін наступны крок, які зрабіў прытрымлівацца, пры актыўным удзеле многіх з гэтых аўтараў, стала фарміраванне ўвішнага альянсу. Гэтая група з’яўляецца некамерцыйнай група мае намер прасоўваць і даследаваць гнуткія метады. Сярод іншага ён спансіруе штогадовую канферэнцыю ў ЗША.

XP (Extreme Programming)

У пачатку папулярнасці гнуткіх метадаў у канцы 1990-х, Экстрэмальнае праграмаванне быў той, які атрымаў ільвіную долю ўвагі. Шмат у чым гэта да гэтага часу.

Карані XP ляжаць у супольнасці Smalltalk, і ў прыватнасці ў цесным супрацоўніцтве Кент Бек і Уорд Канінгам ў канцы 1980-х. Абодва яны ўдасканальвалі свае практыкі ў шматлікіх праектах ць пачатку 90-х, пашыраючы свае ідэі падыходу распрацоўкі праграмнага забеспячэння, які быў і адаптыўнай і арыентаваная на людзей.

Кент працягваў развіваць свае ідэі ў ходзе кансалтынгавых абавязацельстваў, у прыватнасці, праект Chrysler C3, які з тых часоў стаў вядомы як стварэнне праекта экстрэмальнага праграмавання. Ён пачаў выкарыстоўваць тэрмін «экстрэмальнага праграмавання» прыблізна ў 1997 годзе. (С3 таксама адзначаны мой першы кантакт з экстрэмальнага праграмавання і пачаткам маёй дружбе з Кент.)

У канцы 1990-х гадоў слова распаўсюджвання праграмаванні Крайняй, першапачаткова праз апісанняў на групы навін і вікі Ward Канінгамам, дзе Кент і Рон Джеффрис (калега па С3) правёў шмат часу, тлумачачы і абмяркоўваць розныя ідэі. Нарэшце шэраг кніг былі апублікаваныя ў канцы 90-х і пачатку 00-х гадоў, якія ўвайшлі ў некаторых дэталях тлумачачы розныя аспекты падыходу. Большасць гэтых кніг узяў белы кнігу Кент Бек, як іх заснавання. Кент падрыхтавала другое выданне белай кнізе ў 2004 годзе, які быў істотным паўторна артыкуляцыя падыходу.

XP пачынаецца з пяці значэнняў (сувязь, сувязь, прастата, мужнасць і павага). Затым ён распрацоўвае іх у чатырнаццаці прынцыпаў і зноў на дваццаць чатыры практыкі. Ідэя складаецца ў тым, што практыка канкрэтныя рэчы, якія каманда можа зрабіць з дня ў дзень, у той час як значэнні фундаментальныя веды і разуменне таго, што ляжыць у аснове падыходу. Значэнні без практыкі цяжка ўжываць і могуць быць ужытыя ў многіх адносінах, што цяжка зразумець, з чаго пачаць. Практыка без каштоўнасцяў Ротэ дзейнасць без мэты. Абодва значэння і практыкі неабходныя, але ёсць вялікі разрыў паміж імі – прынцыпы дапамагчы пераадолець гэты разрыў. Многія з практыкі ХР старыя, выпрабаваных і правераных метадаў, але часта забываюць многія, у тым ліку найбольш запланаваных працэсаў. А таксама ўваскрасіць гэтыя метады, XP тчэ іх у сінэргічны цэлым, дзе кожны з іх армаванага іншых і дадзенай мэты значэннямі.

Адзін з самых яркіх, а таксама першапачаткова прывабным для мяне, з’яўляецца яго моцны акцэнт на тэставанні. У той час як усе працэсы кажучы тэставанне, большасць робяць гэта з даволі нізкай акцэнтам. Аднак XP ставіць тэставанне у аснове развіцця, з кожны праграміст пісаць тэсты, як яны пішуць свае вытворчыя код. Выпрабаванні інтэграваныя ў бесперапыннай інтэграцыі і працэсу зборкі што дае высока стабільную платформу для далейшага развіцця. Падыход XP тут, часта апісваецца пад загалоўкам Test Driven Development (TDD) быў ўплывовым нават у тых месцах, якія ня прынятых многае іншае з XP.

Там у шмат публікацый пра экстрэмальнага праграмавання. Адной з абласцей, блытаніны, аднак, з’яўляецца пераход паміж першым і другім выданнем белай кнізе. Я ўжо сказаў вышэй, што другое выданне з’яўляецца «зноў артыкуляцыя” экстрэмальнага праграмавання, у тым, што падыход з’яўляецца ўсё той жа, але гэта апісана ў іншым стылі. Першае выданне (з чатырох значэнняў, дванаццаці практыкі і некаторых важных, але ў асноўным-праігнараваныя прынцыпы) аказаў велізарны ўплыў на індустрыю праграмнага забеспячэння і большасць апісання экстрэмальнага праграмавання былі напісаны на аснове апісання першага выдання ў. Майце гэта на ўвазе, калі вы чытаеце матэрыял на XP, асабліва калі ён быў падрыхтаваны да 2005. Сапраўды большасць агульных вэб-апісанняў XP заснаваныя на першым выданні.

Натуральны адпраўной кропкай, каб даведацца больш гэта другое выданне белай кнізе. Гэтая кніга тлумачыць фон і практыкі XP на працягу кароткага (160 стар) пакета. Кент Бек рэдагаваць рознакаляровае серыю кніг па экстрэмальнага праграмавання на мяжы стагоддзяў, калі вымушаныя выбраць адзін, каб прапанаваць я пайшоў бы для фіялетавага адзін, памятаеце, што, як і большасць матэрыялу ён заснаваны на першым выданні.

Там вельмі шмат матэрыялу ў Інтэрнэце аб XP, але большасць з іх грунтуецца на першым выданні. Адзін з нямногіх апісанняў я ведаю, што ўлічвае другога выдання з’яўляецца дакумент аб The New XP (PDF) Мікеле Marchesi, які адбыўся арыгінальныя XP канферэнцыі ў Сардзініі. Для абмеркавання XP існуе спіс рассылання Yahoo.

Мой удзел у першыя дні і дружбы ў рамках супольнасці XP азначае, што ў мяне ёсць дакладнае знаёмства, любоў і ўхіл у бок XP. Я думаю, што яго ўплыў абавязаная ажаніцца прынцыпы гнуткай распрацоўкі з самавітым наборам метадаў для фактычна іх выкананне. Большая частка ранніх работ па Agile занядбаць апошняга, падымаючы пытанні аб тым, ці былі сапраўды можна спрытны ідэі. XP пры ўмове, інструменты, з дапамогай якіх надзеі спрыт маглі быць рэалізаваныя.

Бойка

Scrum таксама распрацаваў у 80-х і 90-х, перш за ўсё, з коламі развіцця ГА як высока ітэрацыйныя метадалогіі распрацоўкі. Гэта самыя вядомыя распрацоўшчыкі былі Кен Швабер, Джэф Сазерленд, і Майк Бідла.

Scrum канцэнтруецца на аспектах кіравання распрацоўкі праграмнага забеспячэння, падзяліўшы развіцця ў трыццаць дзён ітэрацый (званых ‘спрынт’) і прымянення больш дбайнага маніторынгу і кантролю з штодзённых сустрэч Scrum. Гэта ставіць значна менш увагі інжынерных практык і многія людзі аб’яднаць яго падыход да кіравання праектамі з інжынерна-тэхнічнай практыкі экстрэмальнага праграмавання ст. (Практыка кіравання ХР на самай справе не моцна адрозніваецца.)

Кен Швабер з’яўляецца адным з найбольш актыўных прыхільнікаў Scrum, яго вэб-сайт з’яўляецца добрым месцам, каб пачаць шукаць для атрымання дадатковай інфармацыі і яго кніга, верагодна, лепшы Першая згадка.
крышталь

Алістэр Коберн ўжо даўно з’яўляецца адным з галоўных галасоў у гнуткай супольнасці. Ён распрацаваў сям’ю Хрустальны метадаў распрацоўкі праграмнага забеспячэння як група падыходы, распрацаваныя з рознымі камандамі памеру. Крышталь разглядаецца як сям’і, таму што Алістэр лічыць, што розныя падыходы неабходныя ў якасці каманды адрозніваюцца па памеры і крытычнасці змяненняў памылак.

Нягледзячы на ​​іх варыяцый ўсё крыштальныя падыходы ёсць агульныя рысы. Усе метады крыштальныя ёсць тры прыярытэту: бяспека (у зыходзе праекта), эфектыўнасць, заселенасці (распрацоўшчыкі могуць жыць з крышталя). Яны таксама маюць агульныя ўласцівасці, з якіх найбольш важнымі тры з’яўляюцца: Частае Дастаўка, Святлоадбівальныя Удасканаленне і цесныя зносіны.

Прыярытэт заселенасці з’яўляецца важнай часткай крышталічнай мысленні. Просьба Алістера (як я гэта бачу) шукае тое, што найменшую колькасць працэсе вы можаце зрабіць і ўсё ж дамагчыся поспеху з асноўнай здагадцы нізкага дысцыпліны, якія непазбежныя з людзьмі. У выніку Алістэр бачыць Крышталь як патрабуе менш дысцыпліны, чым экстрэмальнага праграмавання, кампрамісу менш эфектыўнасць для большай заселенасці і зніжэнне шанцаў на правал.

Нягледзячы рысах Крышталя, няма усёабдымнае апісанне ўсіх яго праявах. Найбольш добра апісаны з’яўляецца Crystal Clear, якая мае сучасны апісанне кнігі. Існуе таксама вікі для далейшага матэрыялу і абмеркаванне Crystal.

Кантэкстнае Тэставанне

З самага пачатку гэта было распрацоўшчыкі праграмнага забеспячэння, якія былі ваджэння гнуткай супольнасць. Аднак многія іншыя людзі ўдзельнічаюць у распрацоўцы праграмнага забеспячэння і пакутуюць ад гэтага новага руху. Адным з відавочных такая група тэстараў, якія часта жывуць у свеце вельмі шмат, якая змяшчаецца на вадаспад мыслення. З агульных кіруючых прынцыпаў, якія заяўляюць, што роля тэставання для забеспячэння адпаведнасці праграмнага забеспячэння для авансавыя пісьмовых спецыфікацый, ролю тэстараў ў гнуткай свеце далёка не ясна.

Як аказалася, некалькі чалавек у выпрабавальнай супольнасці былі допыты шмат мэйнстрым тэставання мыслення, даволі доўгі час. Гэта прывяло да групы, вядомай як кантэкстна-прывадам тэставання. Лепшае апісанне Гэта кніга Урокі ў тэставанні праграмнага забеспячэння. Гэта супольнасць вельмі актыўна ў Інтэрнэце, зірніце на сайты, размешчаныя Браян Марікі (адзін з аўтараў Agile Manifesto), Бретт Pettichord, Джэймс Бах, і Сем Канер.

Ашчадная развіцця

Я памятаю, некалькі гадоў таму, даючы казаць пра гнуткіх метадаў на канферэнцыі па распрацоўцы ПА і гаварыць з нецярплівым жанчынай аб паралелі паміж гнуткіх ідэй і нішчымнага руху ў вытворчасці. Мэры Poppendieck (і муж Том) пайшлі далей быць актыўнымі прыхільнікамі гнуткай супольнасці, у прыватнасці, гледзячы на перакрыцці і натхнення паміж беражлівага вытворчасці і распрацоўкі праграмнага забеспячэння.

Худы рух у вытворчасці быў упершыню Тайити Яно на Toyota і часта вядомы як Toyota Production System. Ашчадная вытворчасць быў крыніцай натхнення для многіх ранніх agilists – у Poppendiecks з’яўляюцца найбольш прыкметным для апісання таго, як узаемадзейнічаюць гэтыя ідэі. Увогуле я вельмі насцярожана ставяцца да такога роду развагі па аналогіі, сапраўды інжынерная падзел паміж праектавання і будаўніцтва уцягнуў нас у гэтую блытаніну ў першую чаргу. Аднак аналогіі могуць прывесці да добрых ідэяў, і я думаю, што нішчымнае ідэі ўвялі шмат карысных ідэй і інструментаў у гнуткай руху.

Кнігі і вэб-сайце Poppendiecks “відавочныя адпраўныя кропкі для атрымання дадатковай інфармацыі.

(Rational) Unified Process

Іншы вядомы працэс, прыйшлі з аб’ектна-арыентаванага супольнасці з’яўляецца Rational Unified Process (часам проста называюць Unified Process). Арыгінальная ідэя ў тым, што, як UML уніфікаваных моў мадэлявання UP можа аб’яднаць праграмных працэсаў. З РУП з’явіліся прыкладна ў той жа час, што і гнуткіх метадаў, ёсць шмат дыскусій аб двух, ці сумяшчальныя.

РУП вельмі вялікая калекцыя практыкі, і гэта сапраўды аснова працэс, а не працэс. Замест таго, каб даць адзіны працэс для распрацоўкі праграмнага забеспячэння ён імкнецца забяспечыць агульны набор метадаў для каманд на выбар для асобнага праекта. У выніку першы крок каманды з дапамогай RUP павінны быць вызначыць свой індывідуальны працэс, або, як РУП называе, выпадак развіцця.

Ключавыя агульныя аспекты RUP з’яўляецца тое, што варыянт выкарыстання прывадныя (распрацоўка прыводзіцца праз бачных карыстачу функцый), паўтаральны, і архітэктура арыентаваных (ёсць прыярытэт пабудове архітэктуры рана, на якім будзе доўжыцца праект праз).

Мой досвед працы з RUP з’яўляецца тое, што яе праблема яго бясконцай зменлівасці. Я бачыў апісання выкарыстання RUP, якія вар’іруюцца ад жорсткай вадаспаду з «ітэрацый аналізу” прадставіць ідэальны Agile. Гэта мяне ўразіла, што жаданне людзей, каб прадаць RUP як адзіны працэс прывёў да выніку, дзе людзі могуць рабіць што заўгодна і называць гэта РУП – у выніку РУП быць бессэнсоўным фраза.

Нягледзячы на ўсё гэта ёсць некаторыя вельмі моцныя людзі ў РУП супольнасці, якія вельмі выраўнаваныя з гнуткай мыслення. Я быў уражаны ва ўсёй маёй сустрэчы з Філіпам Kruchten і яго кніга лепшая адпраўная кропка для RUP. Крэйг Ларман таксама распрацаваў апісанне працы з RUP ў гнуткай стылю ў сваёй папулярнай ўступнай кнізе па ГА дызайну.

Калі вы ідзяце гнуткай?

Выкарыстанне гнуткай метад не для ўсіх. Ёсць цэлы шэраг рэчаў, каб мець на ўвазе, калі вы вырашылі ісці па гэтым шляху. Аднак я, вядома, лічу, што гэтыя метадалогіі шырока ўжываюцца і павінны выкарыстоўвацца больш людзей, чым у цяперашні час іх разгледзець.

У сённяшніх умовах, найбольш распаўсюджаным метадалогія код і выправіць. Ужываючы больш дысцыпліны, чым хаос, амаль напэўна дапаможа і гнуткага падыходу мае тое перавага, што значна менш кроку, чым пры выкарыстанні ў суперцяжкай метад. Тут святло вага гнуткіх метадаў з’яўляецца перавагай. Больш простыя працэсы, хутчэй за ўсё, будуць зробленыя, калі вы прывыклі да ня працэсу наогул.

Для кагосьці новым для гнуткіх метадаў, пытанне ў тым, з чаго пачаць. Як і з любой новай тэхналогіі або працэсу, неабходна зрабіць свой ​​уласны ацэнку яго. Гэта дазваляе ўбачыць, як яна ўпісваецца ў вашай асяроддзі. У выніку вялікая частка маіх саветаў тут варта, што я даў для іншых новых падыходаў, вяртаючы ўспаміны, калі я быў першы размова аб метадах аб’ектна-арыентаваных.

Першы крок, каб знайсці прыдатныя праекты, каб паспрабаваць гнуткія метады с. З гнуткіх метадаў настолькі прынцыпова арыентаваны на людзей, вельмі важна, што вы пачынаеце з камандай, якая хоча паспрабаваць і працаваць у гнуткай чынам. Не толькі гэта неахвотна каманда цяжэй працаваць, накладання гнуткіх метадаў на неахвотна людзей у корані разыходзіцца з цэлай паняцці гнуткай распрацоўкі.

Гэта каштоўны таксама ёсць кліенты (тыя, хто мае патрэбу ў праграмнае забеспячэнне), якія хочуць працаваць у гэтым выглядзе сумеснага шляху. Калі кліенты не супрацоўнічаць, то вы не ўбачыце ўсе перавагі адаптыўнага працэсу. Сказаўшы, што мы знайшлі некалькі разоў, што мы працавалі з кліентамі, якія не хацелі супрацоўнічаць, але перадумалі на працягу першых некалькіх месяцаў, як яны пачалі разумець, гнуткага падыходу.

Шмат людзей сцвярджаюць, што спрытныя метады не могуць быць выкарыстаны на вялікіх праектах. Мы (ThoughtWorks) мелі добры поспех з гнуткіх праектах з каля 100 чалавек і некалькі кантынентаў. Нягледзячы на гэта я хацеў бы прапанаваць выбіраючы нешта меншае, каб пачаць з. Буйныя праекты па сутнасці сваёй больш цяжка ў любым выпадку, так што лепш, каб пачаць навучанне на праекце больш кіраванага памеру.

Некаторыя людзі раяць выбіраць праект з невялікім ўплыў на бізнес, каб пачаць з, такім чынам, калі нешта пойдзе не так, гэта значыць менш ўрону. Аднак усё роўна праект часта робіць дрэнны тэст, так як ніхто не клапоціцца шмат аб выніках. Я аддаю перавагу раіць людзям прымаць, што праект трохі больш крытычна, чым вы знаёмыя з.

Магчыма, найбольш важнае, што вы можаце зрабіць, гэта знайсці кагосьці больш дасведчанага ў гнуткіх метадаў, каб дапамагчы вам даведацца. Кожны раз, калі хто-то робіць нешта новае яны непазбежна здзяйсняюць памылкі. Знайдзіце чалавека, які ўжо зрабіў шмат памылак, каб вы маглі пазбегнуць тых самастойна. Зноў жа, гэта тое, што дакладна для любой новай тэхналогіі або тэхнікі, добры настаўнік варта яе вагу золата. Вядома гэты савет сам абслуговы паколькі ThoughtWorks і многія з маіх сяброў у галіны сапраўды настаўніцтва на гнуткіх метадаў. Гэта не змяняе таго факту, што я моцна веру ў важнасць знаходжання добрага настаўніка.

І як толькі вы знайшлі добры настаўнік, прытрымлівацца іх радам. Гэта вельмі лёгка да другога здагадцы многае з гэтага і я даведаўся з вопыту, што многія метады не могуць сапраўды быць зразумета, пакуль вы не зрабілі разумную спробу выпрабаваць іх. Адзін з лепшых прыкладаў, якія я пачуў, быў наш кліент, якія вырашылі пробнага экстрэмальнага праграмавання на пару месяцаў. На працягу гэтага перыяду яны далі зразумець, што яны будуць рабіць усё, што сказаў настаўнік – нават калі яны думалі, што гэта была дрэнная ідэя. У канцы гэтага выпрабавальнага тэрміну яны спыняцца і вырашыць, ці жадаюць яны, каб весці з любой з ідэй або вярнуцца да папярэдняй спосаб працы. (У выпадку, калі Вы задаваліся яны вырашылі весці з XP.)

Адзін з адкрытых пытанняў аб гнуткіх метадаў з’яўляецца, калі межавыя ўмовы ляжаць. Адна з праблем, з любой новай тэхнікі з’яўляецца тое, што вы сапраўды не ў курсе, дзе межавых умоў да перасячэння над імі і пацярпець няўдачу. Гнуткія метады яшчэ занадта маладыя, каб убачыць дастаткова мер, каб атрымаць пачуццё, дзе межы з’яўляюцца. Гэта яшчэ больш пагаршаецца тым, што гэта так цяжка вырашыць, што поспех і няўдача азначае ў распрацоўцы праграмнага забеспячэння, а таксама занадта шмат розных фактараў, якія лёгка прыціснуць крыніца праблем.

Так з чаго ж не выкарыстоўваць гнуткай метад? Я думаю, што гэта ў першую чаргу зводзіцца да народа. Калі людзі, залучаныя не зацікаўлены ў выглядзе інтэнсіўнага супрацоўніцтва, якія гнуткай працоўнай патрабуе, то гэта будзе вялікі барацьба, каб прымусіць іх працаваць з ім. У прыватнасці, я думаю, што гэта азначае, што вы ніколі не павінны спрабаваць навязаць гнуткай працу ў камандзе, якая не хоча, каб паспрабаваць яго.

Там было шмат вопыту працы з гнуткімі метадамі на працягу апошніх дзесяці гадоў. У ThoughtWorks мы заўсёды выкарыстоўваць гнуткага падыходу, калі нашы кліенты гатовыя, што вялікую частку часу яны знаходзяцца. Я (і мы) па-ранейшаму вялікія прыхільнікі гэтага спосабу працы.