Єдина Країна! Единая Страна!

Ukrainian software development market structure

Липень 19, 2014

It’s not a secret that Ukrainian software development market represented mostly by outsourcing industry. This article isn’t about why you should or shouldn’t outsource  to Ukraine and/or open there development center of your company. There are tons articles like this in Internet. It’s absolutely obvious that in most cases you should.

I’m about to help you solve another problem you’re gonna face — choose city/region. This is biggest European country with one of the biggest population in Europe (45 millions), and difference between possibilities will have in Lviv, Kyiv, Kharkiv and Odesa is pretty big.

A bit of boring but useful history

First of all you should have a good understanding of the way software development market has been developed in Ukraine. In the view we know/have it today has started appearing in the early 90s after Soviet Union has been collapsed. Thousands of extremely high-qualified engineering that have been trained to build and send rockets into space, which were supposed to destroy United States just in a few hours become unemployed.

In that times as it usually happens, other guys gifted by business-oriented mind have seen possibilities new political and economic orders gives them, and started offering services to Northern American (mostly) and Western European companies, which required cheap, but qualified engineers.


Поради моїм 16-ти — 20-ти річним друзям

Січень 4, 2014

Мені 25, і я знаю дуже мало про світ, життя та про те, як усе це гівно влаштоване. Я ще толком не побачив світу; не спробував багатьох речей, які він пропонує; я дуже мало знаю про людей, і я й досі допускаюсь купи дурних помилок, взаємодіючи з ними. Коротко кажучи, я не те, щоб дуже розумний.

Але. Останні років 6-7, я, якимось чином спромігся прийняти чимало дуже вдалих рішень, результатом яких стало розуміння та бачення речей, щодо яких сліпі більшість моїх однолітків, яких я зустрічав на своєму життєвому шляху.

Школа та університет

Можеш палити, пиячити, і забивати болт на усе. Це не матиме анінайменшого значення, бо щойно ти здасиш незалежне тестування, і вперше до всрачки нап’єшся на випускній вечірці — почнеться нове життя. Життє, якому буде до шмиги ким ти був у школі: твої взаємостосунки з викладачами в університеті та одногрпниками лиш віддалено нагадуватимуть те, до чого ти звик у школі.

Перед тобою постане вибір: або готуватись до нового стрибка, який настане курсі на 3-му — максимум після отримання диплому, і продовжути насолоджуватись життям в університеті, як ти це робив у школі, або ж почати готуватися до дорослого життя.

Якщо потрібно — міцно візьмись правою рукою за волосся, і якомога дужче, намагаючись подолати інстинкт самозбережння — вмаж своєю головою об стіл, а потім скажи собі, що насправді ти робиш вибір між тим, яку частину свого життя зробити кращою: наступні 5 років, чи ту, яка розпочнеться через 5 років, і, матимемо надію, протриває бодай років 50, чи скільки тобі там обіцяв держкомстат.

Забий на соціальне життя. Забий на університет. За перших 2-3 роки візьми з нього так багато, як зможеш: вивчи фундаментальні дисципліни своєї спеціальності, познайомся з людьми, які тобі подобаються та налагодь стосунки з викладачами, які розуміють, що роблять, і роблять це для вас, а не тому, що більше нічим в життя зайнятись (дивно, але мені такі траплялись).

Пошук досвіду і пригод

Якщо маєш бодай 2-4 тис. грн., — пакуй речі, і їдь подорожувати на усе літо. Не важливо куди: мало грошей та часу — їдь до Грузії; більше грошей та часу — лети до Індії/Непалу/Тайланду/пофіг. Проведи там 3 місяці блукаючи будь де з наплечником, спи в наметі, сиди голодний, і проси монахів у місцевих селах про миску рису за допомогу в роботі…

