21 качества на успешния програмист

Стремиш се да станеш успешен програмист. Виж какви качества трябва да развиваш у себе си за целта

Всеки от нас в продължение на съзнателния си живот си създава или изоставя навици: някои са му от полза, други – не. Навиците формират качествата на личността. Ако решиш да се занимаваш с програмиране и разработка на софтуер, за да придобиеш качества като ефективност, големи технически умения и бляскаво изпълнение на задачите, трябва да поработиш задълбочено върху своите навици и умения. В следващите редове ще поразсъждавам за някои умения и качества на успешния програмист и разработчик, които му помагат да достига високи нива на ефективност и професионализъм.

Запомни най-главното: Определи колко значими са твоите цели и колко силна е твоята мотивация да достигнеш висока продуктивност, ефективност и израстване в професията.

Качества на успешния програмист

Умения и качества на успешния програмист

Съдържание
  1. Умения и качества на успешния програмист
  2. Заключение

Кои са тези умения – само способността за писане на чист код, системното мислене, работа със системи за контрол на версии ли? Независимо от посоката на развитие и използваните технологии, има редица други качества, заради които един разработчик на софтуер е търсен.

Избор на режим на фокусиране и дифузия

Нашият мозък, който е мрежа от неврони, може да функционира в два режима: на фокусиране и на дифузия.

При фокусирано мислене, мозъкът обработва много специфична информация задълбочено. Използва неврони, разположени наблизо. Този начин на мислене се използва при решаване на определен алгоритмичен проблем, задача.

Дифузният начин на мислене не се случва само в една област на мозъка. С дифузно мислене мозъкът анализира много повече информация наведнъж, но в по-малка дълбочина. Този начин на мислене се използва в моменти на креативност. Той позволява да се правят аналогии, да се разглежда проблема всеобхватно, отгоре и отстрани и да се намерят нестандартни решения.

Не можеш да бъдеш в двете състояния едновременно. Научи се да ги контролираш и да ги използваш в точния за това момент.

Дисциплината е голям приятел

Талантът не е всичко, а само част от процеса на изпълнение.

Не можеш да научаваш или разработваш много нови неща за един ден. Тези дейности трябва да са редовни на поносими порции, съпроводени с качествена почивка и сън. Дисциплината е тази, която ще те научи да работиш по-рационално, а не просто интензивно.

В какво се изразява дисциплината?

Една често случваща се ситуация: Когато се заемеш със задача, която всъщност не ти харесва, която е досадна или ти изглежда много трудна, твоята невронна мрежа и психика изпитват дискомфорт. Ролята на дисциплината тук е следната: Дискомфортът бързо изчезва, ако си настоятелен да разрешиш задачата или трудния проблем.

Тук се доближаваме и до въпроса с…

Отлагането (прокрастинацията) не е добър приятел

Първо да разберем какво става в мозъка на човек, който отлага задачите.

При прокрастинация в мозъка бушува вътрешна битка. Отаначало той се опитва да измисли причина, че няма нищо страшно, ако първо изгледа серия от “Военни престъпления”, а после се заеме с бъга в програмата, която трябва да бъде предадена на следващия ден. Но веднага му идва мисълта, че трябва да попълни годишната декларация за доходите – крайният срок е след седмица. След това идва изкушението да провери още един път Facebook, Instagram или Twitter. А после веднага напира мисълта, че трябва да подготви и презентацията на софтуера.

Това всъщност е борбата между лимбичната система и префронталния кортекс на мозъка.

Лимбичната система е емоционалната, инстинктивна част на мозъка. В нея се намира центърът на удоволствието. Това е най-древната част от мозъка, която съществува и у животните. Тя подтиква към инстинктивни действия, увлича индивида да се поддаде на емоциите и изкушенията. Точно тази част от мозъка те подтиква да отложиш поправката на кода, върху който работиш.

Лимбична система
Лимбична система – оцветената в оранжево част. Източник Wikipedia

Префронталният кортекс е логическият отдел на човешкия мозък – именно той те заставя да се концентрираш и да поправиш бъга в програмата. Тази част от мозъка отговаря за логиката, разума и концентрацията върху целите.

