понеделник, 16 юли 2018  RSS
    Барометър | Региони | Компании | Лица | Назначения


    12299 прочитания

    Junior, Middle и Senior програмист – какво трябва да умее всеки от тях?

    За йерархията в професията „Програмист“ разказва Александър Демура, ръководител на развойния център на DataArt в Одеса
    15 март 2018, 14:53 a+ a- a

    Всички сме чували за junior, middle и senior програмисти, но какво точно се крие зад уменията на едните и другите? Ако за повечето ИТ специалисти, които са от доста време в бранша, това е съвсем ясно, то за начинаещите липсва известна яснота. За да разберем повече относно йерархията в професията „програмист“, както и за нужните умения, познания и опит, необходими, за да се премине към следващото ниво, се допитахме до експертите от глобалната технологична компания DataArt, която разработва, поддържа и имплементира индивидуални софтуерни решения за своите клиенти. Компанията има офиси в Европа, САЩ и Латинска Америка. В България откри свое представителство в средата на 2017 г.

    Александър Демура е ръководител на развойния център на DataArt Одеса, Украйна. Започва своята кариера като .NET разработчик и след дългогодишен опит като програмист в последствие започва да се занимава с проектен мениджмънт. Притежава повече от 10 години опит в сферата на информационните технологии, участвал е в редица лекции, конференции и семинари

    Повече за йерархията в професията „програмист“ научете от Александър Демура, ръководител на развойния център на DataArt  в Одеса, Украйна: 

    Разбира се, едва ли има универсално и стриктно правило, свързано с това какво точно се крие зад понятия като junior, middle и senior програмист, което да е валидно навсякъде по света. Но все пак са налице някои общовалидни тенденции, които важат както за нашата компания, така и за ИТ бранша като цяло. Ето кои са те:

    Стажант програмист

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

    Едно от важните условия за започване на стаж при нас е владеенето на добро ниво на английски език, тъй като повечето ни клиенти са позиционирани в САЩ и в Западна Европа. Независимо дали работите в офиса ни в България, в Аржентина, в Украйна или в Полша, английският език е от изключително значение както за senior разработчиците, така и за стажантите, които наемаме.

    Ако потенциалният стажант иска да се развива в конкретен програмен език – например в .NET, но не може да обясни какво е значението на CLR, защо знакът "равно" се отличава от "==" или да създаде един съвсем прост алгоритъм, тогава шансовете са почти нищожни. Да се започне стаж с нулеви знания и с надеждата, че всичко ще бъде усвоено в движение и с лекота, не е добра стратегия. Много от кандидатите за стажанти преди това са преминали няколко професионални курса, могат лесно да отговорят на теоретични въпроси и дори имат известен опит в програмирането. Съвсем логично е те да имат преднина пред останалите. 

    Junior програмист

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

    За един junior програмист следва да са налице три важни качества:

    1. Желание да се развива и да дообогатява познанията си (и да се учи от грешките си!).

    2. Упоритост и отдаденост.

    3. Способност да приема критики и да се вслушва в наставленията.

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

    Middle програмист

    Основните изисквания за разработчика от т. нар. middle ниво е да може да изпълнява задачите си самостоятелно. Да, наистина – това вече го прочетохте в предишното описание, касаещо junior специалиста. Но тук има една съществена разлика  - отсъствието на думата „технически“. Това означава, че разработчикът вече е преминал на по-високо ниво и трябва да разбира бизнес изискванията на съответния проект и да може да ги превърне в технически решения. 

    Ключовите умения:

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

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

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

    Senior програмист

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

    Ключови умения:

    1. Senior програмистите мислят предварително за затрудненията в системата и възможността за мащабиране, запомнят уязвимостите и проблемите, причинени от неправилното използване на съответните инструменти.

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

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

    4. Тази позиция изисква добри комуникативни умения, тъй като senior програмистът не само трябва да предложи правилното решение, но и да убеди клиента и екипа да се съгласят с него. Не е достатъчно просто да знаете как трябва да се правят нещата, но също така трябва да можете да ги обясните разбираемо. Тогава екипът се разраства бързо и натрупва опит, като се избягват болезнени грешки. Авторитарният подход ("направете каквото казвам") често води до конфликти и затрудняване на работата.

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

    Кое е следващото ниво?

    Ще започна с развенчаването на един популярен мит - че senior програмистите стават мениджъри на проекти като следваща стъпка в кариерата. Всъщност - преходът към project мениджър не е стъпка нагоре по стълбата, а встрани от нея, поемане на различен път. Целият опит, натрупан в продължение на много години работа като програмист, всъщност се превръща в поемане на нова роля, защото трябва да работите не с код, а с хора и планове.

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

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

    Ще дам пример с някои области, в които при нас в DataArt най-често се развиват програмистите с богат опит, решили да преминат на едно ново и по-различно ниво:

    1. Технически експерт

    Статутът на технически експерт предполага задълбочено познаване на определена област. Например можете да сте експерт в Azure / AWS и да сте запознати с различните услуги, които тези платформи предлагат. Трябва да сте в състояние да направите машинно обучение или компютърна визия, да знаете всичко за уязвимостите в мрежата, да разберете как работят криптовалутите или да подготвите правилно Sharepoint. Такива задачи не се случват всеки ден, но когато се появят, тогава е време да включим експерта. Без него подобни проекти просто биха били невъзможни и компанията често е склонна да плаща допълнително за уникални знания.

    2. Индустриален експерт

    При нас в DataArt проектите ни са разделени по индустрии (здравеопазване, медии, финанси, туристически сектор и т.н.). Във всеки проект програмистите не само придобиват технически познания, но също така получават възможност да се запознаят с бизнеса на клиента, да разберат как работи индустрията и да научат за проблеми и решения, специфични за тази област. Какво е нужно, за да се разработи платежна система, подобна на PayPal? Защо е необходима системата Sabre? Какво представлява HIPAA и какви ограничения поставя върху разработването на решения за здравеопазването в САЩ? Хората, които притежават този тип знания, често формират гръбнака на проекта и носят огромни допълнителни ползи за компанията и клиента. Следователно тяхната компенсация може да надхвърли външната ставка, тъй като самите компании са готови да плащат допълнително за такива специалисти.

    4. Ръководител на екипа (Team leader)

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

    5.  Архитект

    Даден проект може да изисква архитект по хиляди различни причини. Той трябва да притежава разбиране за бизнеса на клиента, способност да анализира сложни технически системи и след това да предаде това разбиране на клиента и разработчиците. Освен това архитектът трябва да има широк поглед по отношение на наличните платформи и компоненти на пазара, от които може да се синтезира решението. За архитекта понятия като "microservices", "cloud" и т.н. не са просто модерни тенденции, а ясно проверени технологични решения, които дават строго определени предимства и налагат съответните ограничения.

    Нагоре
    Отпечатай
     
    * Въведеният имейл се използва само за целите на абонамента, имате възможност да прекратите абонамента по всяко време.

    преди 2 часа
    Отпадат още 6 хартиени удостоверения за гражданите и бизнеса
    Данните за тях ще се проверяват служебно
    преди 5 часа
    Инфлацията ускорява темпа си
    3.2% годишна инфлация за юни 2018 отчете НСИ
    преди 9 часа
    Хамбург ще тества самоуправляващи се влакове
    Очаква се пилотният участък от трасето да бъде пуснат до 2021
    преди 10 часа
    Пет медала за България от Международната олимпиада по математика
    В състезанието участваха 615 ученици от 109 страни