IT Blog
RSS icon Email icon
  • Моят път към професията „софтуерен инженер“

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

    Представяне

    Аз съм Красимир Николов, роден съм в град Благоевград през 1975 година. Израснал съм в град Симитли. Завършил съм ПМГ „Акад. Сергей Корольов“ в Благоевград. Математическата гимназия се оказа определяща за бъдещото ми развитие. От една страна средата, която там си изградих, са хората които и в момента са мои приятели. От друга страна, подготовката там ми даде възможност свободно да избирам къде да продължа образованието си.
    През 1994 година се записах в УНСС. От днешна гледна точка това не изглежда най- доброто възможно решение, но тогава беше мястото, което изглеждаше най- перспективно за бъдещето ми. По онова време инженерните специалности в техническите университети изглеждаха безперспективни, а пък математико – информационните специалности в СУ изглеждаха доста теоретизирани като материя.
    Първият ми досег със софтуера и програмирането беше през 1990 в тогавашния „Младежки дом“ в Благоевград. Учих операционни системи и Паскал, като език за програмиране. Година по късно закупих първият си компютър, и от тогава до сега софтуерът и програмирането са част от живота ми по един или друг начин.

    Професията на софтуерния инженер

    Процесът на изработване на софтуер има различни аспекти. В тази връзка софтуерният инженер е човекът, който участва по един или друг начин в изработването на софтуер. Първият етап от разработката на някакъв софтуер би трябвало да бъде създаването на модел, по който ще работи съответния софтуер. Системните архитекти създават софтуерната архитектура, какви елементи ще съдържа софтуера и как ще си взаимодействат те. След като има изграден модел, работата би следвало да се разпредели от ръководителите на екипа. Кодът се пише при програмистите, тества се при QA инженерите. Front-end специалистите създават потребителския интерфейс, а системните администратори и database администраторите създават и поддържат базата от данни и системите върху които ще работи новия софтуер.
    По време на целият този процес, би трябвало цялата верига да е в пряка комуникация с бизнес аналитиците. Няма голям смисъл от софтуер, който няма да се хареса или би бил прекалено сложен или прекалено скъп за потребителите. Тук е мястото на бизнес аналитиците, които трябва да съобразят софтуера с реалните нужди на потребителите.
    Софтуерният инженер създава продукт, който би трябвало значително да улесни живота на потребителите. Един добре написан софтуер, може да ускори някой процеси от бизнеса или ежедневието ни в пъти.
    Личното удовлетворение от професията е много силно, ако разбираш как написаното от теб е полезно за някого. Аз вече съм правил някой прости приложения и е много приятно да виждаш, как написаното от теб улеснява живота на съответните ползватели.

    Моят старт в софтуерното инженерство

    Имам фирма, която се занимаваше с дигитализиране на различни видове карти. Като цяло работата, се изразяваше в копиране на растерни изображения във векторен вид в средата на AutoCad. Едно от основните ми задължения се изразяваше в това да пиша различни скриптове на AitoLisp, които да улесняват и ускоряват дейността ни. Направил съм цялостна система, която контролира, целият процес по изчертаване на векторните изображения и последващото им конвертиране в текстов вид. Приложението ми извеждаше текстов файл в cxf формат. Това е формат, които се използва за съхранение на информацията в италианския кадастър.
    От около 5 години се занимавам и със създаването на приложения написани на PHP, MySQL. Първоначално се захванах с това, за да създам система с която да записваме информацията за работата която вършим в цифров вид. По този начин стана в пъти по бързо извеждането на информация за работата на персонала в офиса, справки за работата по клиенти и операции. През 2012 година направих цялостно уеб приложение за ТРЗ, написано на PHP, MySQL (www.trzbg.eu).
    Последната година се занимавам и със структурирането на няколко прости уеб сайта, предимно използващи CMS системи.
    През цялото време, от 1994 година досега, съм се занимавал с проблеми свързани с ИТ и разработка на софтуер. Докато правех приложенията си под AutoCad, четях предимно неща свързани с AutoLisp. След това, четях различни форуми и гледах различни онлайн уроци за да науча PHP и MySQL. Основната причина да се захвана със Софтуерната Академия, беше именно липсата на систематизирани знания. Нещата, които научавам в академията за 2-3 месеца биха ми отнели, поне година ако събирам информацията в Интернет и книги.
    Аз така или иначе съм насочил всичките си усилия, към това да овладея професията на софтуерния инженер. Това е нещото, което винаги съм искал да правя.

    Моето професионално развитие

    Както вече споменах, винаги съм се занимавал със софтуер. Софтуерната академия е мястото, където мога да получа необходимите ми знания и умения в концентриран и подреден вид.
    Последните месеци освен с обучението ми се занимавам и с изработка на CMS системи. Редактирах един сайт направен на PHP с AJAX заявки. Изработвам приложение за управление на персонала и дейностите за една фирма. Участвам в конкурса на Телерик и PC Magazin.
    Обичам да създавам софтуер и съм доволен, че имам възможността да го правя. Голямо е удовлетворението, да видиш едно приложение в действие и да осъзнаеш, че то подпомага дейността на хората.
    Ами аз вече така или иначе правя всичко, което зависи от мен за да стана добър софтуерен инженер. Налага ми се да издържам семейството ми, имаме малко дете и съпругата ми се занимава с отглеждането му. Като добавим и обучението, това прави поне 250 часа работа месечно.
    Би било неискрено, да кажа че ще поставя обучението си преди семейството, но съм готов да вложа всичко от себе си за да постигна, това което съм решил.
    Смятам, че ако един човек не харесва една работа и не я изпипва добре, по- добре въобще да не се захваща с нея. В тази връзка, ще направя всичко необходимо, да се науча добре да правя нещата с които съм се захванал. От друга страна нямам избор, желанието ми е максимално бързо да овладея необходимите знания, за да мога да върша качествена работа и да осигуря семейството ми. В общи линии не ми се наложи да се отказвам от много неща заради обучението, проблемите с бизнеса ми и липсата на средства ме ограничиха, доста преди това.
    Не мисля, че тепърва трябва да се доказвам, че мога да съм сериозен в нещата, които върша. Доста неща съм направил и с каквото съм се захванал, съм се стараел да го правя по най- добрия според мен начин.
    Наясно съм скоростта с която се развиват ИТ технологиите, ако човек иска да работи в тази област е длъжен да бъде в крак с новостите в своята дейност. В противен случай, рискува да изостане и да не може да върши работата си.
    Не обичам да върша работата си половинчато, така че за мен е важно да правя нещата, с които съм се захванал, добре. За това постоянно се информирам за новостите, за да ги прилагам в моята работа.
    От друга страна, общуването с колеги и обменянето на знания помага да видиш нещата от по-различна гледна точка. Добре е да потърсиш и други решения на проблемите, с които се занимаваш, така можеш да разбереш дали твоето решение е адекватно.
    Смятам, че съм сериозен и отговорен и на мен може да се разчита. Сблъсквал съм се с отговорността от обратната страна. Работил съм с хора, които не са се отнасяли отговорно към задълженията си или по – скоро са нямали навици да бъдат отговорни към поетите ангажименти. Често ми се е случвало да обучаваме хора за нашата работа, които бързо след това са се отказвали. Затова смятам, че отговорността към работата на всеки един в екипа, е ключов за успеха на дейността, с която си се захванал.
    Работата на софтуерния инженер в много случаи е свързана с решаване на проблеми, които се срещат за първи път. Затова е нужно да вложиш доста усилия и да не се отказваш при първата трудност.
    Добрият софтуерен инженер трябва да познава както своята дейност, така и дейността на колегите, с които работи. За да върши качествено своята работа, трябва да има по обширни познания, защото често се налага да се контактува с хора, които вършат друга част от проектите.
    Ако една работа не я правиш както трябва, по- добре изобщо да не се захващаш с нея. Това е общ принцип, но важи още по- силно в софтуерната индустрия. Тук работата, която вършиш е в тясно взаимодействие с други хора. Ако ти не вършиш своята част качествено, това означава, че ще пречиш и на останалите.
    Трябва да се пише качествен код, защото има голяма вероятност този код да се ползва от някой друг или от вас самият след време. Ако кодът, който сте писали е неразбираем, това ще направи невъзможна употребата му от други хора. Дори вие самият, има голяма вероятност да не можете да използвате отново ваш код за нов проект.
    Основната мотивация за да пишем качествен код е, той да не затруднява работата на колегите и евентуално да може да се използва отново в бъдещи проекти.
    В днешният глобален свят е почти невъзможно да вършиш нещо, което да не е свързано с работата на други хора. Това важи в голяма степен и за работата на софтуерния инженер. Обикновено проектите се правят от големи екипи и взаимодействието в екипа са много важни за ефективността.
    Работил съм в различни по размер групи и съм виждал как проблемите в един екип, могат да доведат до огромни разлики в производителността. За да си добър в работата си е добре да поглеждаш нещата и през чуждите очи, много често се случва някой да има различна идея, която да се окаже много ефективна. Ако не търсиш чуждото мнение, рискуваш да загубиш много време за решаване на лесно решим проблем.
    Смятам че човек нищо не губи, ако споделя това което знае. Ако повече хора от екипа ти знаят това което ти знаеш, това би намалило нуждата да влагаш неимоверни усилия да правиш всичко сам. Ако една работа се разпредели, може да се свърши много по бързо.
    Лошата атмосфера в един екип намалява драстично неговата ефективност. Няма как да си вършиш добре работата, ако си напрегнат и изнервен от отношенията си с хората. От друга страна, всеки може да има лош ден и ако днес пропуснеш да отговориш хапливо на някаква забележка, утре ще имаш шанса да изградиш добри и спокойни отношения с този човек.

    Заключение

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