Кодго ачуулануу: программисттер жана негатив

Кодго ачуулануу: программисттер жана негатив

Мен коддун бир бөлүгүн карап жатам. Бул мен көргөн эң начар код болушу мүмкүн. Маалыматтар базасындагы бир эле жазууну жаңыртуу үчүн, ал коллекциядагы бардык жазууларды чыгарып, андан соң маалымат базасындагы ар бир жазууга, жада калса жаңыланууга муктаж болбогондорго да жаңыртуу өтүнүчүн жөнөтөт. Карта функциясы бар, ал жөн гана ага берилген маанини кайтарат. Бир эле маанидеги өзгөрмөлөр үчүн шарттуу тесттер бар, жөн гана ар кандай стилде аталган (firstName и first_name). Ар бир ЖАҢЫРТУУ үчүн код башка серверсиз функция тарабынан башкарылган, бирок бир эле маалымат базасында башка коллекция үчүн бардык иштерди аткарган башка кезекке билдирүү жөнөтөт. Бул серверсиз функция айлана-чөйрөдө 100дөн ашык функцияны камтыган булутка негизделген "кызматка багытталган архитектурадан" экенин айттымбы?

Муну кантип жасоого мүмкүн болгон? Мен бетин жаап, күлүп ыйлап жибердим. Кесиптештерим эмне болгонун сурашат, мен аны түстөр менен айтып берем BulkDataImporter.js 2018-жылдын эң начар хиттери. Баары мага боор ооруп башын ийкеп, макул болушат: кантип бизге ушундай кылышты?

Терс: программист маданиятындагы эмоционалдык курал

Терс программалоодо маанилүү роль ойнойт. Ал биздин маданиятыбызга киргизилген жана биз үйрөнгөн нерселер менен бөлүшүү үчүн колдонулат ("сен эмес сен ишенесиң, бул код кандай болду экен!”), капалануу аркылуу боор ооруп билдирүү (“Кудай, ЭМНЕ УШУНДАЙ кыласың?”), өзүн көрсөтүү (“Мен эч качан болмок эмесмин”) ушундай кылган эмес»), күнөөлөөнү башка бирөөнүн мойнуна жүктөө («биз анын кодунан улам ишке ашпай калдык, аны сактоого мүмкүн эмес») же эң «уулуу» уюмдардагы адат боюнча, башкаларды башкаруу уялуу сезими ("Эмне жөнүндө ойлондуңуз эле?" ? Туура").

Кодго ачуулануу: программисттер жана негатив

Негатив программисттер үчүн абдан маанилүү, анткени бул баалуулукту жеткирүүнүн абдан натыйжалуу жолу. Мен бир жолу программалоо лагерине катыштым жана студенттерге өндүрүш маданиятын сиңирүүнүн стандарттуу практикасы мемдерди, окуяларды жана видеолорду берешендик менен берүү болчу, алардын эң популярдуусу эксплуатацияланган. адамдардын түшүнбөстүктөрүнө туш болгондо программисттердин нааразычылыгы. Жакшыны, Жаманды, Чиркинди, Антпе, Эч качан, Эч качан дегенди аныктоо үчүн эмоционалдык куралдарды колдоно билүү жакшы. Жаңы келгендерди IT чөйрөсүнөн алыс кесиптештери туура эмес түшүнүшү мүмкүн деп даярдоо керек. Алардын достору аларга миллион долларлык колдонмо идеяларын сата башташат. Алар бурчта бир топ минотаврлар менен эскирген коддун чексиз лабиринттерин аралап өтүүгө туура келет.

Программалоону биринчи жолу үйрөнгөндө, “программалоо тажрыйбасынын” тереңдигин түшүнүүбүз башка адамдардын эмоционалдык реакцияларына байкоо жүргүзүүгө негизделет. Бул посттордон ачык байкалат sabe ProgrammerHumor, бул жерде көптөгөн жаңы программисттер эс алышат. Көптөгөн тамашакөйлөр тигил же бул даражада ар кандай терс түстөр менен боёлот: көңүл калуу, пессимизм, ачуулануу, басынтуу жана башкалар. Бул сизге жетишсиз болуп көрүнсө, комментарийлерди окуңуз.