Ако изпълняваш редовно задачите си, които те водят към твоите цели – значи е победил префронталният кортекс. Ако често отлагаш, под предлог, че трябва да догледаш някои филм, да початиш с приятели, да прегледаш пощата още веднъж – значи победата е на лимбичната система. Изборът между двете е този, който определя твоите качества на добър или не толкова добър програмист.

Префронтален кортекс
Префронтален кортекс. Източник Wikipedia

Отлагането е добър приятел, когато го използваш креативно

Понякога решението на един проблем не идва веднага, колкото и да се концентрираш. Вероятно има нужда от малко дифузен начин на мислене или от почивка. Запиши концепцията на хартия и отложи решението. Работи върху други креативни неща или иди на разходка. Някои гениални идеи идват, когато времето изтича.

Разбиване на големите задачи на малки блокове

Разбий логическите блокове от код на по-малки и маркирай онези от тях, които можеш да използваш многократно. Запази ги на подходящо място за следващи задачи.

Виж още: Голяма колекция от безплатни курсове за блогъри, маркетинг, SEO, графичен и уеб дизайн, програмиране

Завърши ли проекта? Това все още не е краят

Когато завършиш етап от проект или цялото задание и то заработи, това не е крайният продукт. Трябва да направиш малко рефакторинг. Да подобриш кода. Постигни чист код, който е лесен за тестване, четене и използване.

Чистият и разбираем код лесно ще бъде възприет от всеки друг програмист, което е много важно за успешната поддръжка на софтуера. Не по-малко важно е и за репутацията на разработчика. След като кодът е рефакториран, е необходимо тестване. Могат да бъдат разработени и автоматизирани тестове. След това идва въпросът за документацията. Предостави ли достатъчно разяснения?

Добрият програмист се интересува каква стойност създава

Повечето разработчици се интересуват само от техническите аспекти или искат да покажат всичките си възможности в кодирането и напълно забравят, че техният продукт трябва да донесе стойност на поръчителя. Трябва да облекчи живота му и да му донесе приходи като време и пари. Ако планираш да станеш успешен IT специалист, не забравяй да си зададеш този въпрос:

Моята работа ще донесе ли голяма стойност за бизнеса, който ми я поръчал и който ще ми заплати за нея.

Отличният разработчик е упорит

Упоритост в работата на програмиста означава придържане към стила и метода на кодиране.

Непостоянството в стила със сигурност ще се прояви някой ден в програмата и ще доведе до проблеми. Поддържането на софтуера зависи много от последователността на човека, който е написал кода.

Най-добрите разработчици учат постоянно

Днес технологиите се развиват със страхотна бързина. Не е лесно да си в крак с най-новите тенденции. Нужно е всекидневно учене и надграждане. В противен случай рискуваш да останеш изоставен не само в бързо променящата се IT индустрия, но и изобщо от живота около теб.

Не се ограничавай да програмираш само по зададени работни задачи.

Работа и изследователски труд по твои собствени проекти има много предимства. Дава възможност да разучиш нови инструменти и технологии, което да те направи по-добре подготвен за следваща задача. Дай принос за проект с отворен код, помогни на начинаещи програмисти, публикувай във форуми и в социалните мрежи за програмисти – това ще подобри уменията ти и репутацията ти.

Добрият програмист не страда от стек снобизъм

Има програмисти, които много се гордеят с определен технологичен стек: например човек пише строго в Python с Django и счита други технологии и стекове за глупости.

Някой наистина може да е перфектен в своя стак. Но че не се е специализирал в други технологии, не му дава право да ги счита за по-ниско ниво. Всеки програмен език и всяка технология имат своя собствена цел, задачи и функции.

Всъщност работата на програмиста не е да пише код самоцелно и да показва колко е добър в това, а да кара компютрите и други устройства да вършат работа, която е полезна за хората. Програмните продукти трябва да решават проблеми и да са лесни за използване и поддържане.

Добрият програмист не страда от снобизъм към начинаещите

Има утвърдени програмисти, които са снизходителни към начинаещи – смеят се на тромавия код, пренебрежително говорят за методите им и алгоритмите им. Не си заслужава да се работи заедно с такива програмисти. Всеки е начинаещ в нещо и всеки може да допусне грешки и да е далеч от перфектното изпълнение.

