Мар. 302009
 

(към първата част)
(към втората част)

В началото на 2000 година Свилен влезе в казарма. Тогава а аз станах де факто дясната ръка на Балтов. По това време още бях предимно developer – нямаше отявлен DBA. Всъщност по това време всеки в софтуерната къща правеше всичко: разработка на код, репорти, човъркане по базата, съпорт на потребители…

Двамата с Георги (друг новодошъл колега, много ценен пич) пренаписвахме модула „Клиенти” за преминаване от Lotus в Oracle. Модул е силно казано, защото клиентите бяха само в една таблица (с над 50 колони). Просто пренаписахме формата, и добавихме някои нови функционалности (разбирай колони). Някъде по това време Балтов склони да разшири екипа и в София, поради липса на кадри в Габрово. Взехме двама програмисти (Иван “Thunder” Димитров и Росен). Момчетата работеха много добре. Естествено, географското разпределение доведе до цял нов клас от проблеми за софтуерната къща, но се справихме.

Експеримента се оказа относително успешен. През лятото се взе решение да се случи нещо като втора фаза на Диригент 2.0 – да се напишем модули „Склад” и „Доставки”. Това означаваше добавяне на функционалност, голяма колкото сътворената до този момент. За да се справим с това, пуснахме обяви че търсим кадърни програмисти в разни вестници – дори и „Труд” и „24 часа”. Това се оказа и най-подходящото време Балтов да си пусне една от неговите любими няколко-седмични летни отпуски. И така аз му станах заместник и освен другото, говорих по телефона с кандидат-програмисти и приемах документи. Направи ми впечатление кандидатурата на един кандидат – Веселин Политов. И то ми направи впечатление с това, че иска някаква безумна (според мен) заплата – беше нещо от рода на 400 долара. По това време аз, който се имах вече за ценен кадър, съм вземал някъде към 200-250 долара. Абсурд, кой ще го вземе тоя надувко?

От тази кампания назначихме двама top-developers: Тихомир Трифонов и Веселин Политов. Даже участвах на интервюто на Веско. Може да се каже, че съм участвал в интервюто на настоящият ми шеф 🙂

Уговорката с тях беше да работят няколко месеца в Габрово (до завършването на модулите Склад и Доставки), като фирмата им осигури квартира. Т.е. в този момент при нас, в Габрово, се появиха двама големи разбирачи. Помня една сутрин, малко след назначаването им, Христо Ковачев (изпълнителния директор на фирмата) ме срещна в коридора на централния офис и ме попита с усмивка как се справят новобранците. Аз му казах, без да крия възхищението си, че са много добри. Тогава Ковачев ми „Гледай от тях. Занаят не се учи, занаят се краде”.

Много правилно, както винаги. Но тогава ми звучеше супер странно и честно казано не го схванах много.

По-късно през годината в екипа (но в София) се включи още един бъдещ змей – Даниел Панев. И от него можех да открадна това-онова, но по това време вече бях вече много привлечен към database-related tasks. Оказа се, че просто ми „лепнат”. Вече бях супер задобрял в SQL-а. С идването на Веско научих, че може да е полезно и писането на pl/sql – значителни части от складовия модул бяха реализиране вътре в БД. Така че лапнах и pl/sql-a. Много добре ми лепнеше и performance tuning-а. Добре разбирах как работи БД и какво я боли.

Не се сещам кога, трябва да е било някъде през 2001, имаше един съдбовен ден в който Балтов, Весо и директорите седнаха и обсъдиха развитието на софтуерната къща. Тогава отговорностите се разделиха и на мен, съвсем логично, се падна да отговарям само и единствено за БД. Аз станах този, който решава/одобрява какви таблици и процедури има в БД; аз отговарях за проблеми с performance и availability на БД; аз отговарях за инсталиране и пачване на сървъри и т.н. Освен това като най-запознат с БД се занимавах и с изготвянето на всякакви нестандартни космати репорти при поискване и други „висши пилотажи“ из данните.

* * *