Кодго ачуулануу: программисттер жана негатив

Мен байкадым, программисттер тажрыйба топтогон сайын терс көрүнүштөр көбөйөт. Жаңы баштагандар, аларды кандай кыйынчылыктар күтүп турганын билбегендиктен, шыктануу жана бул кыйынчылыктардын себеби жөн гана тажрыйба жана билимдин жетишсиздигинен деп ишенүүгө даяр болуу менен башташат; жана акыр-аягында алар нерселердин чындыгы менен туш болушат.

Убакыттын өтүшү менен алар тажрыйбага ээ болушат жана жакшы кодду жамандан айырмалай алышат. Жана ошол учур келгенде, жаш программисттер, албетте, жаман код менен иштөөнүн нааразычылыгын сезишет. Ал эми командада (алыстан же жеке) иштешсе, алар көбүнчө тажрыйбалуу кесиптештеринин эмоционалдык адаттарын кабыл алышат. Бул көбүнчө негативдүүлүктүн көбөйүшүнө алып келет, анткени жаштар азыр код жөнүндө ойлонуп сүйлөп, аны жаман жана жакшы деп бөлүшө алышат, муну менен алар “билип калганын” көрсөтүшөт. Бул терс жагдайды дагы күчөтөт: көңүлү калгандыктан, кесиптештер менен тил табышып, топтун мүчөсү болуу оңой; Bad Code сындоо сиздин статусуңузду жана башкалардын алдында кесипкөйлүгүңүздү жогорулатат: терс пикирлерин билдирген адамдар көбүнчө акылдуу жана компетенттүү катары кабыл алынат.

Негативдүүлүктүн көбөйүшү сөзсүз эле жаман нерсе эмес. Программалоону талкуулоо, башка нерселер менен катар, жазылган коддун сапатына өзгөчө көңүл бурат. Код эмнеден турганы, ал аткара турган функцияны (аппараттык камсыздоо, тармактык ж.б. кошпогондо) толугу менен аныктайт, андыктан ал код жөнүндө өз пикириңизди билдире билүү маанилүү. Дээрлик бардык дискуссиялар коддун жетишээрлик деңгээлде жакшы экендигине жана эмоционалдык коннотациясы коддун сапатын мүнөздөгөн терминдер боюнча жаман коддун көрүнүштөрүн айыптоого келип чыгат:

  • "Бул модулда бир топ логикалык карама-каршылыктар бар, бул олуттуу аткарууну оптималдаштыруу үчүн жакшы талапкер."
  • "Бул модул абдан начар, биз аны рефакциялашыбыз керек."
  • "Бул модулдун мааниси жок, аны кайра жазуу керек."
  • "Бул модул начар, аны жамоо керек."
  • "Бул модуль эмес, кочкордун бир бөлүгү, аны такыр жазуунун кереги жок болчу, анын автору эмнени ойлоп жатат."

Айтмакчы, дал ушул "эмоционалдык релиз" иштеп чыгуучуларды кодду "сексуалдуу" деп аташына мажбурлайт, бул сейрек адилеттүү - сиз PornHubда иштебесеңиз.

Маселе, адамдар кызыктай, тынчы жок, эмоционалдуу жандыктар жана ар кандай эмоцияны кабыл алуу жана билдирүү бизди өзгөртөт: адегенде тымызын, бирок убакыттын өтүшү менен кескин түрдө.

Негативдүүлүктүн көйгөйлүү тайгак эңкейиши

Бир нече жыл мурун мен формалдуу эмес команданын жетекчиси болчумун жана иштеп чыгуучу менен маектештим. Бизге абдан жакты: ал акылдуу, жакшы суроолорду берчү, технологияны жакшы билген жана биздин маданиятка туура келет. Мен анын позитивдүүлүгүнө жана канчалык демилгелүү көрүнгөнүнө өзгөчө таң калдым. Анан мен аны жумушка алдым.

