Proqramlaşdırma Səyahətimdə İmtina Etdiyim 5 Vərdiş
Proqramlaşdırma ilə uzun müddət məşğul olduqda bir şeyi görürsən: nə qədər çox bilsən də, bəzən ən real inkişaf məhz nəyi (və ya nələri) etməyi dayandıranda başlayır. Mən öz təcrübəmdə müxtəlif texnologiyalarla, fərqli komanda mühitlərində və ayrı-ayrı layihələrdə işləmişəm. Amma zamanla anladım ki, bunlardan da vacibi var: yanaşma və düşüncə tərzi.
Bu yazını yazarkən əvvəlcə mövzunu texniki detallarla izah etmək istədim. Sonra fikrimi dəyişdim. Çünki burada bölüşəcəyim məqamlar, oxuyanların təcrübəsindən asılı olmayaraq, daha çox real iş həyatında uzun müddət mənə yol göstərən müşahidələrdir. Məqsədim konkret bir şey etməyi öyrətmək deyil; sadəcə öz təcrübəmdən çıxardığım nəticələri səmimi şəkildə paylaşmaqdır.
1) “Ağıllı görünən” kod yazmaqdan imtina etdim
Bir vaxtlar, xüsusən də ilk başladığım dövrlərdə (təxminən 7–8 il əvvəl), mənim üçün yaxşı proqramçı olmaq “daha ağıllı” kod yazmaq demək idi. Qısa, mürəkkəb, təəccübləndirici və başqalarının dərhal başa düşmədiyi kodlar yazırdım. O zaman bunu sanki bilik göstəricisi sayırdım.
Halbuki kod yalnız sənin üçün deyil; gələcəkdə onu oxuyacaq proqramçılar və yeni komanda yoldaşları üçün də yazılır. Belə kodlar ilk baxışda uğurlu görünə bilər, amma altı ay sonra geri qayıdanda niyə məhz belə yazıldığını anlamaq çətinləşir.
Ona görə də mən indi “ağıllı görünən” koddansa “açıq və sadə” koda üstünlük verirəm. Parametrlər, dəyişənlərin adları, funksiyalar — ümumən hər şey — oxuyanın rahat başa düşəcəyi şəkildə olmalıdır. Çünki praktikada insanlar ən son qərarı verir[^anlışan kodlar isə nəin ki insanlara, həm də LLM-lərə kömək edir].
2) Hər problemi ideal həll etməyə çalışmaqdan imtina etdim
Bir müddət hər problemi mükəmməl həll etmək istəyirdim: optimal, yenidən istifadə oluna bilən, gələcək dəyişiklikləri asanlaşdıran, hər tərəfi düşünülmüş bir həll. Sanki hər şey həmişə eyni qalacaqmış kimi davranırdım.
Reallıq isə başqa cürdür. Layihələr dəyişir, tələblər dəyişir, prioritetlər tez-tez yerini dəyişir. Bəzən ən yaxşı həll “yetərincə yaxşı” olandır.
Bu düşüncə mənə mərhələli yanaşma gətirdi: əvvəlcə problemi minimal və işlək bir həll yolu ilə bağlamaq, sonra ehtiyac yarandıqca genişləndirmək. Çünki çox vaxt mükəmməldən daha qiymətlisi işləyən, başa düşülən və dəyişdirilə bilən həll olur.
3) “Best practice”ləri kontekstdən kənar tətbiq etməkdən imtina etdim
İnternetdə “best practice” mövzusunda çox yazı var. Şübhəsiz ki, bu qaydaların bir çoxu faydalıdır. Amma onların heç biri kontekstdən kənarda hər yerdə eyni nəticə vermir.
Mən indi yeni bir “best practice” görəndə onu dərhal tətbiq etmirəm. Əvvəlcə düşünürəm: bunun arxasındakı məqsəd nədir və bu, bizim konkret vəziyyətimizdə həqiqətən işləyəcəkmi?
Qaydanı yox, səbəbi anlamaq vacibdir. Çünki “düzgün” yanaşma çox vaxt situasiyadan, komandanın təcrübəsindən, məhsulun mərhələsindən və risklərdən asılı olur.
4) Yeni texnologiyanı məqsəd kimi görməkdən imtina etdim
Əvvəllər yeni bir şey çıxan kimi onu öyrənmək istəyirdim; “yeni texnologiya, yeni imkanlar” deyə düşünürdüm. Zamanla anladım ki, texnologiya məqsəd deyil, sadəcə bir alətdir.
Əgər yeni alət problemi daha yaxşı, daha sadə və daha az xəta ilə həll etmirsə, onu seçmək üçün güclü səbəb yoxdur. Bəzən ən düzgün seçim klassik, çox istifadə olunmuş və hamının yaxşı tanıdığı texnologiyadır.
Bu da mənə texnologiya seçimində daha sakit və daha yetkin olmağı öyrətdi: “hype” yox, sabit sistemlər lazımdır.
5) Təkbaşına hər şeyi həll etməyə çalışmaqdan imtina etdim
Komanda mühitində uzun müddət təkbaşına “çəkib aparmaq” istəyi yaranır. Mən də ilk illərdə sual verməyi, başqalarının fikrini soruşmağı zəiflik kimi görürdüm.
Amma vaxt keçdikcə başa düşdüm ki, əslində sual vermək və paylaşmaq problemləri həll etməyin ən güclü yollarındandır. Bir problemin neçə fərqli həllinin ola biləcəyini görmək, səhvləri daha tez tutmaq və daha sağlam qərarlar vermək üçün fikir mübadiləsi vacibdir.
Açıq mənbə və bilik paylaşımı mövzusunda Barışın Salam, kodlar.az yazısını oxumağı tövsiyə edirəm.
Son söz
Bu beş vərdişdən imtina etdikcə mənə bir şey daha aydın oldu: yaxşı proqramçı çox kod yazan deyil. Onun əsas gücü düzgün qərar vermək bacarığındadır. Hansı işi əvvəl görmək, hansını gözlətmək, harada sadə qalmaq və harada dərinə getmək lazım olduğunu seçmək, çox vaxt texniki detallardan daha müəyyənedici olur.
Bu yazıda paylaşdıqlarım indiyə qədərki təcrübəmin nəticəsidir. Ola bilsin, gələcəkdə bu baxışlar yenə dəyişsin. Amma bu günkü fikrim budur: proqramlaşdırmada inkişaf etdikcə məsələ “daha çox kod yazmaqdan” deyil, “daha yetkin düşünməkdən” ibarət olur.
Əgər oxuyarkən sən də öz təcrübənə hansısa bənzərlik hiss etdinsə, deməli, bu yazı məqsədinə çatdı.
// terminlər
- açıq mənbə open source
- Mənbə kodu ictimaiyyət üçün açıq olan və sərbəst istifadəyə yararlı proqram təminatı modeli.
- ↗ Ətraflı
- böyük dil modelləri large language models
- Böyük həcmdə mətn məlumatları ilə öyrədilmiş, təbii dili anlayan və yaradan süni intellekt modelləri.
// şərhlər