И така до септември 2005, когато назначихме Иван Новаков като стажант DBA. Февруари 2006 наехме и Станко Димов като Oracle експерт. Така аз от самотен DBA станах „Старши експерт БД и ръководител направление БД”. По това време Веселин Политов вече беше управител на софтуерната къща, а аз изпълнявах и ролята на негов заместник в Габрово.

За няколко месеца успях да предам достатъчно неща на Иван Новаков, за да може да поеме ежедневните ми DBA задължения. През месец май 2006 казах на Ковачев и на Веско, че ми е писнало от Диригент и си тръгвам. Те, съвсем далновидно, ми предложиха да остана в софтуерната къща, но да се преместя в София и да работя по външни проекти заедно със Станко. Естествено прехвърлянето на всички Диригент-щини към Иван не стана толкова рязко и изведнъж; в началото му помагах доста. Но постепенно той пое нещата много добре и сега се занимавам наистина само с външни проекти.

Послепис:

Сега софтуерната къща е около 30 човека. От тях с Диригент се занимават около 7. Самият Диригент работи на 12 сървъра, като от централния към всеки от snapshot сървърите репликират над 1800 snapshots. Важните данни се движат с не повече от десетина минути закъснение във всяка посока (Филиал -> ЦО или ЦО-> Филиал)

Аз съм един от хората, които изградиха тази система. И обратното – един от хората, които се учиха и се изградиха покрай „Диригент 2.0“. Правил съм и грешки, правил съм и глупости. Но след като всичко работи, значи съм правил повече положителни неща

 Posted by at 16:28
Мар. 302009
 

(към първата част)

Когато постъпих, имаше още четирима членове на софтуерната къща – Балтов (шефа), Свилен, Светльо и Дидо. Дидо (един от „старите кучета”, т.е. от екипа, написал първия Диригент) напусна малко след това и почти не го помня.

Оказа се, че съм влязъл в екипа малко преди първото тестово внедряване на Диригент. На 14.4.1999 системата заработи във филиала на Стемо в Габрово. Мисля, че заработи доста гладко (от техническа гледна точка). Но то нямаше и кой-знае каква функционалност – можеше да се правят търговски поръчки, по тях да се издават фактури и протоколи. Няма складова наличност, движения, пари, доставки и т.н. Нямаше и репорти. Само фактури и протоколи.

Три месеца по-късно Диригент 2.0 бе внедрен и в Софийския филиал на фирмата. И наистина си заработи. Нещо, което се смята за небивал успех.

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

Стемо още отначало (1990 г.) е възникнала като софтуерна фирма. За съжаление в държава, в която авторските права (особено над софтуерен продукт) имат само някаква имагинерна стойност, софтуера не е (бил) добър бизнес. Аз още в училище съм ползвал пиратски софтуер, написан от един от основателите на фирмата (станал по-късно търговски директор – Иван Божинов). Става дума за най-железния драйвер за кирилица под DOS, известен като CYR.COM. Ползвал съм пиратски и резидентния речник RELEX под DOS. Освен тези програми, в първите години на Стемо има и някои разработки за текстилната промишленост (CAD-системите „Дизайн” и „Дизайн-жакард”), някаква система за управление или наблюдение на телефонни централи и не знам още какво. Но от рано са напипали, че със софтуер в тая държава не се храни семейство и са се преориентирали към хардуера.

Все пак софтуерната жилка не е прекъсната и някъде в средата на деветдесетте са сформирали екип, който да напише търговска система за вътрешно ползване. Подходили са много сериозно за времето, направили са много добър бизнес анализ, но архитектурата е била куца. Първата версия на Диригент е писана на C, Pascal и Asembler; не са ползвали СУБД, а са си организирали и репликирали данните както могат. Освен това екипа не е имал отявлен лидер или project manager – въртели са се през няколко месеца. И съвсем оптимистично са решили да напишат всичката функционалност и да я внедрят наведнъж.

