Карьера программиста. Глава 3. Университет

Продолжение рассказа «Карьера программиста».

Закончив вечернюю школу, пришла пора поступать в университет. В нашем городе был один университет технической направленности. В нем же, был один факультет «Математики и Информатики», на котором была одна кафедра «Компьютерных систем», где обучали будущих IT-шников — программистов и админов.
Выбор был невелик и я подал документы на специальность «Программирование вычислительной техники». Впереди было 2 вступительных экзамена. По языку и математике.
Экзаменам предшествовало собеседование, и выбор формы обучения — бюджет или контракт, т.е. бесплатно или за деньги.

На моем собеседовании присутствовали родители, которые переживали за поступление. Разумеется они выбрали контрактную форму обучения. Стоила она к слову около 500$/год, что на 2003 год были большие деньги, особенно для нашего маленького города. Хорошо помню диалог отца с девушкой из приемной комиссии:
Девушка: Вы можете попробовать сдать экзамены на бюджет, а если не получится, тогда перейти на контракт. Оплатить можно частями.
Отец: Нет, мы уже решили, что будем поступать на контракт
Девушка: Ну почему же, вы ничем не рискуете
Отец: Нет, это все равно риск. Скажите, а на контракт все поступают?
Девушка: Да, все поступают. Наверное только полные дебилы не могут
Отец: Тогда у нас шансы есть… ухмыльнувшись, сказал он, и мы подписали документы на поступление
Конечно, еще свежи были в памяти родителей перформансы из старших классов, поэтому с годами я понимаю, почему так было сказано.

Летом, до поступления, я продолжал покупать книжки на все 40$, которые мне выдавала бабушка с пенсии.
Из запомнившегося и значимого:
1. «UML 2.0. Объектно-ориентированный анализ и проектирование». Книга, которая научила меня проектировать софт любой сложности, продумывать архитектуру, раскладывать все на компоненты, прописывать use-cases, рисовать диаграммы UML. Это те знания, которые нужны сеньорам, лидам, архитекторам. Тем, кто материализует систему из пустоты, когда есть только описание идеи.
Я знаю людей, которым уже за 30, а они до сих пор не могут принять решение, если нет указания сверху, от разработчика выше рангом. Во фрилансе и удаленной работе, когда часто работаешь один на один с клиентом — эти знания также бесценны.
Актуальны они и для инди-разработчиков, которые создают новые приложения и сервисы. Хотя мало кто заморачивается детальным проектированием. Поэтому и имеем софт такого качества, проглатывающий всю память, с кривым UX.
2. «Стандарт ANSI C++ 98». Не совсем книга, но это более 800-та страниц справочной информации. Разумеется, я не читал ее раздел за разделом, а обращался к конкретным правилам языка при разработке своего компилятора С++. Глубина знаний языка, после изучения и реализации стандарта не описывается ни одним прекрасным эпитетом. Можно сказать, что ты знаешь про язык все, и даже больше. Очень долгая, кропотливая работа по изучению стандарта. Но впереди у меня было 5 лет университета, так что в шею никто не гнал
3. «Delphi 6. Практическое руководство.». Это был стремительный прыжок в мир GUI и формошлепства. Порога входа почти не было, а Pascal я уже неплохо знал. Учась в университете, я написал львиную долю коммерческих программ на Delphi. Это был софт для аспирантов вуза, учет мелкого бизнеса, гос. учреждений. Затем было несколько заказов на фрилансе. В середине нулевых Delphi господствовал на рынке разработки под Windows. До сих пор, на кассе в местных магазинах можно увидеть программы, со знакомыми шрифтами и контролами, которое сразу отличает Delphi-приложение от любого другого
4. «Самоучитель MFC». Освоившись с Delphi, логично было продолжить создавать UI на С++. Это было в разы сложнее, не все получалось и было понятным. Однако и эту технологию я довел до стадии применения в коммерческих проектах. Одна немецкая антивирусная компания, распространяет мою программу, написанную на MFC до сих пор.
5. »3 диска с MSDN Library 2001». Интернет у меня появился не сразу, да и насколько помню, MSDN Library не лежала в сети в 2003 году. В любом случае, мне проще было установить справочник MSDN на локальный ПК, и легко находить документацию по любой WinApi функции или MFC классу.
uml2
Самые значимые книги прочитанные в период 2002–2004 года