Ал кезде мен ишканада бир-эки жыл иштеп, маданиятыбыз анча эффективдүү эмес экенин сезчүмүн. Мен келгенге чейин биз эки жолу, үч жолу жана дагы бир нече жолу продукцияны чыгарууга аракет кылдык, бул кайра иштетүүгө чоң чыгымдарга алып келди, анын жүрүшүндө бизде узак түндөр, катуу мөөнөттөр жана иштеген буюмдардан башка эч нерсе көрсөткөн жок. Анан дагы эле катуу иштеп жатсам да, жетекчилик бизге берген акыркы мөөнөткө күмөн саначумун. Ал эми коллегаларым менен кодекстин айрым аспектилерин талкуулап жатканда кокусунан ант берди.

Ошентип, таң калыштуу болгон жок - мен таң калсам да - бир нече жумадан кийин ошол эле жаңы иштеп чыгуучунун мен кылган терс нерселерди айтканы (анын ичинде сөгүнүү). Башка маданияты бар башка компанияда өзүн башкача алып жүрөрүн түшүндүм. Ал жөн эле мен түзгөн маданиятка ыңгайлашкан. Мен күнөөлүү сезимге батып кеттим. Өзүмдүн субъективдүү тажрыйбамдан улам мен жаңы келген адамда пессимизмди пайда кылдым, аны мен таптакыр башкача кабыл алдым. Ал чындап эле андай эмес болсо да, жөн эле өзүнө ылайыктуу экенин көрсөтүү үчүн сырткы көрүнүшүн көрсөтүп жатса да, мен ага жаман мамилемди мажбурладым. Жана айтылгандардын баары, атүгүл тамаша иретинде да, өтмөктө болсо да, ишенген нерсеге айлануу жаман мүнөзгө ээ.

Кодго ачуулануу: программисттер жана негатив

Терс жолдор

Бир аз акылмандыкка жана тажрыйбага ээ болгон мурунку жаңы программисттерибизге кайрылып көрөлү: алар программалоо индустриясы менен жакшыраак таанышып, жаман код бардык жерде бар экенин түшүнүштү, андан качуу мүмкүн эмес. Бул сапатка багытталган эң өнүккөн компанияларда да кездешет (жана белгилеп кетейин: сыягы, заманбаптык жаман коддон коргобойт).

Жакшы сценарий. Убакыттын өтүшү менен иштеп чыгуучулар жаман код программалык камсыздоонун чындыгы экенин жана алардын милдети аны жакшыртуу экенин кабыл ала башташат. Эгер жаман коддон качуу мүмкүн болбосо, анда бул жөнүндө ызы-чуу кылуунун кереги жок. Алар өздөрүнө туш болгон көйгөйлөрдү же милдеттерди чечүүгө көңүл буруп, Zen жолун кармашат. Алар программалык камсыздоонун сапатын кантип так өлчөөнү жана бизнес ээлерине жеткирүүнү үйрөнүшөт, көп жылдык тажрыйбасынын негизинде негиздүү баа берүүлөрдү жазып, акырында бизнес үчүн укмуштуудай жана үзгүлтүксүз баалуулугу үчүн берешен сыйлыктарды алышат. Алар өз ишин ушунчалык жакшы аткаргандыктан, аларга 10 миллион доллар сыйлык алып, өмүр бою каалагандай иш кылуу үчүн пенсияга чыгышат (суранам, муну жөн эле кабыл албагыла).

Кодго ачуулануу: программисттер жана негатив

Дагы бир сценарий – караңгылыктын жолу. Жаман кодду сөзсүз түрдө кабыл алуунун ордуна, иштеп чыгуучулар аны жеңүү үчүн программалоо дүйнөсүндөгү бардык жаман нерселерди чакырууну өздөрүнө алышат. Алар көптөгөн жүйөлүү себептерден улам бар жаман кодду жакшыртуудан баш тартышат: "адамдар көбүрөөк билиши керек жана мынчалык келесоо болбошу керек"; "бул жагымсыз"; "Бул бизнес үчүн жаман"; "Бул менин канчалык акылдуу экенимди далилдеп турат"; "Эгер мен сага бул кандай жаман код экенин айтпасам, бүт компания океанга кулап кетет" ж.б.у.с.