Е не се е получило. Някои от по-малките филиали са работили няколко месеца. Но няколко седмици след като Диригент 1.0 е внедрен в София, просто се е сринал. Проекта, който вероятно е погълнал доста средства в няколкото години, в които е писан, е зарязан и екипа се е разпаднал.

И така, малко след това идва Стефан Блатов и успява да убеди собствениците, че той може да им напише системата. Гласуват му доверие. Изгражда си екип, сяда и написва системата. И тя наистина тръгва – не само в Габрово, а и в София.

На този фон, малко след успешното внедряване в София, Светльо (по това време последния от екипа, писал и по Диригент 1.0) реши, че е подценен и направи следната глупост: прескочи Балтов (шефа на софтуерната къща), отиде директно при Ковачев (изпълнителния директор на Стемо) и каза „аз съм направил това и това, мисля, че трябва да получавам такива (големи) пари”. За което беше освободен. Не защото иска пари, а защото прескочи прекият си началник. Тогава разбрах колко се държи на йерархията в тази фирма (или поне в софт. къща). В крайна сметка Балтов е този, който идва, хваща се и за около година написва система, която работи. Е, вярно, в много ограничена функционалност. Но работи.

Като се замисля, в този момент положението в софтуерната къща се е оказало супер изгодно за мен. Защото освен мен (и Балтов) имаше само един член на екипа с малко повече стаж и доста повече опит – Свилен. А той, колкото и да е по-добър професионалист, нямаше моя младежки ентусиазъм за работа по нощите. Аз се юрках с рогите напред във всяко предизвикателство. Успявах да изпълня всички задачи, които Балтов ми дава (е, явно е преценявал какво да ми даде). Пък и винаги съм бил съвестен. За това само в рамките на няколко месеца след постъпването ми станах един от хората, на които се разчита.

И ето един пример колко се разчита на мен. През лятото започнахме да внедряваме всички други филиали. Но по това време Балтов си взе съвсем заслужен отпуск от 3 седмици. Който частично се застъпи с двуседмичния отпуск на Свилен. И така единствени в софтуерната къща останахме аз и Мартин – един колега, който постъпи 3 седмици преди това. Двамата обикаляхме България и внедрявахме. 04.8.1999 в Стара Загора, 09.8.1999 в Пловдив (там имаше доста опарени от първия Диригент), 18.8.1999 в Плевен, 20.8.1999 в Бургас, 23.8.1999 във Варна, 24.8.1999 в Русе. Между другото във Варна и Русе още си пазеха и ползваха Диригент 1.0 – в него си бяха въвели клиентите. Т.е. ползваха го като телефонен указател.

И така нещата изглеждаха стабилни. Да, обаче… помните ли какво СУБД използвахме? Lotus Domino. Един много добър продукт, който, обаче, не става за СУБД. Domino просто не е релационна БД. Нямахме първични ключове (да не говорим за чужд ключ). Аз лично бях направил една util-ка, която търсеше аномалии в данните – примерно повтарящи се номера на поръчки (това истинските СУБД го правят с първичен ключ) или фактури, в които номера на поръчката не съществува в таблицта с поръчки (т.е. проверка на чужд ключ). Освен това с натрупване на данните взе да се държи нестабилно. Всъщност щом се натрупаха 2000 фактури в един от филиалите дневните отчети започнаха да гърмят брутално – Access violation. Това се случи в края на септември 1999. Представям си каква тръпка е изпитал Балтов (и не само той)! Това е бил един от кошмарите – тъкмо системата е понатрупала данни и да се срине!

В този момент Балтов взе съдбовното за мен решение да преминем към Oracle – защото в предишен проект е писал на това. А и успя да го изтегли от сайта на Oracle. На 20.9.1999 успя да инсталира Oracle 8.1.5 в централния офис и създаде схемата Dirigent с всичките и десет таблици (по това време в БД имаше търговски поръчки, фактури, протоколи, филиали, потребители). Заедно със Свилен драснаха едни quick-and-dirty програмки, които да прехвърлят данните за деня от Lotus на Oracle. И така в продължение на няколко дни всяка вечер изчаквахме всички да свършат работа и данните в Lotus да се репликират от филиалите до ЦО. После прехвърляхме данните в Oracle, генерирахме дневен отчет и им го пращахме да си го дооформят.