Преди много години, когато започнах като програмист, имах колега, който се държеше високомерно и с презрение към мен като нова и като жена. Аз наистина бях нова в завода, но имах достатъчно опит с истинско програмиране. Бях го учила 6 г. – в гимназията и в Софийски университет – в специалност Математика. А той – само от практиката. Знаех вече да програмирам с чист код. И моите програми започнаха да работят в завода без бъгове. Веднъж погледнах програма на този човек и се учудих как всичко беше копие от чужди програми и кодът беше объркан и претрупан с използване на много памет. Толкова за снобизма.

Програмисти от този снобарски тип не са добри за работа в екип.

Добрият програмист знае да управлява времето

Напоследък са много модерни книгите и статиите, в които се споменава „управление на времето – time management“. В действителност не можеш да управляваш времето. Можеш да управляваш само задачите и приоритетите си – това е управление на продуктивността.

Истински добрият програмист знае:

  • да организира информацията и задачите си;
  • да разбива големите задачи на малки хапки, защото човешкият мозък възприема трудно обемните задачи и тогава започва играта с отлагането;
  • да планира графика на разделения на части голям проект.

Във връзка с това, в едно от най-важните качества на успешния програмист влиза спазване на сроковете. Той трябва да проявява уважение към крайните срокове. 

Идеалният програмист работи отлично в екип

Съществуват проекти, в които работят много програмисти, всеки от които има уникален набор от умения и познаване на технологии. При обединяването на такива хора се получава страхотен резултат. Но това става само с професионалисти, които могат да се приспособят да работят отлично в екип.

В книгата “Принципи” Рей Далио разказва с подробности как създава своя екип, с който постига главозамайващи успехи в работата. Авторът подчертава значението на прозрачните и искрени отношения на работното място, което се описва като модел на „меритокрация на идеите“. Когато всеки има възможност да изслуша какво мислят другите – например чрез обратна връзка, точките за учене и усъвършенстване се развиват повече. Далио създава на работното място култура, в която е добре да се правят грешки и е неприемливо да не се учи от тях.

Част от работата в екип е необходимостта понякога да се поиска помощ. Намери смелостта да поискаш помощ, когато не можеш да намериш решение. Но има и обратната страна – не притеснявай съотборниците си с въпроси, ако сам не си се опитвал да разрешиш проблема преди това. 

Успешният програмист е проактивен

Проактивността е склонност към проектиране и активност, към реализиране на проекти. Проактивността е полезно умение да не се върви по течението, а сам, независимо от някои обстоятелства, да си задаваш желаните цели и пътя до тях. Ако искаш да се откроиш от тълпата, не е достатъчно да бъдеш по-добър, а трябва да си различен и най-добрият, за това е нужно да си проактивен. Означава да си способен да направиш повече, отколкото се очаква от теб.

Отличният разработчик има отлични презентационни умения

Тези умения са необходими, за да демонстрираш резултатите от работата си пред поръчители и пред общността; да споделяш опит с колеги; да обучаваш други.

Вземи пример от добри публични речи, лекции и конференции, от TED презентации.

Добрият програмист трябва да умее да общува с „обикновени хора“

На програмистите се налага, освен да кодират, редовно да взаимодействат с мениджъри, служители и клиенти. В този смисъл способността за общуване добре с непрограмисти и хора, далеч от тази професия, е задължителна. Това е особено важно, ако се налага участие в срещи с клиенти и да се обяснява как работи системата.

Това, заедно с работата в екип, „антиснобизма“, наставничеството и взаимопомощта, и други черти всъщност е част от така наречените Soft Skills и зависи от това, доколко е развита емоционалната интелигентност на програмиста.

Успешният програмист винаги разработва стратегия

Без план дори и най-малкият проект може да се оплете и да не се вижда края му. Помисли за времето, с което разполагаш, за възможните разходи, планирането на спринта, структурата и елементите на UX и UI дизайна.

Ако започнеш работа на парче, код след код, можеш лесно да изпуснеш от поглед целта. През определен период от време се връщай към начертаната стратегия и мисли за целта, планирането, екипа и т.н.