Албетте, алар каалаган өзгөрүүлөрдү ишке ашыра алышпайт, анткени бизнес тилекке каршы өнүгүп кетиши керек жана коддун сапаты жөнүндө тынчсызданууга убакыт коротпойт, бул адамдар арыздануучу катары кадыр-баркка ээ болушат. Алар жогорку компетенттүүлүгү үчүн сакталып, бирок компаниянын четине сүрүлүп, анда алар көп адамдарды кыжырдантпай, бирок дагы эле критикалык системалардын иштешин колдошот. Өнүктүрүүнүн жаңы мүмкүнчүлүктөрүнө жетпесе, алар көндүмдөрүн жоготуп, өнөр жайдын талаптарын канааттандырбай калышат. Алардын терс жагы ачуу ачууга айланат, натыйжада алар жыйырма жаштагы студенттер менен өздөрүнүн сүйүктүү эски технологиясы басып өткөн жол жана эмне үчүн али дале ысык экени жөнүндө талашып, өздөрүнүн эголорун тойгузушат. Алар пенсияга чыгып, канаттууларды сөгүп карылык менен жашашат.

Чындык, балким, бул эки чектин ортосунда жатат.

Кээ бир компаниялар өтө терс, ээн-эркин, эрктүү маданияттарды түзүүдө абдан ийгиликтүү болушкан (мисалы, буга чейин Microsoft жоголгон он жыл) - көбүнчө бул рынокко эң сонун туура келген жана мүмкүн болушунча тезирээк өсүү зарылдыгы бар өнүмдөрү бар компаниялар; же командалык жана башкаруу иерархиясы бар компаниялар (Apple Жобстун эң жакшы жылдарында), бул жерде ар бир адам өзүнө айтылган нерсени кылат. Бирок, бизнести заманбап изилдөөлөр (жана акыл-эстүүлүк) компанияларда инновацияга жана жеке адамдарда жогорку өндүрүмдүүлүккө алып келген максималдуу тапкычтык үзгүлтүксүз чыгармачылык жана методикалык ой жүгүртүүнү колдоо үчүн стресстин төмөн деңгээлин талап кылат деп болжолдойт. Жана эгер сиз кесиптештериңиз кодуңуздун ар бир сабы жөнүндө эмне айтышы керек деп дайыма тынчсызданып жатсаңыз, чыгармачыл, талкууга негизделген ишти аткаруу өтө кыйын.

Терс инженердик поп маданият болуп саналат

Бүгүнкү күндө инженерлердин мамилесине мурдагыдан да көбүрөөк көңүл бурулууда. Инженердик уюмдарда эреже «Мүйүз жок". Твиттерде бул кесипти таштап кеткен адамдар жөнүндө уламдан-улам көбүрөөк анекдоттор жана окуялар пайда болууда, анткени алар сырттан келгендерге карата кастык жана жаман ниет менен туруштук бере албагандыктан (болбойт). Ал тургай, Линус Торвалдс жакында кечирим сурады башка Linux иштеп чыгуучуларына каршы көп жылдар бою кастык жана сын - бул ыкманын натыйжалуулугу жөнүндө талаш-тартыштарга алып келди.

Кээ бирлери дагы эле Линустун абдан сынга алуу укугун коргошот - кимдир-бирөөлөр "уулуу негативдин" артыкчылыктары жана кемчиликтери жөнүндө көп билиши керек. Ооба, маданияттуулук өтө маанилүү (ал тургай фундаменталдуу), бирок, эгерде биз көбүбүздүн терс ой-пикирлерди билдирүүгө «уулуучулукка» айланышынын себептерин жыйынтыктай турган болсок, бул себептер патерналисттик же өспүрүмдүк сезилет: «Алар буга татыктуу, анткени алар акмактар. ", "ал алар муну кайра кылбайт деп ишенсе керек", "эгер алар муну жасабаса, аларга кыйкырбаш керек болчу" ж.б.у.с. Лидердин эмоционалдык реакцияларынын программалоо коомчулугуна тийгизген таасиринин мисалы катары Ruby коомчулугунун MINASWAN аббревиатурасы саналат - "Матц жакшы, ошондуктан биз жакшыбыз".

Мен "акылсызды өлтүрүү" ыкмасынын көптөгөн жалындуу жактоочулары көбүнчө коддун сапаты жана тууралыгы жөнүндө абдан кам көрүшөрүн байкадым. Тилекке каршы, алар көбүнчө катуулукту катаалдуулук менен чаташтырышат. Бул позициянын кемчилиги жөнөкөй адамдык, бирок өзүн башкалардан жогору сезүү жемишсиз каалоосунан келип чыгат. Бул каалоого чөмүлгөн адамдар караңгылыктын жолуна тыгылып калышат.