В това време Балтов разучи как се прави basic replication в Oracle (тогава ставаше графично – с Replication manager, койтo по-късно влезе като част от java-базирания Enterprise Мanager). И една съдбовна сряда двамата с него отпрашихме към най-проблемния филиал, който се беше разгърмял. Там на 30.9.1999 създадохме една БД и започнахме да репликираме от ЦО таблиците с налетите в тях данни. Което се оказа голям проблем. По това време връзките не бяха кой-знае колко стабилни – модем, братче. Всеки филиал си имаше собствен доставчик на интернет и в общи линии свързаността към ЦО беше available някъде над 85%. Но често дропеше. Помня, че успяхме да прекараме почти всичките таблици още на първия ден, но една от всичките (май беше users) така се закучи, че я мъчихме няколко дни. А това без да познаваме механизмите, които стоят зад създаването на snapshot, използването на snapshot log, работата на push и refresh, е тежко.

Обаче стана.

В следващите месеци обиколих всички филиали за да инсталирам Oracle и да им прехвърля данните. Обикновено бяхме двамата с Мартин. Спомням си много ясно ходенето ни до Варна: по план се падаше на 9 декември. Да, обаче, и двамата бяхме студенти (аз – втори курс, той – четвърти). За щастие Мартин беше пълен въздържател, пък и аз още нямах книжка.

На 8 декември аз заедно с две каруци колеги от университета се стоварихме да празнуваме студентския празник в една вила крей Дряново. Аху-иху, много яко стана. Да, обаче продължи цяла нощ. Сутринта към 6 часа аз се стоварих в Дряново, за да може Марто да ме вземе на път от Габрово към Варна. Той се оказа по-отговорен от мен – поне беше подремнал 2-3 часа. И така, подкара той колата по дългия път към Варна (беше една Лада Самара). Кара си той, а на мен ми се спи. Ама се опитвам да не заспя, за да не се унесе и Марто. А в колата едно топло…

На влизане във Варна вече се унасях неудържимо. Но щом се доставихме в офиса и се раздвижих, се пооправих. Е, сигурно съм ударил и някое кафе. Почнахме си работата, нещо се позакучи и откарахме в офиса до 22 часа. Малко е да кажа че бях уморен – бях просто пребит. И тук идва най-драматичната част.

Всъщност Варна е родният град на Марто. Така че нямаше никакъв шанс да спим на хотел. И така, морни-морни, се доставихме у тях към 22:30. А техните нагласили едни софри, едни неща… Нали детето се прибира само няколко пъти годишно, а и на другия ден трябваше да отпътуваме към Бургас. И тук идва моята трагедия. Проблема е, че (както казах) Марто е пълен въздържател. Майка му също не пие, както и сестра му. И баща му реши да използва случая и да си сръбне от хубавата домашна ракия заедно с мен. А аз – предната нощ не спал ама хич, цяла нощ дивял, после пътувал няколко часа, бачкал цял ден… леле, не беше лесно. Но издържах 🙂

Много ясно си спомням момента (към полунощ), в който раздигнаха софрата и ми показаха къде да легна. Отцепих на секундата.

(продължение…)

 Posted by at 14:17
Мар. 302009
 

Вчера се навършиха 10 години от както постъпих на работа в Стемо. В далечната 1999 година…

Как се случи това?

Представете си следната картинка: аз – студент първи курс в не-много-реномирания ТУ-Габрово. Изключително съвестен – със съквартиранта ми (Цецо) я сме пропуснали една лекция – я не (това през първата година, де). Живота ми не е охолен, но и не търпя лишения. Тогава нашите ми даваха по 20 000 (неденоминирани) лева на седмица и се прибирах вкъщи всеки уикенд.

Един ден (в началото на март) виждам на таблото в един от корпусите на университета следната обява:

