Page 19 of 48

Студенти, стаж и работа

Миналата седмица изнесохме две лекции респективно в Икономически Университет и Технически Университет във Варна.

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

 

Колко опит трябва да имам за да започна стаж?

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

Колко време ще съм стажант?

Обикновено стажовете продължават между 3 и 6 месеца (така е в Немечек например), като след като приключи предварително уговорения срок изборите са два:

  • Започване на Junior позиция в компанията:
    • Очакванията към вас са оправдани и двете страни са доволни. Следват промяна на възнаграджението (което трябва да е упоменато в договора ви още като започвате стажа си) и други придобивки (ваучери, втори монитор или каквото друго предлага компанията). Освен това четири други неща ще се променят:
      • Задачите ви ще станат по-отговорни и шанса да имате парче код, което ще работи при клиент е много вероятно. Вашите ментори вече няма да са с вас на всяка крачка, но ще продължат да бъдат на разположение. Тогава трябва и смяна на начина на комуникация – въпросите да са по-малко, по-структурирани и да сте се подготвили сериозно преди да ги зададете;
      • Вероятно ще имате втори изпитателен срок – това също е честа практика и отнема време. Не бъдете нетърпеливи, защото за няколко месеца/година ще влезете в бранша и оттам всичко остава във вашите ръце;
      • Бъдете самоинициативни – ако някой процес не ви хареса или имате идеи за развитие, курсове, споделяне на добри практики или каквото и да е било друго не се срамувайте, а говорете с вашия Team lead.
      • Бъдете готови да помагате на другите около вас без значение от това дали не са от 20 години в бранша или са стажанти. Бранша ни е толкова мащабен, че всеки може да даде ценна троха знания на всеки около него.
  • Прекратяване на Стажа ако една от страните не е доволна от другата:
    • Ако не се харесате с компанията в която работите и решите да я сменяте, го направете по възможно най-коректния начин. Това е първата ви компания и е важно да се разделите в добри отношения (без значение дали са били добри с вас или са били абсолютните задници). Пък и не е рядка практика HR-ките да звънят на предни фирми, в които сте работили за да разпитат;
    • Ако сте доволни от компанията, но не и от заплащането винаги можете да договорите. Съвет от мен е при преговори да се подготвите предварително с план в краткосрочна и дългосрочна перспектива. Това включва подобряване на hard skills (например ученето на нова технология) и по-трудното – работа по някой soft skill (комуникация, работа с екипа и т.н.);
    • Ако са ви пръснали от работа и това е причината да напуснете – тогава expectations management-а и на двете страни не е сработил добре. За това в началото при даването на задачите ако усетите, че има вероятност да не се справите разпитайте, прочетете повече и преговаряйте. Ще се учудите колко отворени са хората. И е нормално да не дадете супер точен estimation. Това идва с опита.

Колко време ще ми е нужно да стана Mid и Senior?

 

Всяка компания има политика за определяне на това кой в какъв seniority level e. За да придобиете представа ще дефинирам четирите основни нива:

  • Intern (стажант) – често млад и надъхан студент или ученик, но може да е човек, който сменя бранша. Обикновено има човек, който се грижи за него – ментор, който му дава задачи, оценява го как се справя и т.н. Очакванията към него са да е нахъсан и да му се учи, да се адаптира бързо към средата и да му е интересно;
  • Junior – стъпка над стажанта, вече може да се чувства, че опита му започва да става професионален. Задава си въпроси, които като стажант не е можел да си отговори ясно (например накъде да копае – frontend или backend, някоя конкретна технология или каквото се сетите). Задълженията му нарастват и вече има задачки за него, които не са тренировъчни, а реални. Трябва да можете да комуникирате ясно и стегнато и да знаете на кого да зададете въпросите си. Очаква се от вас ако имате мнение по някой въпрос касаещ кода, проекта или процесите да ги обсъдите с вашия Team Lead. Очакванията са да си задържите и засилите интереса към това, което правите и да се стремите да сте по-добри;
  • Mid – вероятно най-често срещаната позиция в бранша. Това са хора с изграден вече професионален опит, които имат добър фундамент, справят се с много голяма част от задачите, които има за правене по проекта. Те могат да виждат голямата картинка, да разбират бизнеса и да работят самостоятелно. Не е рядкост към Mid (програмист, QA, PM, изберете си сами) да закачат някой стажант или junior като човек за помощ и подкрепа, а понякога и направо като ментор. Очакванията са да са самоинициативни и самодостатъчни, да комуникират с лекота с всички членове на екипа и да знаят как работят нещата отдолу, да могат да се справят със заплетени проблеми и както обичам да казвам – да са настъпвали възможно най-много мотики за да знаят какво и къде да правят;
  • Senior – освен солидната техническа грамотност трбява да са мотивиращи и лидери (не е задължилно да са lead-ове), да могат да помагат на другите, да дърпат проектите напред и да бъдат хората, които като някой има въпрос да са там и да имат желание да помагат. Тези хора Виктор ги нарича oracles. Освен това дълбокото разбиране на проблемите и ясната позиция при решаването им са много важни. Комуникация с клиенти също е често срещано. И накрая, но не на последно място senior хората трябва да са израснали вътрешно – да са спокойни и да знаят как да приоритизират.