Спілкуйся з усіма приємними людьми, які тобі трапляються: від бідних фермерів з Луганщини до добреоплачуваних лондонських брокерів, яких ти час від часу зустрічатимеш у дешевих хостелах. Стань справжнім майстром спілкування: вчись в американців, канадійців та астралійців. Вчись шукати позитивні сторони у людях. Головне — аби вони були тобі приємними. Запевняю тебе, у світі дуже багато надзвичайно цікавих та розумних людей, до яким добі, як до Азовського моря пішки, і зустріти їх значно простіше, аніж Тобі здається: вони знають про світ і життя значно більше тебе, а тому робитимуть багато описаних у цьому пості речей.

Стань волонтером. Випадково натрапив в інтернеті на групу студентів, які допомагають дитячим удинкам? Запропонуй свою допомогу. Байдуже яку — щонайменше познайомишся з хорошими людьми, і зрозумієш скільки щастя приносить допомога іншим.

Подорожуй. Я благаю тебе, подорожуй. Доки ти молодий — витрачай усі свої гроші та час на подорожі, навіть, якщо потім доведеться місяць спати на підлозі у зйомній квартирі друзів. Подорожі допоможуть дізнатись про самого себе, інших людей, світ, життя та про те, як вони влаштовані. Ти потім плакатимеш від щастя згадуючи про своє спонтанне рішення витратити усю стипендію на поїздку до Праги.

До речі, саме люди, яких ти зустрінеш допомагаючи іншим та подорожуючи піднімуться на найвищі соціальні щаблі. 90% твоїх одногрупників, не кажучи вже про однокласників, створять нещасливі сім’ї ще до того, як тобі виповниться 25, і марнуватимуть більшість свого вільного часу п’ючи жигулівське з 2-хлітрової пластикової пляшки, і постячи гавнокартинки вконтактє. Я балагю тебе, уникай їх.

Робота

Гаразд, наступравді тут я маю мало, що сказати. Хибащо одне: якщо матимеш можливість почати свій кар’єрний шлях порівняно рано — віддай перевагу цьому сценарію над можливістю продовжити навчання в університеті. Хоча, це дуже залежить. Дуже.


Математична формула для наймання програмістів

Червень 11, 2013

Я насправді дуже мало знаю про процес найму прогармістів, бо ніколи не займався цим безпосередньо. Однак, я дуже люблю спостерігати за іншими людьми, колективами, компаніями, і т.д.

За останні кілька років мені довелось поспостерігати за чималою кількістю дуже різних процесів наймів програмістів. Моїм найяскравішим спостереженням є: що простіший спосіб пошуку та найму використовувався — то кращою та успішнішою буде команда: якщо ви вийобуєтесь півроку шукаючи чергового гавнокодера — знайдете якогось супер занудного мудака, який пропрацює на вас 6-9 місяців; наймете інженера просто за рекомендацію іншого інженера, якому довіряєте — матимете ще одного дуже хорошого програміста, який просто “увійде” в роботу, і, якщо ви не тупитимете — працюватиме з вами кілька років.

Оскільки люди тупі, і, як правило, допускаються дуже багато помилок в усіх сферах життя — найраціональнішим рішенням було б довірити цей процес математиці.

Геніальний вчений сучасності, нобелівський лауреат з економіки, Деніел Канеман, який витратив величезну кількість часу вивчаючи те, як люди повинні і не повинні прийняти рішення — розробив для армії оборони ізраїлю дуже простий алгоритм пошуку людей для школи офіцерів, якою він дуже люб’язно поділився з нами у своєї супер крутій книжці “Thinking, Fast and Slow”:

Suppose that you need to hire a sales representative for your firm. If you are serious about hiring the best possible person for the job, this is what you should do. First, select a few traits that are prerequisites for success in this position (technical proficiency, engaging personality, reliability, and so on. Don’t overdo it — six dimensions is a good number. The traits you choose should be as independent as possible from each other, and you should feel that you can assess them reliably by asking a few factual questions. Next, make a list of those questions for each trait and think about how you will score it, say on a 1-5 scale. You should have an idea of what you will call “very weak” or “very strong.”

These preparations should take you half an hour or so, a small investment that can make a significant difference in the quality of the people you hire. To avoid halo effects, you must collect the information on one trait at a time, scoring each before you move on to the next one. Do not skip around. To evaluate each candidate add up the six scores … Firmly resolve that you will hire the candidate whose final score is the highest, even if there is another one whom you like better — try to resist your wish to invent broken legs to change the ranking. A vast amount of research offers a promise: you are much more likely to find the best candidate if you use this procedure than if you do what people normally do in such situations, which is to go into the interview unprepared and to make choices by an overall intuitive judgment such as “I looked into his eyes and liked what I saw.”

Геніально, нє!? Давайте спробуємо застосувати даний алгоритм для програмістів.

Припутимо, вам потрібен embedded Linux інженер зі знаннями мереж. Тепер складемо перелік метрик (з ними можна спокійно не погодитись — це більшою мірою лише приклад), за пріорітетом:

  1. Кодив на С 5+ років. Прочитав “Expert C Programming: Deep C Secrets”.
  2. Писав мережний софт 2+ роки. Прочитав “The TCP/IP Guide”.
  3. Знає основи схемотехніки. Пройшов курси “Circuits and Electronics”, “Microelectronic Devices and Circuits”, та “Integrated Microelectronic Devices”.
  4. Працював в інших країнах, або ж провів бодай півроку свого життя у відрядженнях закордоном.
  5. Добре володіє англійською. Екстраверт. Має багато друзів. Вам комфортно з ним.

Крок №2 — складаємо перелік з 3-5 запитань для того, аби оцінити кожен з навиків. Сподіваюсь, у вас вистачить на це мізнків, інакше, навтіь математика не допоможе. Сумуємо бали, множачи їх на коефіціонт. Наприклад, 3 з 3-х за №1 — 3*1.5; 2 з 3-х за 2 — 2*1.4, і т.д.

Певно, найкращим, спсобом було б зібрати рекомендації, і прийняти рішення після звичайної неформальної бесіди, аби познайомитись з кандидатом особисто.

Це все. Головне — уникнути можливості використання емоцій та послідувати за егоїстичним бажанням набрати команду, яка тішитиме твоє его, а не робитиме роботу найефективнішим чином.


Чувак, йди додому!

Березень 20, 2013

Сцена: за п’ять хвилин до опів на дев’яту вечора. Київ. Десь посеред промислової зони, у 15-ти хвилинах ходьби від метро. Вівторок. У центрі опенспейсу з яскраво пофарбованими стінами, одного з численних українських аутсорсерів. 27 чоловік сидить на своїх поюзаних стільцях за 200 гривень з поломаними регуляторами нахилу “спинки”, і дебажить чийсь гавнокод.

Знайома картика? Мій досвід капідказує мені, що більшість з вас може знайти своє ім’я серед переліку отих самих 27 зануд без будь якого особистого життя.

Я маю запитання: Якого біса ти там робиш!?

Я ж знаю, що сьогоді ти приперся на роботу о 10-й, і витратив на обід від сили хвилин 25. За останні кілька років ти перечитав гору книжок та блог-постів з тайм менеджменту та продуктивності, а тому не марнуєш свого робочого часу на reddit, facebook та 4chat. Себто, твій робочий день закінчився більше 2-х годин тому (18:20).

late_nightworkerЧекай, я знаю відповідь: тому що…

…естімейти горять

…клієнт попросив

[37-літній проджет] менеджер[, вихованець совєцької школи] наполіг

…ти боїшся, що про тебе подумають колеги та начальство

Чувак, ти серйозно!? Ти й справді ставиш інтереси компанії, яка платить тобі 74.2 грн. за годину, і навіть чути не хоче про оплачувані наднормові вище за можливість розвивати стосунки зі своїми друзями/рідними та за читанням книжок? Не поспішай з відповіддю, бо я крикну у відповідь: “ну й ти й лох!” навіть, якщо ти цінуєш їх більше за час, витрачений на перегляд дешевих телесеріалів.

Після вирахування 9-ти годин, які ти дрихнеш, 2-х, які проводиш в у громадському транспорті, 1-ї години на ванну, і традиційних 8-ми на роботу, у тебе залишається 4 години.

4 години на добу, які ти, як істота розумна, повинен витрачати на особисте життя, саморозвиток та навчання.

Лише 4 години, кожну з яких ти готовий у будь який момент присв’яти неоплачуваним/низькооплачуваним наднормовим, тому що… (див. вище). Себто, ти цінуєш інтереси компанії та свого проджет менеджера, для яких ти — не більше, аніж ресурс, який вони спокійно позбудуться при першій же можливості/необхідності, вище за своє особисте життя, інтелектуальний рівень, фізичте та емоційне здоров’я!?

Уяви, ніби я щойно зацідив тобі по пиці сильного ляпаса.

Лиш трішки подумай над цим, адже працюючи наднормово:

  • Ти у більшості випадків, віддаєш свій час іншим задарма
  • Якщо причиною є дедлайн — будь певен: наступного разу твій геніальний РМ, аби лизнути клієнту — знову встановить нереальні терміни для проходження спрінту
  • Ти у прямому розумінні дозволяєш висмоктувати з себе фізичну та емоційну енергію, тим самим добровільно відмовляючись від особистого життя та речей, які роблять тебе щасливим
  • Звикаєш працювати напівсили у нормальні години, і віддавати останні кілоджоулі у екстремальні моменти, аби вчасно (інколи о 4-ї ранку) завершити роботу
  • Ти сильно перевтомлюєш свій організм, вартість відновлення якого у рази вища тієї платні, яку ти отримав за його експлуатацію

Найгірше те, що більшість дедлайнів, про які постійно волає твій менеджмент — це насправді не такі вже й дедлайни, але лише бажані цілі, які не погано було б досягати, аби твій лінійний менеджер гарно виглядав в очах свого начальства. Ти ж розумієш, що більшість заслуг він всеодно забере собі?

Це одна з причин, чому більшість людей — супер нудні й банальні: ти ж майже увесь свій час витрачаєш на роботу. Звідки взятись цікавому досвіду та знанням?

 

Read the rest of this entry »


Hacking: The Art of Exploitation

Березень 7, 2013

hacking_the_art_of_exploitation

Автори: Jon Erickson
Видавництво: No Starch Press
Рік видання: January 2008
Кількість сторінок: 488

ISBN-10: 1593271441
ISBN-13: 978-1593271442
 

 

 

 

“A book this good is a rare find, and certainly worth the read for any individual interested in security. Rating: 9/10″
—Slashdot

Я б дуже хотів, аби хтось змусив мене прочитати цю книжку після того, як я, будучи, здається, 12-літнім підлітком, подивився фільм Hacker, і вирішив стати програмістом. Жартую :)

Хтось з оглядачів книжки написав, що поперекомендував би її лише за перший розділ “Programming”, який сам по собі дає, мабуть, усі необхідні знання для кожного, хто має намір зайнятись системним програмуванням, безпекою інформаційних систем та просто зрозуміти, як влаштовані комп’ютери та, як працюють компілятори.

На щастя, її крутість не обмежується якісним ознайомленням читачів з основами програмування на С, і найцікавіше на цьому лише починається. Далі ви познайомитесь основними техніками експлуатації вразливостей у програмному забезпеченні, мережним програмуванням, навчитесь писати шел-коди та вивчите основи криптографії.

Найкраще те, що, як і кожна хороша книжка на практичні інженерні теми, “Hacking: The Art of Exploitation” дасть вам можливість залізти у кодинг та практику по самі лікті, надавши тим самим реальні практичні навички та досвід.

Must read усім, хто й досі хоче стати хакером з класичних фільмів 80-х — 90-х. Сумніваюсь, що є більш повні та якісні книжки на дану тему.

Зміст книжки:

0×100: Introduction
0×200: Programming
0×300: Exploitation
0×400: Networking
0×500: Shellcode
0×600: Countermeasures
0×700: Cryptography
0×800: Conclusion