Фирма Стемо търси да назначи
1. Програмист
2. Интернет сътрудник
Може и студенти. За контакти…

Не съм си търсил усилено работа, но реших да кандидатствам. Думите, които ме накараха да се пробвам, бяха „Може и студенти”. По това време нямах никаква представа с какво се захващам. Мислех, че може да ме вземат за „Интернет сътрудник”, което си представях като човек, който стои в някой интернет клуб на фирмата (от къде да знам, че Стемо нямат интернет клубове) и пуска нет на клиентите. Естествено, предполагах че ще вземам основно нощни смени, а през деня ще си уча.

На другия ден приключих университета към 15:00 – 15:30 часа и отидох в офиса на Стемо. Казах, че искам да попълня тестовете за програмист и за интернет сътрудник. „Ама и двата ли?“ – учучди се секретарката – „Няма да ти стигне времето…”. (какво пък толкова има да се попълва, се зачудих пък аз).

Е наистина не ми стигна времето. Не помня кой попълних първи, но за втория ходих на следващия ден. И толкоз. После – „Ще ви се обадим ако ви одобрим”.

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

Минаха 3-4 седмици. След първата предположих, че не са ме харесали; след втората се примирих, а към третата почти бях забравил, че съм кандидатствал. И нещеш ли една вечер баба Мара (хазяйката) ми съобщи, че майка ми се е обадила, да съм отивал на другия ден в Стемо за интервю. Ха!

Първи срещи

На другия ден се стъкнах, взех си дебелата дипломна работа от училище (бях писал програма на Borland Delphi 2 – докарах над 110 страници барабар с разпечатката на праграмата) и се стоварих във фирмата. Заведоха ме в една приемна и малко след това дойде Стефан Балтов – управител на софтуерната къща по това време. Каза ми, че съм на интервю за програмист и ме попита дали мога да покажа нещо, което съм писал. Аз това и чаках – извадих дипломната работа и я тупнах на масата. Добавих рецензията на Владо от ЦИУУ към СУ-София и една публикация във вестник „Наука и Техника”, в която пишеше, че аз и още двама съученици (споменатият ми по-горе съквартирант Цветан и най-близкия ми приятел в техникума, Юсеин) сме направили нещо много велико и печелим второ място в някакъв национален конкурс. Бая мижава работа, като го погледна сега. Но тогава наистина мислех, че е Нещо.

Колкото и смешно да ми изглеждат сега тези неща, явно Балтов е усетил, че ако не друго, поне съм нахъсан и имам поне малко опит. Както се сещате, през 1999 година не се срещаха много хора, писали на Delphi (който тогава всъщност беше популярен колкото е Java сега). Особено в град като Габрово.

Та Балтов се направи на впечатлен и отиде да донесе неговото най-мощно оръжие – някакви тестове на Borland. Не знам как съм се справил с тях, но явно е боло задоволително, защото в един момент повика и Христо Ковачев (изпълнителния директор) и аз разбрах, че тая работа ще я бъде.

Ковачев, от своя страна, прояви много добро разбиране и мениджърски подход. Обясни ми, че работното ми време може да е много гъвкаво (нали съм студент редовно обучение) и се поинтересува колко време, по моя преценка, мога да отделям за работа. Аз се бях прежалили за нощен труд в интернет зала. Така че това да съм Програмист, и то когато ми е удобно, ми звучеше като изпълнена мечта (в която дори не съм вярвал). Предположих съвсем трезво, че мога да отделям минимум 5-6 часа на ден. Кога мога да започна – ами веднага. След това дойде коварния въпрос какви пари искам. Аз не можах да измисля сума и се разбрахме да си помисля до другия ден (падаше се петък) и да дойда да оформим всичко.

Не знам дали мога да опиша еуфорията, която изпитвах. След като си тръгнах, изтичах до квартирата да си хвърля нещата и после до първия Булфон да се похваля на майка ми. И да я питам какви пари мога да поискам като part-time developer.

