• ,

20+ лет спустя или Я все-таки стал им! Часть 3

Продолжение истории «бородатого эникея». Предыдущая часть тут

Третья попытка
Снова, как и давным-давно при попытке изучения книги «Философия Java», я смотрел на это многоуровневое (multi-tier) веб-приложение и ничего не понимал. Ведущий разработчик сыпал названиями технологий, библиотек и фреймворков, и большая часть из них была мне совершенно незнакомой, а меньшая — знакомой только по статьям, а тут все это реально работало, и как! Я даже представить себе не мог, какой сложности внутри должно быть такое приложение, и очень удивился, когда узнал, что разрабатывали его всего 4 человека чуть больше года.

Второй раз я удивился, когда рассмотрел внимательно картинку на мониторе разработчика. Какая-то странная оболочка над рабочим столом Windows оказалась… Mint Linux-ом. До этого момента я был уверен, что Linux пригоден только для серверов, ведь под ним нет ни Microsoft Office, ни 1С! Но разработчик сказал, что у него вообще нет Windows на компьютере, и что для разработки на Java Linux удобнее.

К сожалению, я был всего лишь админом, и должен был только устанавливать и настраивать это программное обеспечение. И еще — когда, окончательно запутавшись, я шел за консультацией, тихо завидовать. Завидовать тому, с каким мастерством сеньор использует Linux для решения админских задач. Он явно был куда более знающим админом, чем я, а ведь администрирование не было его основной работой!

В общем-то, именно разработчики ПО оказались в этой компании самыми «продвинутыми» сотрудниками, причем знающими не только свои технологии, но и предметную область. Некоторые из них даже читали лекции и вели практические занятия в ВУЗах.

… Шло время, я вполне освоил настройку оборудования и ПО, успешно провел несколько внедрений, побывал в большем количестве командировок, чем за всю прошлую жизнь. Руководство было довольно, зарплата понемногу росла. Но по мере того, как работа перестала требовать 100% участия мозга, а первоначальное восхищение технологиями сменилось пониманием их ограничений и недостатков, снова проснулся внутренний голос. Он потихоньку нашептывал: ты ведь хотел стать программистом! Ты хотел разрабатывать программы, чтобы люди ими пользовались. Тебе нравилось анализировать проблемы и придумывать способы их решения. А кто ты сейчас? Обычный технический специалист, хоть и квалифицированный. Весь твой комплекс со всей его начинкой нужен только для того, чтобы на нем крутились те самые программы! Смотри, программисты имеют гибкий график, им разрешают работать удаленно, у них зарплата больше твоей, с ними все носятся как с …, короче говоря, как с творческими работниками. И при этом они пишут такое …, ну, в общем, не очень хорошо пишут программы, с ошибками и недоделками, а сдавать заказчику все это потом не им, а тебе! Неужели ты не хочешь оказаться на их месте?

Правильно заданный вопрос — половина ответа. Да, я не знаю современных инструментов и технологий, не умею сам писать такие программы, но что мешает мне изучать чужие? Тем более, что они у меня под рукой – я их регулярно устанавливаю, настраиваю, демонстрирую и даже сдаю.

Воспользовавшись паузой между проектами, начал разбираться с git, поставил maven. Первый шаг — самому собрать все компоненты из исходного кода. Это оказалось совсем непросто: куча непонятных библиотек, какое-то шаманство с версиями, бесконечные хаки и костыли на каждом углу и — полное отсутствие хоть каких-нибудь описаний. Но я понимал, что в реальной разработке наверняка придется столкнуться с подобной ситуацией, и продолжал изучение. Появились первые результаты: разобрался, где что, нарисовал схемы взаимодействия между компонентами, документировал внутренние API. Постепенно становились понятными многие проблемы, возникавшие при внедрении, и кажется, появились идеи, как некоторые из них можно устранить. Начал писать ошибки в багтрекер. Поскольку у меня уже было определенное понимание «внутренностей», описание ошибок получалось достаточно точным и их охотно исправляли. Появились мысли об улучшениях и доработках. Чтобы их «протащить» через руководство, пришлось постигать науку служебных записок и выступлений на совещаниях, а также писать постановки, которые постепенно от пары-тройки абзацев стали превращаться в многостраничные документы со схемами и диаграммами. Рисуя блок-схемы, узнал слово «UML» и изучил книгу «Learning UML 2.0». Постоянно приходилось копаться в коде, пытаясь понять, что и как там сделано и как это можно доработать с минимальными усилиями. Java при этом я не знал от слова «совсем» и понимал код на том уровне, на котором хватало полузабытых знаний C и умений искать в Google.