Это книги, которые были прочитаны в период 2002–2004 год. Разумеется, сейчас это ветхое legacy, которое пачками переписывается на .NET и Web-технологии. Но это мой путь, возможно у некоторых из вас был похожий.

Первый семестр


В конце лета, пришла пора сдавать вступительные экзамены в университет. Все прошло гладко. Я сдал экзамен по языку и математике и был зачислен на первый курс специальности «Программирование вычислительных систем».
Первого сентября, как и полагается, я пошел на первые в своей жизни пары. «Студенческая пора — самая светлая пора в жизни» — говорила мне мать. Охотно в это верил.
В первый день прошло 3 пары по общеобразовательным предметам, все познакомились друг с другом в группе, и в целом универ оставил приятное впечатление.
Наконец нас стали учить true-программированию на языке Си! А еще, в добавок, преподавали историю информатики, цифровой техники и многой другой актуальной для меня информации. Даже мат. анализ был кстати, так как он мне позволял более глубоко понять, что написал глубоко уважаемый Дональд Кнут.

Пары по программированию проходили в драйвовой для меня атмосфере. Наконец-то люди шли ко мне за помощью. Я чувствовал себя нужным. В начале пары, нам давали задание написать программу. Задача была рассчитана на полторы пары, потом пол часа на проверку. Мне удавалось написать задание за 3–5 минут, а остальное время я ходил по кабинету и помогал другим разобраться с задачей.
Компьютеров на всю группу не хватало, поэтому чаще всего мы сидели по двое за одним ПК. Завидев мои способности, возле моей парты садились трое, четверо, бывало и по 5–6 человек не гнушались подсесть, чтобы научиться тому, чему я научился еще пару лет назад по книге Кернигана и Ритчи.
Одногруппники видели мои способности и сами подходили с вопросами, или предлагали просто погулять после пар. Так у меня появилось много друзей, с большинством из которых дружим до сих пор.

Зимой подходила пора первой сессии. Всего нужно было сдавать 4 предмета: 2 разновидности высшей математики, история и программирование. Все сдалось, где на 4 балла, где на 3. А программирование мне поставили автоматом. Преподы уже знали мои навыки, поэтому смысла меня проверять не видели. Я радостно явился с зачеткой на сессию, чтобы сходу получить в ней роспись и уже было собирался возвращаться домой, как одногруппники попросили меня остаться и постоять за дверью. Что ж. Разместившись у подоконника, на выходе из кабинета, я стал ждать. Рядом со мной крутился еще один парень, который также сдал экзамен автоматом.
— «Ты зачем тут задерживаешься», спросил я
— «Хочу заработать на решении задач. А ты зачем?»
— «Я тоже. Только зарабатывать не собираюсь. Если нужна будет помощь — то по доброте душевной, решу просто так»
Мой оппонент замялся, и что-то пробурчал в ответ.

Через время, из аудитории стали выходить одногруппники, вынося с собой свернутые листочки, на которых были задачи с экзамена.
«Помоги решить» — просил первый смельчак. «Хорошо, сейчас решу» — отвечал я. Не проходило и 5 минут, как я шариковой ручкой нацарапывал решение на помятом листочке и отдавал его назад. Завидев, что схема работает, из аудитории стали выходить люди гораздо чаще, и порой даже по двое-трое за раз.
На моем рабочем подоконнике было три стопки листиков. В одной пачке вновь прибывшие TODO-листы. Передо мной был листик In Progress, и рядом лежала пачка «Done».
Это был мой звездный час. Вся группа, а это без малого 20 человек, обратилась ко мне за помощью. И я помог всем.
А тот парень, что хотел заработать, спешно удалился уже через несколько минут, понимая, что ловить тут нечего, все внимание было сосредоточено на альтруисте.
Вся группа сдала экзамен на 4 и 5, а у меня теперь появилось 20 друзей и незыблемый авторитет в вопросах программирования.