Тук е времето да хвърля още малко перспектива. Това всичкото се случва само 2 години след Виденовата зима. Икономиката не е кой-знае колко стабилна. Майка ми работеше като екскурзовод в музей, баща ми – строител (без много работа през зимата). Заплатите им не са били големи. По това време Трявна беше безкрайно западнал град с разбити заводи, висока безработица и никакъв туризъм. Аз – някакво студентче в първи курс. Истински програмист съм виждал само на картинка и ако и да е имало някакви норми за заплатите в бранша, няма начин да ги зная. Парите, с които се издържах седмично бяха 20 000 лева, още 20 000 ми беше квартирата. Вземах някаква стипендия за отличен успех, но не помня колко, а и я даваха 2-3 пъти годишно.

За това краткия семеен съвет доведе до цифрата от 100 000 лева заплата на месец, от която да започна преговорите.

На другия ден (отново след лекциите) отидох да се разберем с Балтов. Но без да ме пита той направо ми съобщи „С господин Ковачев решихме да ти даваме по 100 долара за начало. Можеш да започнеш от понеделник.”

100 долара? Това трябва да се е равнявало на поне 180 000 лева. И е било може би над 1/4 от семейния ни доход. Лелеее…

И така, на 29.03.1999 година аз започнах като „Програмист“ в Стемо ООД.

По това време не знаех какво е СУБД, не знаех какво е таблица, не бях чувал за Oracle. Но фирмата ми повярва и ми даде шанс. Шанс, който аз използвах много добре. Вярно е, че това което съм сега, съм си го изградил аз лично с много труд. Не съм „парашутист”, имал „чичо владика”. Работил съм здраво, работил съм и нощем, не съм се скатавал. През следващите години редовно си изкарвах в офиса до 8-10-12 вечерта (и по късно), даже имам някои случаи, в които съм стоял по цяла нощ, а после и на следващия ден, когато се налага.

Но имах шанс. Балтов и Ковачев ми дадоха шанса да се докажа. Да се развия. Да отида като никой и да стана Някой. Много съм давал на Стемо, но и много съм получил. И съм благодарен за това.

10 години. Лелеее…

Първи работен ден

На първия ми работен ден в Стемо (29 Март 1999) ми дадоха компютър и ме оставиха да си инсталирам Delphi. После ми стовариха сорса на Търговско-Информационна Система „Диригент” 2.0. Все още в етап на разработка, и то съвсем от скоро. По това време сигурно е имало 5-6 форми (ако борим logon-а и формата за отчети) и 10 таблици. Не използваше СУБД, а нещото, което се казва Lotus Domino (достъпвано през ODBC драйвер). Не много стабилна работа, както се оказа няколко месеца по-късно 🙂

И така, компилирах си аз Диригента и го пуснах. В същото време си продължих с инсталацията на Office и други неща. В един момент се усетих, че филхармонията още не се е показала. И видях, че всъщност програмата е тръгнала, но аз не съм я забелязал. Стори ми се странно, че login екрана не излиза пред другите прозорци – тогава ми изглеждаше логично (може би съм си го представял малко като splash screen). Попитах колегите защо така и някой смънка „абе аз се пробвах да го направя, ама нещо не стана и го зарязах”. В тоя момент аз реагирах супер странно и нехарактерно (за мен); казах нещо като „ха, какви сте програмисти, да не можете един прозорец да покажете”. И сега, след десет години, се стряскам как съм бил толкова нагъл. Явно от толкова добри случки в предните дни съм си повярвал, че морето е до колене.

Балтов реагира светкавично и ми хвърли първата задача, за да ме тества: „Имаш 3 дни да го направиш. Ако успееш, печелиш една боза” (По това време в софтуерната къща се раздаваха такива награди. Същият беше и залога при басове, облози и т.н.)

Тук моя късмет проработи. Порових малко и намерих една Win32 API функция, която прави точно това. И успях а изпълня задачата за по-малко от час. А Балтов отиде лично до близката сладкарница и ми донесе един литър боза.

(продължение…)