Кодго ачуулануу: программисттер жана негатив

Программалоо дүйнөсү тездик менен өсүп жатат жана өзүнүн контейнеринин чектерине – программаланбаган дүйнөгө каршы түртүп жатат (же программалоо дүйнөсү программаланбаган дүйнө үчүн контейнерби? Жакшы суроо).

Биздин өнөр жайыбыз барган сайын өсүп жаткан темп менен кеңейип, программалоо жеткиликтүү болуп жаткандыктан, "технологиялар" менен "нормалдуулардын" ортосундагы аралык тездик менен жабылууда. Программалоо дүйнөсү алгачкы технологиялык бумдун обочолонгон нерд маданиятында чоңойгон адамдардын инсандар аралык өз ара аракеттенүүсүнө көбүрөөк дуушар болууда жана дал ошолор программалоонун жаңы дүйнөсүн түзүшөт. Кандайдыр бир социалдык же муундук аргументтерге карабастан, капитализмдин атынан эффективдүүлүк компаниянын маданиятында жана жалдоо практикасында көрүнөт: эң мыкты компаниялар башкалар менен бейтарап мамиле түзө албаган, жакшы мамиледе боло албаган адамдарды жумушка албайт.

Негатив жөнүндө эмнени билдим

Эгерде сиз өтө көп негативге акылыңызды жана адамдар менен болгон мамилеңизди башкарууга жол берсеңиз, анда бул өнүмдөрдүн командалары үчүн коркунучтуу жана бизнес үчүн кымбат. Мен көптөгөн долбоорлорду көрдүм (жана алар жөнүндө уктум) талкаланып, толугу менен кайра курулган көптөгөн долбоорлорду көрдүм, анткени бир ишенимдүү иштеп чыгуучунун технологияга, башка иштеп чыгуучуга же бүтүндөй код базасынын сапатын көрсөтүү үчүн тандалган бир файлга кек сактагандыктан .

Негативдик мамилени да начарлатып, бузуп салат. Бир кесиптешим CSSти туура эмес файлга салганым үчүн мени урушканы эсимден кетпейт, бул мени капа кылып, бир нече күн ойлорумду чогултууга мүмкүнчүлүк берген жок. Келечекте мен мындай адамдын менин командаларымдын бирине жакын болушуна жол бербейм (бирок ким билет, адамдар өзгөрөт).

Акыр-аягы, терс түз маанисинде ден-соолукка зыян келтирет.

Кодго ачуулануу: программисттер жана негатив
Жылмайуу боюнча мастер-класс ушундай болуш керек деп ойлойм.

Албетте, бул бакыттын нурун чачуунун, ар бир тартуу өтүнүчүнө он миллиард смайликтерди киргизүүнүн же жылмаюу боюнча мастер-класска баруунун пайдасына аргумент эмес (жок, эгер сиз кааласаңыз, анда суроо жок). Негативдүүлүк программалоонун (жана адамдык жашоосунун) өтө маанилүү бөлүгү болуп саналат, сапатты белгилөөчү, сезимдерин билдирүүгө жана башка адамдар менен мамиле кылууга мүмкүндүк берет. Негатив кыраакылык менен кыраакылыкты, маселенин тереңдигин көрсөтөт. Мен көп учурда иштеп чыгуучу жаңы деңгээлге жеткенин байкайм, ал мурда тартынчаак жана ишенбеген нерсеге ишенбестигин билдире баштаганда. Адамдар өз ой-пикири менен акылга сыярлык жана ишеним көрсөтүшөт. Терс көрүнүштү четке кагууга болбойт, бул Оруэллиан болмок.

Бирок, негатив адамдын башка маанилүү сапаттары менен тең салмактуу болушу керек: эмпатия, чыдамкайлык, түшүнүү жана юмор. Адамга кыйкырбай, сөгүнүп-сөгүнбөстөн эле, ал бузуп салганын дайыма айта аласыз. Бул ыкманы баалабаңыз: эгер кимдир бирөө эч кандай эмоциясыз эле сизди олуттуу бузуп койдум деп айтса, бул чындап эле коркунучтуу.