Первые деньги


После зимней сессии, на всем факультете пошли слухи о том, что есть парень, который может решить любую задачу по программированию, из которых нам задавали на дом или во время сессии. Причем не только среди первокурсников, но и на старших курсах прошла молва.
Как я уже писал, в группе у меня сложились со всеми дружеские отношения после «звездного часа» на экзамене, и с парой ребят мы стали общаться очень близко. Мы стали настоящими друзьями, и проводили много времени за пределами универа. Для простоты изложения, назовем их Илон и Ален (никнеймы близки к настоящим).
Илона мы называли по имени, Ален же, был прозван в честь Ален Делона, за его способности охмурить любую красотку. Девушки буквально кружились вокруг него, в разнообразных количествах. В плане знакомства и закручивания отношений на ночь — Ален Делону не было равных. Он был настоящим альфа-самцом для женского пола, что большинству айтишников совершенно не свойственно. Помимо дел амурных, Ален по призванию был дизайнером. И если требовалось что-то нарисовать, например популярные тогда мигающие баннеры формата Web 1.0 — то он делал это с легкостью.

Про Илона можно рассказать гораздо больше. Мы пересекаемся с ним до сих пор, уже спустя десяток лет после универа. На первых курсах он представлял из себя тощего, довольно молчаливого парня. (Чего не скажешь про сегодняшнего мордатого дядьку на джипе). Впрочем я был такой же — худощавый и неразговорчивый. Поэтому, я думаю, мы быстро нашли общий язык.
Часто после пар, я, Илон и Ален, собирались в пивной, накрытой брезентом. Во-первых, она была через дорогу от универа, а во вторых на «рубль» и 50 копеек, можно было набрать ништяков на 2 часа зажигательного пати. Вроде разливного пива и сухариков. Но суть была в другом.
Илон и Ален были из других городов, и жили в съемной комнате. Денег им постоянно не хватало, а бывали случаи что и голодать приходилось. Счастливые моменты, когда им на карту поступала стипендия в 10$, отмечались в тот же день и далее наставало время «затянуть пояса» и жить на то, что Бог пошлет.

Разумеется такой расклад мотивировал приезжих студентов искать пути дополнительного заработка. А перед ними, на расстоянии вытянутой руки, сидела «светлая голова» в виде меня. Который к тому же податливый и редко отказывает людям в помощи.
Не знаю, правильно ли я описал ту ситуацию, но в конечном счете эти посиделки в пивнухе, привели к создании первой в моей карьере IT-компании под названием СКС. Название просто было составлено из первых букв наших фамилий. Наша молодая компания, в лице трех фаундеров рвала конкурентов и весь универ на части в течении четырех следующих лет.

Илон был РОПом. То есть — руководителем отдела продаж. А именно, в его обязанности входило находить новых клиентов, для нашего аутсорсингового бизнеса. Каналом продаж были горизонтально распечатанные листовки А4, с простой надписью: «Решение задач по программированию». И внизу телефон Илона.
Такого рода наружная реклама была размещена на каждом этаже, где могли появится студенты, которые изучают программирование.
Дополнительным, более сильным с точки зрения лояльности клиентов, был канал продаж через сарафанное радио.