Отличният разработчик преди всичко учи техниките, не инструментите

Езици, инструменти и методологии идват и си отиват. Важно е да имаш опит във възможно най-много езици и архитектури, в основната им логика, в основите на програмирането. Това е единствената част, която никога не се променя. Ако си учил и си професионалист само в JavaScript например, в един добър момент може да се появи нова технология, нов език и ако нямаш основите на програмирането, ако си замрял в своето развитие, ще изостанеш извън течението. Бъди винаги готов за промяна.

Добрият програмист не прекалява с функциите

Ставаш все по-опитен, но заедно с това имаш склонност към сложни решения, които отговарят на по-широк кръг нужди. Това е добре, докато не попадаш в капана на прекаляването с функции, които са напълно ненужни за проекта.

Успешният програмист прави контрол на версиите

Необходимо е, защото има моменти, когато се прави голяма грешка в програмирането и трябва да се върнеш към по-ранна версия на код. 

Връщане към оригиналната версия и актуализиране на кода последователно е контрапродуктивно и ето защо системата за контрол на версиите е изключително важна.

Добрият програмист е устойчив на стрес

Програмирането може да бъде изключително стресираща професия. Когато крайните срокове са кратки и нищо не работи, лесно е да изпаднеш в паника. Идеалният програмист може да се справи с най-трудните стресови ситуации и, най-важното, може да продължи да работи успешно.

Наблюдавала съм моята дъщеря, която е програмист, как понякога програмите за изпитите ѝ и после в работата ѝ са се чупели вечерта, преди предаването. Как тя се притеснява, но успява в последния момент да поправи всичко и да представи резултата. Дори ми е разказвала случаи, как по време на изпит е успявала да поправи голяма проблемна част от програма и да получи отлична оценка след това.

Перфектният програмист слуша внимателно, преди да говори

Това се отнася за всички нас, не само за програмистите. И е много важно, за да се учи, за да се комуникира правилно.

Ако програмистът е на среща с други разработчици, първо е необходимо внимателно да слуша, след това да говори по въпроса, защото това е най-лесният начин да научи нещо различно, ново, интересно. С това ще покаже и своите добри умения за комуникация, които са част от неговите „soft skills“.

Комуникацията е едно от най-важните умения, които трябва да притежаваме. Прекаляването с технически жаргон пред непрограмисти или начинаещи програмисти, особено изписването на английски термини на кирилица, не показва колко голям специалист си, само кара околните да оценят твоето его и слаби умения за комуникация.

Съществуват различни групи във Facebook, които обикновено имат за първоначална цел взаимопомощ. Понякога някои лица си въобразяват, че това са места, където да покажат своето превъзходство, да унижават „новаците“ или да се покажат големи специалисти пред евентуални клиенти. Не трябва да се забравя, обаче, че мрежата е пълна с лесно достъпна информация на различни езици и който търси, ще намери отговор на въпросите си и без да се подлага на високомерни атаки. А „превъзходният“ специалист само добавя минуси към репутацията си.

Заключение

Накратко за най-важните качества на успешния програмист:

  • той умее да общува с колеги и с „обикновени хора“, работи добре в екип;
  • той помага на начинаещи и допринася за общността – участва във форуми, специализирани социални мрежи;
  • той умее да изслушва и да формулира правилно въпросите;
  • той приема всякакви езици, технологии и стекове, докато в своя стек е изключитлно силен;
  • той прилага дизайнерски модели и алгоритми;
  • той пише чист код и го коментира и тества;
  • той има постоянно желание за учене, развитие и бързо намиране на информация;
  • той има правилна оценка на времето за изпълнение на работата;
  • той има отлична способност да се концентрира върху работата;
  • той разбира принципите на работа на компютърения хардуер и операционни системи;
  • той има системно мислене;
  • той е способен да решава проблеми;
  • той има аналитичен ум, упоритост, алгоритмичен подход, отговорност, инициатива.

Ако ти харесва публикацията, сподели я със свои приятели. Ако имаш забележки или да добавиш нещо – напиши го в коментарите.

Оставете коментар

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.