Както виждате за всички позиции човек трябва да е надъхан, да му е интересно и да рови. Ако нямате подходящия attitude сте обречени на вечно мънкане и бърз бърнаут.

Какво трябва да мога и какво ще науча освен техническата част?

Понеже обичам bullet points:

  • Трябва да се научите да комуникирате с хора – да сте спокойни и да задавате правилните въпроси, да можете да говорите с лекота както с програмистите, с вашия team lead и ако щете със CTO-то ви. Задаването на правилните въпроси носи удовлетворение и ефективност и в двете страни, но значи и че трябва да се научите да си структурирате въпросите правилно както и да четете предварително преди да задавате такива;
  • Научете се да … учите – в нашия свят много често се налага да навлезем много бързо в някоя непозната за нас технология и това е напълно нормално. И виждам как хора научават в движение Go или React и се справят отлично. Тайната е това, че тези хора имат стабилен фудамент на който да стъпят и разбират и методика на учене;
  • Да се стремите да виждате голямата картинка. Януари тази година бяхме с екипа в САЩ и там се срещнахме с нашия CEO и съответно имахме време да си поговорим на дълго и на широко. Още от първото изречение видях, че моя и неговия мироглед са толкова различни, че чак е стряскащо. Той гледа с няколко години напред, усеща кога идва нещо голямо и каква е голямата картинка. Аз към този момент (в аспекта на текущия ни проект) се грижих за абсолютно микроиоскопичните детайли. Такива разговори действат отрезвяващо и карат човек да се замисли за това;
  • Да се научите да вършите работата си по определен начин. Както във всеки проект текат различни процеси, които го държат стегнат и праволинеен така и вашата работа трябва да се основава на нещо подобно.  Всеки обича чистото и подредено бюро, но не всеки се замисля дали е проблем това, че работим едновременно по 6 различни задачи и имаме 145 отворени таба на браузъра.
  • Работа в екип – в идеалния случай екипът се събира като части от пъзел – лесно и безпрепятствено. Понякога обаче е все едно сте призовали 8 демона, които се бият с лопати през няколко минути. Без значение от коя страна сте работата с хората във вашия екип трябва да е първо на професиоанлно ниво и да оставите на заден план личните ангажименти. Защото ако в пъзела има една част, която не пасва тя обикновено бива изхвърлена. И е признак на зрялост желанието за подобряване на отношенията в екипа;
  • Да държите на критика. Ако сте програмист ще има цял екип от малки демони, които ще тестват вашата работа и ще логват къде адекватни, къде не проблеми, ще има колеги, които няма да харесат вашия pull request и ще пишат коментари, много коментари. И ще изглежда, че всичкие са гъзове и че не ви харесват и че изглежда, че ви казват, че за вас ще е по-добре да пасете овце/крави на село, но това не е така. Всеки в един работещ екип има една основна цел – проекта да върви напред. А за да върви напред качеството на работа на всеки един от екипа трябва да е на високо ниво. Не забравяйте, че качеството и ефективността на всеки екип е равно на този с най-малко опит;
  • Бъдете пич (пич е state of mind, а не полово определение, моля, моля!) – когато човек е пич нещата вървят по-лесно. Дребнавостта, нуждата за внимание на всяка цена и всякакви малки злободневни неща могат само да подразнят колектива.

 

И пак си бях обещал да не правя 100 страници пост и пак не ми се получи :)
Надявам се да съм бил полезен. Ако имате въпроси ги задавайте под статията в секцията за коментари.

 

P.S. Споделям с вас страхотния материал на WaitButWhy.com – How to Pick a Career (That Actually Fits You). Отделете му време, съветите са брилиантни.

Нови теми в блога

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