Ошол убакта, бир нече жыл мурун, башкы директор мени менен сүйлөшкөн. Долбоордун азыркы абалын талкууладык, анан ал менин сезимдеримди сурады. Мен жооп бердим, баары жакшы, долбоор алдыга жылып жатат, биз жай иштеп жатабыз, балким, мен бир нерсени өткөрүп жибердим, кайра карап чыгуу керектир. Ал менин кеңседеги кесиптештерим менен көбүрөөк пессимисттик ойлорду айтканымды укканын жана муну башкалар да байкашканын айтты. Ал эгер менде шектенүү болсо, мен аларды жетекчиликке толугу менен билдире аларымды, бирок "аларды түшүрбөйм" деп түшүндүрдү. Жетектөөчү инженер катары менин сөздөрүм башкаларга кандай таасир этээрин эске алышым керек, анткени мен муну байкабасам да таасирим көп. Ал мага ушунун баарын абдан жылуу айтып, акырында мен чындап эле ошондой сезилсем, анда мен өзүмө жана карьерамга эмне каалап жатканымды ойлонушум керек деп айтты. Бул укмуштуудай жумшак маек болду, ал же болбосо ордуңдан туруп. Мен ага алты ай бою өзгөргөн мамилем мага байкалбаган башкаларга кандай таасир эткени тууралуу маалыматы үчүн ыраазычылык билдирдим.

Бул укмуштуудай, эффективдүү башкаруунун жана жумшак мамиленин күчүнүн мисалы болду. Мен компанияга жана анын максаттарына жетүү жөндөмдүүлүгүнө толук ишенгендей көрүнгөнүмдү түшүндүм, бирок чындыгында мен башкалар менен таптакыр башкача сүйлөшчүмүн жана баарлаштым. Ошондой эле, мен иштеп жаткан долбоорго ишенбестик менен мамиле кылсам да, кесиптештериме сезимдеримди көрсөтүп, пессимизмди жугуштуу оору катары жайылтпоо керек экенин түшүндүм. Тескерисинче, мен жетекчиликке чыныгы абалды агрессивдүү түрдө жеткире алмакмын. А эгер мени укпай жатышканын сезсем, компаниядан чыгып, макул эместигимди билдире алмакмын.

Мен кадрларды баалоо боюнча жетекчи кызматка киришкенде жаңы мүмкүнчүлүк алдым. Мурунку башкы инженер катары мен (ар дайым жакшырып келе жаткан) эски кодексибиз боюнча өз оюмду айтууга өтө этиятмын. Өзгөртүүлөрдү кабыл алуу үчүн сиз учурдагы абалды элестетүүңүз керек, бирок онтосоңуз, кол салууга же башка ушул сыяктуу нерселерге көңүл бурсаңыз, эч нерсеге жете албайсыз. Акыр-аягы, мен бул жерде тапшырманы аткаруу үчүн келдим жана аны түшүнүү, баалоо же оңдоо үчүн кодго нааразы болбошум керек.

Чындыгында, мен кодго болгон эмоционалдык реакциямды канчалык көзөмөлдөсөм, анын эмне болуп кетиши мүмкүн экенин ошончолук жакшы түшүнөм жана башаламандык азаят. Мен өзүмдү токтоолук менен билдиргенде («мындан ары жакшыртуу үчүн бул жерде орун болушу керек»), мен өзүмдү жана башкаларды кубантып, кырдаалга өтө олуттуу караган жокмун. Мен кемчиликсиз (таарынычтуу?) акылга сыярлык (туура айтасыз, бул код абдан начар, бирок биз аны жакшыртабыз») менен башкалардагы терс көрүнүштөрдү стимулдап, азайта аларымды түшүндүм. Мен Zen жолунда канчалык алыс бара аларымды көргөнүмө кубанычтамын.

Негизи мен тынымсыз бир маанилүү сабакты үйрөнүп, кайра үйрөнүп жатам: жашоо тынымсыз ачуулануу жана кыйналуу үчүн өтө кыска.

Кодго ачуулануу: программисттер жана негатив

Source: www.habr.com

Комментарий кошуу