Най-важните качества на успешния програмист с Николай Костов
Николай Костов е едно от ценните попълнения в лекторския състав към цялостната ни програма по софтуерно инженерство. Към момента той е Solutions Architect в ZenCode, както и лектор в СофтУни, участва в различни конференции, а преди това е бил и Software Engineering Manager в Telerik. Занимава се с програмиране от много малък, като първоначално учи химия и биология в НПМГ, но бързо се преориентира към софтуерното инженерство. Като ученик е участвал в състезания и олимпиади по информатика (алгоритми) и информационни технологии (приложно програмиране). Има две първи места на олимпиада по ИТ – веднъж в категория приложни програми и веднъж в категория уеб приложения. Разработвал е голям брой freelance проекти като и е бил консултант за чуждестранни компании. Повече информация можете да откриете в блога му – Nikolay.it
Ето и отговорите на въпросите, които му зададохме:
Сподели с нас най-големия си професионален успех
Не мога да маркирам нещо конкретно като „най-големия ми професионален успех“. Казано по-общо - най-големият ми професионален успех са студентите, които съм обучил. Да ги видя как се развиват, как се издигат в професията, да чуя колко са успели, да видя как стават част от развитието на индустрията, това ме кара да се чувствам успял. Още по-голям успех е, ако видя мои студенти да преподават на други. Това означава, че индиректно сме запалили чрез тях искрата и на други хора да успяват в професията и живота.
Какви са перспективите на ИТ сферата в твоите очи?
Фактът, че в момента четете това от телефона, таблета, лаптопа или компютъра си, е само по себе си едно изключително впечатляващо нещо. Само преди 100 години хората тепърва са се радвали на радиото, а днес имате достъп до целия свят в джоба си. Днес живеем в свят, в който машините ни отмятат в толкова много задължения, така че ние можем да се концентрираме върху важните за нас неща.
Хората може би не оценяват, но качеството на живот днес и преди 100 години са несравними. Сега си представете след само 20-30 години какво ще е: автономни автомобили, квантови компютри, изкуствен интелект, вършещ все повече човешка работа, генно инженерство, изолиращо дефектни гени, по-добро здравеопазване, базирано на машинно обучение, летящи дронове навсякъде, умни градове, домове и инфраструктури, напълно автоматизирано производство и отглеждане на храни и т.н., и т.н. А какво ли ще е след 100 години? Предстои ни вълнуващо и леко плашещо бъдеще.
Какви отличителни качества трябва да има програмистът, според теб?
Ще отбележа десет от най-важните неща (не са подредени по важност), които правят един програмист добър (според мен):
- Логическо мислене – от всеки става някакъв програмист, но не от всеки става добър програмист. Както и не от всеки става добър музикант и добър художник. Хората без добро логическо и математическо мислене постигат капацитета си в професията и не могат да го надскочат, когато се стигне до по-сложни идеи и задачи. Добрата новина е, че логическото мислене се упражнява и учи и хората, които смятат, че им липсва и това ги спъва да се развиват в професията, могат да направят стъпки в посока да го развият. Математическите знания и концепции, ако те липсват в човека, също могат да се наваксат.
- Абстрактно мислене – това е умението да извличаш знание и идеи от конкретиката. Да можеш да игнорираш детайлите и да се концентрираш върху важното и да можеш да разбираш големите идеи. Това са преди всичко нагласа и начин на мислене, които с опита и времето се постигат.
- Упоритост и търпение – нашата професия изисква отдаденост. За да станеш добър, трябва да отделяш по повече време от средното за другите професии. Не всичко се получава от първия път и не всичко става така, както искаме, затова упоритостта и търпението са важни. Важни са и в самия процес на работа, когато се налага дълго време да работим по един проблем, без да се отказваме.
- Умение за учене и разбиране, добра памет – ИТ сферата е толкова динамична, че спрем ли да учим нови неща, започваме сериозно да изоставаме. Това означава, че трябва да можем да разбираме и извличаме важното от всичко ново. Новите знания, които непрекъснато трупаме, не трябва да са за сметка на стари концептуални такива, в тази връзка - добрата памет и избирателната памет (да помним това, което трябва) - са изключително важни.
- Разбиране как функционират нещата – Желанието да знаем как точно работи нещо, да ни човърка отвътре да разберем как функционира дадена технология, библиотека или система, да искаме да разберем как нещо е направено, са онзи мотиватор, който прави професията ни да не е скучна работа, а нещо, което правим с удоволствие и желание. Това осъзнато желание да искаме да задълбаем и разберем нещата в дълбочина, прави от обикновения програмист истински добър софтуерен инженер.
- Умения за решаване на проблеми – Подходът, който предприемаме, когато се сблъскаме с даден проблем, е от съществено значение за решението му. Умението да подхванем проблема от правилния ъгъл, да съумеем да го анализираме правилно, да го разделим на правилните стъпки, са важни в нашата професия. Също е важно и да не зарязваме проблема по средата и да се отказваме при първата пречка, а да се опитваме сами, докато стане. Така всеки следващ проблем ще ни е все по-лесен за решаване.
- Внимание към детайла – макар това качество да е присъщо повече на quality assurance (QA) колегите, то е важно и за всеки един програмист. Тук включвам не само качеството в крайния резултат от нашата работа, а и внимание към дребните неща в процеса на разработка. За да пишем качествено и без бъгове кода си, понякога се изисква именно внимание към детайла.
- Знания – Относно знанията, моето мнение е, че един програмист трябва да знае много в конкретната сфера или технология, в която се занимава, и да знае от всичко друго по малко. Това дава добър поглед върху индустрията и му помага да приложи чужди за неговата сфера идеи и концепции в решенията, които създава.
- Комуникационни и бизнес умения – Несъмнено, ако един специалист е изключително добър в професията си, той не би бил полезен за дадена компания, ако му липсват съвсем основни комуникационни умения, ако е заядлив, ако е затворен в себе си или токсичен. И обратното, ако човек е позитивен, приветлив, готов да помогне, то той би бил много по-ценен от някой с безкрайни знания и умения, но неспособност да се приспособи към екипа. Бизнес уменията от своя страна помагат да се разбере как функционират процесите и защо едно нещо е по-приоритетно от друго в дадена компания. Познаването на задълженията и проблемите на другите екипи и колеги помага да разберем нашите собствени. Да не говорим, че живеем в свят, в който бизнес умения + технически умения + страхотна идея = стартъп за милиони.
- Умение и желание да предаде знанията си – през годините съм се убедил, че нашата сфера се развива с огромни темпове и толкова бурно, именно заради нагласата на много хора в нея, че да споделяш знанията и уменията си е нещо хубаво. Виждали ли сте същото при адвокатите или лекарите, или повечето професии? Някой адвокат ще си сподели ли безплатно пред всички практиката, която му носи пари? Едва ли. Друго важно нещо, свързано с предаването на знанията е, че то помага на самите нас да научим нещата по-добре, преподавайки или обяснявайки ги на други. Научаването има няколко нива: да го назубриш, да го разбереш и да можеш да го обясниш.
Кое, според теб, е отличителното в цялостната програма по софтуерно инженерство на СофтУни?
Вече има десетки академии и институции, които обучават програмисти. Някои успешно, други само взимат пари и не предоставят качество. СофтУни успя да събере страхотен екип (специалисти и преподаватели), което според мен е най-ценното за всяка една компания. Не мога да пропусна и факта, че петимата, които бяхме в началото на академията на Телерик, сега се събрахме отново в СофтУни.
Друго важно за студентите е добре структурираната съвременна програма, която води студентите от съвсем начинаещо ниво, до ниво, в което са готови да започнат работа. Всичките домашни и проекти, които са подготвени за студентите, им помагат да придобият и практически опит, още преди да са започнали работа. Не са за подценяване и контактите, които студентите създават помежду си по време на цялото си обучение. Качеството на материалите, клиентската поддръжка и обучителната система също са сред най-ценните предимства.
Ако историята на Николай ви е вдъхновила и си мечтаете и вие да направите първата стъпка в посока постигане на мечтаното професионално развитие в IT сферата – присъединете се към някой от предстоящите модули по софтуерно инженерство! Обучението е с изключителна практическа насоченост и имате възможността да получите кариерно съдействие за над 70 от най-добрите технологични компании в света!
Предстоящи модули:
МОДУЛ: Fundamentals Module – септември 2019
МОДУЛ: C# Advanced - септември 2019
МОДУЛ: Java Advanced - септември 2019
МОДУЛ: JS Advanced - септември 2019
МОДУЛ: C# DB - септември 2019
МОДУЛ: Java Web - септември 2019
МОДУЛ: JS Web - септември 2019
МОДУЛ: Front-End - септември 2019