Софтуерно Инженерство
Loading...
Pavche avatar Pavche 12 Точки

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

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

Какви качества са ценни за софтуерните фирми в България? Например в София.
Кои са минималните познания за работа в софтуерна фирма?
До каква степен се изисква владеене на английски език?
С каква скорост е необходимо човек са свикне с новите работни условия?
Колко бълзо е задължен да учи, за да се приспособи към работа на програмния екип?
С каква издръжливост психичека е нужно да разполага, за да се справя с поставените задачи?
(Тоест да не се откаже)
Вземането на сертификат за даден програмен език наистина ли помага за наематето в софтуерна компания?

Как опита с програмиране влияе върху кандидатсването за позиция като програмист?
Колко минимален опит е нужен за начинаеш (Junior)?

Колко комуникацията в екип от програмисти e важна за общата работа?
Кой е предпочитеният начин за получаване на нови знания?
- Да питаш по-опитния колега от екипа? или Да напишеш в Google?

5
Общи приказки 04/02/2015 10:19:03
Yulia avatar Yulia 1343 Точки
Best Answer

Добрият програмист го мързи да чете дълги отговори :D Но за другите се извинявам предварително за дългият пост, който ще напиша, ама тук с две думи не става да се обясни. Страхотни въпроси задаваш.

Но преди да отговоря, ще спомена две имена, които много са ми повлияли на начина на мислене и конкретно за това какви са "качествата на добрият програмист". Това са Стефан Кънев и Божидар Бацов. В youtube има много видео-записи от конференции с техно участие*. В това отношение, ще те посъветвам, ако наистина имаш интерес, да посещаваш подобни събития. Да не се страхуваш от новите непознати думи в разговорите им и, разбира се, да създаваш контакти. И както каза РадоРадо, "много е важно да се създават role models " (ако не си глед даал това видео, изгледай го).

На How.Camp2014 във Велико Търново, Б. Бацов направи страхотна презентация на тема "Бъди програмист от класа". Здрава основа, фундамент, алгоритми, изучаване на теорията на програмирането. Да се развиваш постоянно в различни аспекти, да изучаваш различни стилове (ОО, функционално, логическо) - това отличава класният програмист от "програмист - плафон". (видеото е от OpenFest и е на друга тема, но се споменава мъничко и за това)

За съжаление, много хора, които се обучават тук, се заблуждават, че само с технологии и малко КПК - ще станат мега добри програмисти. И, че научат ли C# и ASP.NET -> стават не нинджи, ами богове направо. Дочуват тук-там от Наков, че ще е супер ако знаят и дизайн патърни, та и малко алгоритми... но понеже е трудно, леко така ги няма в програмата. Да, всичко това е пре-достатъчно да започне човек работа. Но мен лично ме е малко срам и даже страх да започна с такива знания, защото нямам самочувствието, че съм програмист. Нито дори, че уменията ми ще бъдат полезни.

  • Какво отличава добрият програмист? - на първо място, това е продуктивността. Опитният програмист е способен за кратко време да свърши в стотици пъти повече работа, отколкото някой junior, например. Това видео е доста изчерпателно и има страхотни съвети за това как да повишим своята продуктивност.

Това ме подсети и за една шеговита табличка, която видях наскоро. Тя беше нещо такова:
Junior програмист -> учи се да работи
Regular програмист -> работи

Senior програмист-> учи се да не работи

  • Каква е разликата между добрия и недобрия програмист? - освен всичко по-горе изказано, според една много хубава книжка, която чета в момента, всяко нещо има 5 стадии по пътя от начинаещ към експерт. С две думи казано, начинаещият има нужда от точна рецепта как да прави едно или друго действие, а експертът действа по интуиция. Да не разтягам много отговора си тук, книгата е "Pragmatic Thinking and Learning - Refactor Your Wetware" - много е добра за ученето.
  • Какви знания и способности е необходимо да има всеки програмист? - трите вълшебни способности са любопитство, смелост и мързел (така де, иначе как ще се научи да не работи, а да бъде продуктивен в същото време).  Смятам, че за да станеш наистина добър  (няма значение дали в IT сферата, или не) -  трябва да имаш любопитство и смелост да експериментираш. Да променяш. Да се променяш. Само така може да постигнеш нещо много повече от "следване на рецептата". Каквото някой е казал. Хората обикновено ги е страх да поемат отговорност в случай, че сгрешат. Затова ги е страх и да рискуват. Но не и добрите. Те винаги правят каквото искат и харесват. И постигат успех, защото го правят с желание и страст.

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

  • Как се извършва преход от друга област към програмирането? - ах... ами "смело". Много пъти в живота си съм сменяла областите си на интерес и занимание. Но програмирането е нов, прекрасен и много различен свят. Това са нови интереси, нов начин на мислене,  нови идеи, нови мечти, нови навици, нови книги на рафта, даже нови дрехи в гардероба. Някои преминават плавно към този свят. Аз реших категорично. Отрязах цялото си минало и се хвърлих в най-дълбокото. Както казват "не може да видиш колко голямо е морето, ако те е страх да напуснеш брега".  Тази мисъл е водеща за мен. Е, съвсем скоро след това открих, че това "дълбоко" всъщност е "плитко", затова продължавам и напред. Там, където водата вече не удря така бурно скали и брегове. Там, където времето вече не значи нищо. Приела съм, че ще се уча още години. Цял живот. Бързането не води до нищо хубаво.

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

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

Не ми харесва как свързваш психическата издържливост с отказване. Да, не е лесно. Да, много е натоварващо. Стреса е ужасно много. Особено като има крайни срокове (т.е ...винаги). Даже си мисля, че е много необходимо човек да се научи да прави правилен избор кога трябва да се откаже, а кога не. Баланса е сложно изкуство. И за да има такъв, трябва да се научим да се отказваме от не толкова важните неща, да се съсредоточим само върху тези, от които наистина има полза и смисъл. Може би звучи така, сякаш си противореча на собствените думи (за смелостта и риска), но не е така. Тук се намесва любопитството, което елегантно определя какви да са решенията ни. Защото където има желание, интерес и позитивна нагласа - там няма опасност от отказване. Съответно - там има само развитие.

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

Изморих се да отговарям на многобройните въпроси, но ще кажа няколко думи и за последният:

  • Кой е предпочитаният начин за получаване на нови знания? - Ох, зависи от знанията, разбира се. Едно е да досаждаш на някой постоянно с тривиални въпроси, друго е да искаш да ти се обясни нещо как работи, след като не си успял сам. Зависи и с какво време разполагаш, какви са хората... все пак, като отговарят, те се чувстват полезни и това е хубаво и за двете страни. Само дето едни умеят да отговарят така, че да са ти полезни, а други искат с отговора си само да покажат колко са умни...

Моят предпочитан начин за получаване на нови знания са книги. За получаване на мотивация - конференции. HowTo - гугъл. Разяснения - от приятел/колега.

* видео-записи по темата - силно-препоръчвам. Enjoy!
  -  "Mastering the Craft" - by Stefan Kanev [OpenFest 2012 - Габрово]
  -  "Размисли за занаята" - Стефан Кънев [It Tour 2016 - Варна ]

26
19/01/2015 21:07:04