Списък на планираните теми, които са готови или са в процес са както следва:

  1. Студенти, стаж и работа – накрато информацията, която аз нямах като влизах в бранша, описание на стълбицата, какво трябва и какво не е нужно да умеем в началото, no deep shit. Progress – 100%;
  2. Security fundamentals – стегнато описани основните концепции, no deep shit. Progress – 10%;
  3. Основни атаки – без много blabla, списък с десетте най-разпространени атаки, какво представляват и примери как да ги приложим, инструменти, примери;
  4. Практическо ръководство – ще заорем в DVWA и примери, решения и най-вече – защо нещо работи и защо не (това ще е публикувано по време на QA: Challenge Accepted като разширена тема от лекцията ми). Кодовото име ще е “From lizard to wizard in security testing”;
  5. Как да строшим WordPress – имам вече лекция по темата в WordPress.TV, но тук ще я развием още (и ще пропуснем частта с костюма, ъ-кането и ще е по-кратка и съдържателна. Имам някаква идея да покажа това на моя блог, но ще видим дали ще има видео по темата.
  6. Правене на презентация под стрес и с лимитирано време – как се справих аз, какъв ми беше плана и 3 основни правила, които следвах за да говоря пред 800 човека без да направя прекалено големи издънки. Progress – 15%.
  7. Отговор на задачата ми за QA: Challenge Accepted 5.0.

Continue reading

Ще бъда лектор на QA: Challenge Accepted 5.0

Ииии ето, че тази година пак ще говоря на QA: Challenge Accepted.

Този формат е най-трудното нещо, което правя последните 2 години – приемам го доста насериозно и предния път ми отне немалко време и енергия да се подготвя.

Тази година темата ми ще е “Security Testing – Fast Forward” и ще продължи само 25 минути. Кандидатствах с две лекции – едната беше по-интересна и дълга (40 минути) и носеше по-епичното заглавие – “From lizard to wizard”.

И така – ще се срещнем с вас на 13 Април в София Тех Парк.

P.S. Ако на някой му е интересно нещо по темата нека пише тук и ако мога бих го включил в лекцията.

P.S. По време на лекцията ще има и малка изненада тук в блога.

04.03.2019

Преди няколко дни Виктор ми писа с молба да му вдигна 2 WordPress сайта. Оказа се, че моя VPS от $5 на месец вади страхотна скорост и това пак ме навя на мисълта за ISPConfig. Единственото нещо, което ме е спирало през годините след като вдигнах за пръв път marvin да мигрирам на ISPConfig (или някаква друга негова алтернатива) е факта, че само с кликане по Web interface няма да научавам нови неща (и да троша работещи такива).

Но днес съживих за сигурно пети път slartibartfast, качвам му един ISPConfig и ще тествам скоростта му.

Иначе новината на деня, за съжаление тъжна, е, че Кейт Флинт (The Prodigy) е отнел живота си днес.

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

03.03.2019

Честит празник.

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

Те така.

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

02.03.2019

Днес е Събота. И за разлика от преди 5-6-7 години не искам да умра от главобол. Хубава разходка направихме със Златината и си взех най-накрая прилична мишка – нещо за което все се каня и все нещо излиза.
Та – запознайте се с Logitech G603 – wireless/bluetooth, гейминг мишката, която има основна сила да издържа неприличните 500 часа офис работа на 2хАА батерии.

Защо си взех мишка с АА батерии а не с вградена такава? Много просто – ако вградената батерия съврши ще имам downtime, който може да е неприятен в неправилния момент. В днешно време правят мишките употребяеми дори и като се зареждат (с USB кабел), но пак някои от тях имат лимитации. А така ако батерията свършва (Windows-а показва колко % ѝ е батерията) просто купувам още 2 и съм в играта. Минуса е изхвърлянето на еднократните батерии, но за тази цел ще взема скоро rechargeable батерии с адаптер и ще спестя и този проблем.

01.03.2019

Иии ето, че започва първия от 31-те ми блогпоста за този месец, както вече обещах.

И днес беше ден за Docker/docker-compose. Бихме се, карахме се, псувах в нас като чобанин (което никога не е карало нито един софтуер или хардуер да тръгне, но все опитвам). – не стана и не стана.
Казуса беше тривиален – трябваше да засиля 2 глобални променливи към единия контейнер в който живее един react app. И съвсем успешно го правя, но react-а изобщо не зацепи. И така след данеказвамколковреме и общ дебъгинг се установи, че React-а си има изискване за именуване на променливите. Нещо, което НЕ намерихи в документацията нито на реакт нито на докер. За тези, които се чудят – трябва да започват с REACT_APP_

И така ми замина половината ден. Но пък е интересно. Docker и контейнерите се оказаха технология с която съм в love-hate relationship. Оказа се, че изобщо не е толкова лесна материята колкото си мислих, но като започне да ти се просветлява нещата стават мега яки. Например мога да направя multi stage build, което значи, че вдигам един контейнер съдържащ целия ми dev environment с всички библиотеки, пакети и каквото му е нужно, билдвам, правя втори контейнер и там изсипвам вече готовото binary. Така контейнера ми става няколко мегабайта. Забравих да кажа, че говоря в аспекта на Go.


Иначе в личен план нещата се развиват интересно – от извесно време смених работната обстановка и вече работя от нас основно. За момента ми се отразява учудващо добре. Иначе продължавам да работя за Немечек и нямам намерение да ги сменям. Казвам това, защото последно време фейсбук ми показва засилено групата на DevBG-Jobs и гледайки на какви висоти ни са HR-ките направо ме е страх да си помисля, че може някой ден да разчитам на някаква точилка, която знае четири съкращения (JS, .NET, PHP, DB) и пише обяви на поразия. Не, че няма къдърни, но мнозинството е шлака.

Те така. Ден първи – completed. Ш’ме извинявате, че няма in other news, но днес – толкова :)

26.02.2019

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

Освен това в офиса нещата се случват доста добре. Имах възможност да се докосна до docker (и docker-compose), научих много покрай него и ако на някой му е интересно мога да разпиша една статия по темата. Освен това съм в дилема дали да не прехвърля инфраструктурата на marvin към контейнери. Питах интернета и той спомена застрелване в крака. И понеже трудно се вслушвам в хорското мнение най-вероятно ще вдигна още един VPS и ще мигрирам. Вероятно е и да сваля целия VPS както направих последния път :D

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