Бизнес модель была простая. Либо по рекомендации, либо по объявлению, к нам обращался студент университета. Давал описание задачи по программированию, которое нужно было решить к определенному сроку, и за студенческий прайс я ее решал. Илон занимался продажами и получал свой процент. Ален Делон реже учавствовал в нашем бизнесе, но если нужно было сделать дизайн, картинку или привлечь дополнительных клиентов, то он всегда был кстати. Своим обаянием, он приводил к нам достаточно много новых людей. Мне же оставалось лишь обрабатывать этот конвейер со скоростью 5–10 задач в день. Дедлайны были жесткие — не более недели. А чаще, нужно было сделать на вчера. Поэтому, такие обстоятельства быстро научили меня писать программы в «потоке», не отвлекаясь на всякую мелочь вроде землетрясения с магнитудой 5,9 или крупного ДТП за окном.

В самый жаркий сезон, перед сессией, то есть в декабре и мае, казалось что у меня на компе были задачи всего универа. Благо большинство из них были однотипны, особенно когда к нам обращался оптовик в лице представителя целой группы. Тогда можно было сделать 20 задач, например на ассемблере, меняя только по 2–3 строчки. В такой сезон, лиды текли рекой. Единственное чего нам не хватало, так это дискет. В 2003–2005 годах, у бедных студентов нашего города, не было такого понятия, как скинуть через интернет. Тем более, не было никаких гарантий оплаты, что сейчас называется термином escrow. Поэтому, компания СКС, как исполнитель заказов, назначала встречу на территории университета и мы отдавали дискету с решением. Рефанда (от англ. refund — возврат платежа по просьбе клиента) почти не было. Все оставались довольны, и получали свои 4–5 баллов, если могли выучить, то, что я добавлял в файл readme.txt на дискету. Хотя, и простое демо полностью рабочей программы — тоже часто вызывало вау-эффект у преподов.

Прайс был смешной конечно, но мы брали количеством. Для примера, обычная задача на дом, стоила 2–3$. Курсовая 10$. Джек-пот в виде программы для кандидатской работы выпадал один раз, и это было аж 20$ за приложение для аспиранта готовящегося к защите. В жаркий сезон этот доход можно умножать на 100 клиентов, что в итоге было больше средней зарплаты по городу. Мы чувствовали себя крутыми. Могли позволить себе ночные клубы и отрываться там по полной, а не давиться чебуреком на последние копейки.

С точки зрения моих навыков — они умножались с каждой новой студенческой задачей. К нам начали поступать заявки с других факультетов, с другой программой обучения. Некоторые старшекурсники уже во всю использовали Java и XML, когда мы налегали на C++/MFC. Кому-то нужен был Ассемблер, кому-то PHP. Целый зоопарк технологий, библиотек, форматов хранения данных и алгоритмов я узнавал для себя при решении задач.
Этот универсализм остался со мной и по сей день. В работе над проектами, также используются самые разные технологии и платформы. Сейчас я могу написать софт или приложение под любую платформу, ОС или девайс. Качество разумеется будет разным, но для бизнеса, с которым я в основном имею дело, как правило важен бюджет. И человек-оркестр для них — это сокращение бюджета ровно во столько раз, скольких разработчиков я могу заменить своими навыками.

Если говорить о самой большой пользе, которую мне принесло обучение в университете — то это не будут лекции по алгоритмам или философии. И не «научится учится», как модно говорить про вузы. Первое — это будут люди, с которыми остались дружеские отношения после обучения. А второе — это та самая фирма СКС, которая ковала из меня профессионального разработчика, реальными и разноплановыми заказами.
Хочу вспомнить фразу, которая очень подходит под эту часть рассказа: Программистом человек становится тогда, когда его программами начинают пользоваться другие люди и платят за это деньги.

Таким образом, бренд компании СКС был широко-известен не только в студенческих кругах, но и среди преподавателей. Был даже случай, когда один из преподов приехал ко мне домой, чтобы я помог написать ему программу для его научных нужд. Он в свою очередь, помогал мне по своей специализацией. Мы оба так увлеклись нашей работой, что оба уснули на рассвете. Он на диване, а я на стуле перед компьютером. Но свои задачи выполнили, и оба были довольны работой друг друга.