Падение рубля я встретил в очередной командировке и как-то не очень задумывался о последствиях: внедрение шло с проблемами и было не до того. Но вскоре из компании стали один за другим уходить разработчики, начиная, естественно с самых сильных. Оно и понятно: раньше у нас им платили, скажем, 100 тыс., а в зарубежной компании — $3000. Теперь у нас им по-прежнему платят 100 тыс., а в зарубежной компании — по-прежнему $3000, но, как говорится — почувствуйте разницу. Двухкратную. Это слишком много, никакой мотивацией такое отличие в зарплате не перекрыть.

После ухода очередного разработчика оказалось, что я — единственный кто знает систему целиком «изнутри». Новым разработчикам кто-то должен был объяснять, что и как делать. Приходилось постоянно отвечать на вопросы, разбираться в предлагаемых решениях и оценивать результат. В какой-то момент кто-то из разработчиков назвал меня тимлидом. Я посмеялся — ну что за тимлид, который не может написать сам ни строчки кода? Cамое удивительное, что при всем при этом разработка вполне себе двигалась, доработки реализовывались и ошибки исправлялись.

Где-то в конце года, отыскивая решение очередной проблемы, я набрел на сайт javarush.ru — и выпал из рабочего процесса на несколько дней, пока не прошел все 10 бесплатных уровней. Это было именно то, чего мне не хватало! С первого же задания подключил плагин для IDEA и дальше все задачи решал только в ней. После этого немедленно оплатил доступ на месяц и продолжил заниматься. Сначала успевал проходить по полтора уровня в день, потом темпы стали падать. Имевшихся знаний перестало хватать, надо было разбираться. Вдобавок, не всегда получалось понять, почему не принимается решение задачи, хотя оно явно правильное, тестов написано достаточно и все работает. Впрочем, и с этими недостатками я занимался с огромным удовольствием. Теперь я понимал в коде системы многое из того, что раньше никак не давалось, и даже пытался делать простейший code review. Дополнительно к курсу я читал актуальную редакцию все той же «Философии Java» в полном варианте и, разумеется, habrahabr со stackoverflow.

Месяц прошел, подписка закончилась и я остановился на 24 уровне. Честно говоря, под конец «непонятливость» проверки задач стала действовать на нервы. Больше времени уходило не на решение задачи, а на выяснение причин, почему решение не принимается. Да и свободного времени стало маловато, близился релиз.

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

В тот момент, когда заветная цель казалась столь близка и я буквально чувствовал, как за спиной раскрываются крылья, такая «мелочь», как получение оффера, не могла меня остановить. Обновил резюме, довольно быстро получил приглашение и пошел на первое в жизни собеседование в качестве Java-разработчика…

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

5 комментариев

Roman_kh
Класс. Только всё кучей написано, читать сложно.
Отредактировать бы)
+ за то, что знания по окружению очень важны для разработчика!
mtechno
В каком году это все было?
Хорошо бы указать привязку ко времени…
firstprime
набрел на сайт javarush.ru — и выпал из рабочего процесса на несколько дней, пока не прошел все 10 бесплатных уровней.

А тут очень обидно стало. Я на javarush ровненько два с половиной месяца и только сегодня закончу 10ый уровень( сразу как дорешаю последнюю задачу).
И про проверку задач — в точку. Очень раздражает, когда из 6 часов, 4 — это бой с валидатором.
lichMax
Да я тоже быстро прошёл первые 10 уровней, но вроде бы не за несколько дней, а недели за две или за неделю. Тоже помогло небольшое знание Си и Си++.
zzzz
И про проверку задач — в точку. Очень раздражает, когда из 6 часов, 4 — это бой с валидатором.
Не переживай, на реальном проекте «валидаторы» будут похлеще ;). Особенно, если учитывать расплывчатость требований и сжатые сроки. Валидатору огромный поклон — благодарая борьбе с ним сейчас боевые задачи решаются гораздо легче.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.