Մեղսավոր ծրագրավորող

Իմ կարծիքով ցանկացած ծրագավորող, եթե ունի ծրագրավորման գոնե մի քանի տարվա փորձ, գիտի ինչպես լավ կոդ գրել։

Գիտի, բայց արդյո՞ք իմանալը նշանակում է կիրառել։ Կարծում եմ ոչ։ Իսկ ի՞նչն է պատճառը։ Եթե գիտես ինչպես է պետք անել, որ լավ լինի, ի՞նչու այդպես չես անում։

Տարբեր պատճառներ կարող են լինել և այս հոդվածում կփորձեմ անդրադառնալ այն բոլոր պատճառաբանություններին, որոնց հանդիպել եմ, որոնք հենց իմ մոտ են ի հայտ եկել, կամ որոնցով ուրիշներն են արդարացել։

Նոր եմ տեղափոխվել այս թիմ

Թիմին և նախագծին անծանոթ լինելը կարող է ինքնաթերագնահատում առաջացնել ծրագրավորողի մոտ։ Նա կարող է ակնհայտ սխալներ տեսնել կոդի մեջ, սակայն չուղղել և չբարձրաձայնել դրանց մասին, քանի որ նոր է սկսել աշխատել տվյալ նախագծի վրա և ինքնավստահությունը դեռ բավականին ցածր է։ Արդյունքում, ավելացնելով կոդի իր հատվածը արդեն սխալ գրված կոդի վրա, ավելի է բարդացնում իրավիճակը։

Իհարկե սա չի վերաբերվում բոլորին, սա ավելի շատ կախված է տվյալ մարդու բնավորությունից։ Կա նաև հակառակ երևույթը, երբ ինչ-որ մեկը գալիս է թիմ ու առաջին իսկ օրվանից տեղին-անտեղին քննադատություններ է անում կոդի հետ կապված։

Գործ չունեմ, կփչացնեմ

Հաճախ են պատահում դեպքեր, երբ ստիպված ես լինում աշխատել կոդի ինչ-որ հին կտորի վրա, որից ոչ ոք տեղյակ չէ։ Չնայած նրան, որ կոդը ակնհայտորեն լավացման կարիք ունի, ծրագրավորողները հիմնականում չեն անում դա պատճառաբանելով, որ դա կարող է ազդել կոդի այլ հատվածների վրա և խափանել ամբողջ ծրագրի աշխատանքը։ Այս իրավիճակում միանշանակալիորեն հնարավոր չէ քննադատել տվյալ ծրագրավորողին, քանի որ անհանգստությունը կարող է և տեղին լինել։ Որոշումը՝ լավացնել, թե՞ թողնել այնսպես ինչպես կա, կամ միգուցե ավելի վատացնել, կարող է կախված լինել տարբեր գործոններից։ Օրինակ՝

Վերջին շաբաթն եմ այստեղ

Մի քանի ընկերություններ փոխելու փորձից ելնելով՝ կարող եմ հստակ պնդել, որ վերջին օրերին ընդհանրապես ցանկություն չի լինում գործի հետ կապված որևէ բան անել։ Սակայն դա ոչ մի կերպ չի արդարացնում այն, որ ծրագրավորողը աշխատանքից ազատվելու դիմում ներկայացնելով՝ վերջին օրերին բավականին անորակ կոդ է գրում։

Դա նախ և առաջ անարգանք է նրա թիմակիցների նկատմամբ, քանի որ իրենից հետո նրանք են թերությունները վերացնելու։

ԵՎ, ընդհանրապես, կարծում եմ դա ցույց է տալիս տվյալ մարդու ցածր պրոֆեսիոնալիզմն ու մարդկայնությունը։

Կոդի վերանայման բացակություն

Լինում են դեպքեր, երբ թիմում որևէ կոդի վերահսկում ընդհանրապես չի կատարվում։ Յուրաքանչյուրը գրում է իր կոդը այնպես, ինչպես ուզում է։

Արդյունքում կոդի որակը ամբողջությամբ դրվում է ծրագրավորողների խղճի վրա։

Ինչպես փորձը ցույց է տալիս, ոչ բոլորն են թիմում լինում բարեխիղճ։ Շատերը մի փոքր ավել ժամանակ չեն տրամադրում ավելի լավ կոդ գրելու համար, փոխարենը մտածում են «դե կարևորը աշխատի, հավես չկա այդքան մանրակրկիտ գրելու»։

Իմացածի գերագնահատում

Կոդի որակը ուղղակիորեն կախված է մեկ այլ գործոնից ևս։ Կան մարդիկ ովքեր գերագնահատում են իրենց փորձն ու գիտելիքները և արդյունքում գրում ընդհանուրին անհամահունչ կոդ։ Դա կարող է արտահայտվել տարբեր ձևերով։

Օրինակ՝

Շտապեցնում են

Լինում են նաև դեպքեր երբ ծրագրավորողը սրտանց ցանկանում է որակյալ կոդ գրել, սակայն անընդհատ շտապեցնելու պատճառով ստիպված է լինում արագ և վատ լուծումներ գտնել։ Բիզնեսի տեսանկյունից հնարավոր է դա ճիշտ է, բայց սեփական փորձից ելնելով կարող եմ ասել, որ դա միայն բարդացնում է հաջորդիվ խնդիրների լուծումը և, միգուցե, որոշ առումով դարձնում անհնար։

Փոփոխականություն

Բիզնես թիմի կողմից պահանջների անընդհատ փոփխությունը ստեղծում է խառնաշփոթ կոդում։

Նման դեպքեր շատ է հանդիպում ստարտափներում, երբ ամեն ինչ նախապես մտածված չի լինում։ Բիզնես պահանջների կտրուկ փոփոխությունները ստիպում են ծրագրավորողներին փոփոխել արդեն գոյություն ունեցող ճարտարապետությունը, կամ ինչ-որ ձևով նոր պահանջները հարմարեցնել դրա հետ։

Կոնֆլիկտից խուսափել

Կան թիմեր, որտեղ բոլոր ծրագրավորողները վերանայում են բոլորի կոդերը։

Կան նաև թիմեր, որտեղ ավելի փորձառուները վերանայում են ավելի քիչ փորձ ունեցողների կոդերը։

Երկու դեպքում էլ վերանայողի մոտ կարող է կոնֆլիկտից խուսափելու զգացողություն առաջանալ։ Նա կարող է աչք փակել որոշ ակնհայտ թերությունների վրա՝ մտածելով, որ կոդի հեղինակը կարող է նեղանալ, կամ կարող է վատ տրամադրվել իր նկատմամբ։

վերջ…