Поворот судьбы


Начинался 4-ый курс университета. Последний курс, по окончанию которого вручают диплом бакалавра. На нем практически отсутствовали общеобразовательные дисциплины, а было лишь то, что связано с компьютерами и сетями. Сейчас, порой мне жаль, что я не успевал или не проявлял интереса к той же электронике или внутреннему устройству сетей. Сейчас дочитываю это по необходимости, но уверен, что эти базовые знания необходимы любому разработчику. С другой стороны — всего знать нельзя.
Я заканчивал писать свой С++ компилятор, который уже умел проверять код на ошибки по стандарту и генерировать ассемблерные инструкции. Я мечтал, что вот-вот, и смогу продавать свой компилятор по 100$ за лицензию. Умножал это на тысячу покупателей и мысленно
переносился в Hammer, с басами от 50 Cent из колонок и красотками на заднем сиденье. Что поделаешь, в 19 лет — такие приоритеты. Фишкой моего самопального компилера было то, что он выдавал ошибки на русском, вместо не всем понятного английского от Visual C++ и gcc. Мне виделось это киллер-фичей, которую никто в мире еще не изобрел. Дальше думаю рассказывать смысла нет. До продаж дело не дошло. Однако дошло до глубоких знаний языка С++, которые кормят меня до сих пор.

На четвертом курсе я все реже ходил в университет, потому что знал большую часть программы. А ту что не знал, решал бартером со студентом, который соображал например в электронике или теории вероятности. Чего мы только не придумывали тогда. И незаметные наушники на проволоке, в которые диктовался ответ. И выбегание из аудитории, чтобы гуру в своей специальности за 2 минуты начеркал тебе решение всего экзамена. Отличное было время.
На этом же курсе, я начал задумываться о настоящей работе. С офисом, реальными коммерческими приложениями и достойной зарплатой.
Но в то время, в нашем городе, можно было найти работу разве что программистом
»1С: Бухгалтерия», что мне совсем не подходило. Хотя от безнадеги, я был готов уже и на это. На тот момент моя девушка давила на меня, чтобы мы переехали жить в отдельную квартиру.
А то спать, когда родители через стенку — совсем не комильфо. Да и мне, решать студенческие задачки уже поднадоело, и хотелось чего-то большего.

Пришла беда откуда не ждали. Я додумался дать объявление на mail.ru, что ищу работу с окладом в 300$ на позицию С++/Java/Delphi программиста. Это в 2006-ом году. На что мне в основном отвечали что-то в духе: «Может Вам стоит написать Биллу Гейтсу с такими запросами по зарплате?». Меня это расстраивало, однако среди кучи подобных ответов, нашелся человек, который привел меня во фриланс. Это была единственная возможность в нашем обнищалом «Лас-Вегасе» зарабатывать хорошие деньги тем, что я умел делать.
Так обучение в университете, плавно перетекло в работу на фриланс бирже. Закрывая тему университета, можно сказать следующее: на 5-ый курс я не ходил. Было одно программирование и такое понятие, как «свободное посещение», которым я пользовался на 146%.
Единственное что нужно было сделать — это защитить диплом специалиста. Что я с успехом и сделал, с помощью своих друзей. Стоит сказать, что к этому курсу я уже переехал от родителей в съемную квартиру и купил новую машину. Так началась моя карьера профессионального разработчика.

Следующие главы будут посвящены отдельным проектам, самым лютым фейлам и самым неадекватным клиентам. Карьере во фрилансе от 5 до 40$/час, запуске своего стартапа, как меня банили на фриланс-бирже Upwork и как из фриланса я пошел в тим-лиды во вторую по величине нефтяную компанию в мире. Как возвращался назад на удаленку, после офиса и стартапа, и как решал внутренние проблемы с социализацией и вредными привычками.

Продолжение следует…

© Habrahabr.ru