Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 
Показаны сообщения с ярлыком junior. Показать все сообщения
Показаны сообщения с ярлыком junior. Показать все сообщения

понедельник, 17 января 2022 г.

Инженерные практики могут ускорить тебя в 100х раз

Я человек ленивый, а потому если мне приходится ранать команду в консоли второй раз - сажусь за написание скрипта. И первых пару запусков все внутри меня радуется, поскольку автоматизировав рутину я ускорился на ровном месте. Теперь моя производительность немного выше того, кто не пользуется этим подходом.

Почему я коллекционирую различные ускорялки? Математика проста. Пусть это конкретное решение мне даст +15% в производительности. Какое-то другое решение даст +15%. Еще где-то что-то прочитаю и попробую, снова +15%. Складываем вместе 10 подобных решений и получаем 1.15 ^ 10 = 4.04. То есть 10 подходов ускоряющих тебя всего лишь на 15% в сумме дают + 404%, а это 4х в скорости! Подходов за 10 летний опыт может собраться на порядок больше. И для 50 штук прирост будет уже 1083%, 10x. А и это 15% роста продуктивности это так, самый минимум из того, что новая практика тебе может дать. Часто введение нового подхода сама по себе в разы тебя ускоряет. 

Внимательний читатель заметит, что любой новый подход в разработке облагает автора налогом. Естественно надо закладывать время на суппорт. Часто разработчик принимает решение сам, буду ли заморачиваться с новым кодом и его суппортом или по старинке сделаю, и делает это на основе критерия. Если я скажу, что новый подход даст тебе прирост в производительности в 10 раз, а при этом потребует от тебя всего лишь по 5 минут в день больше времени - дурак не согласится. Но обычно все не так. Времени на реализацию решения надо потратить сегодня 2-3 часа, а потом еще на суппорт решения раз в неделю по 0.5 часа. А прирост будет 10-20%, что уже не так леко прочувствовать, как 2,5 часа. На одной чаше весов - вклад в часах единоразовый с небольшим вниманием, а на другой % прироста производительности. % складываются иначе, чем часы. Копить % выгоднее, чем экономить время. Не всегда, но часто.

Правда, далеко не все дивиденды от инженерных полдходов можно "складывать" как описано выше. Есть независящие инструменты. Ну например я кодирую в Idea (она удобнее), а на сервере у меня все в docker (легче чем инсталить все на host машину). Там на X% ускорился, тут на Y%. Но так как работаю я ИЛИ в идее ИЛИ с докером на сервере, то % берется не от 168 рабочих часах в месяце, а от всего времени в IDE и отдельно всего времени во время обслуживания сервера. Результат складываем и "X% + Y%" дает ((1+X/100)*develop_time + (1+Y/100)*deploy_time). И в этом случае время проинвестированное в разработку и поддержание инструмента стоит оценивать критичнее. Но есть и фундаментальные подходы, скажем как следование принципам BabyStepsRefactoring, CleanCode, UnitTesting, TestFirst. Выгода от использования этих принципов ощущается одновременно и влияет друг на друга, потому формула суммирования будет более вкусной. Возможно не (1+X/100)*(1+Y/100) - это крайность. Но чем более влияния подходов друг на друга, чем чаще они используются, тем ближе мы к пермножению процентов, а не суммированию.

Надеюсь никтон не будет спорить в наше время с тем фактом, что рефакторить код необходимо, если ты хочешь хоть как-то влиять на энтропию системы. Держать код в чистоте - значит помогать себе и другим читателям понимать, что тут происходит. Делать рефакторинг можно грубо зарывшись по уши в код и потом тратя время на исправление всех ошибок компиляции, отловку багов, а можно элегантно - вооружившись компилятором ide и юнит тестами быстро привести код в рабочий вид. Но параллельно с этим всем можно производить рефакторинг маленькими шажками, что позволит исключить дебаг из процесса. А если нужна новая функциональность, то использования подхода TestFirst и сключит дебаг так же из процесса разработки. Привет TDD! Каждая из практик ценна сама по себе, но вмсте они дают возможность избавиться от Debug вообще. 

Debug - самая сложная и неуправляемая, а потому и дорогостоящая часть в разработке. Во время Debug ты мало что понимаешь - только тыцаешь 2-3 клавиши и смотришь в стек в ожидании инсайта. А без юнит тестов рефакторинг опасен, но если ты и осмелишься - много багов уйдет на прод. А без рефакторинга сложно и за CleanCode следить. Так вскоре техдолг не даст менять сисему как того нужно бизнесу. В какой-то момент исправление 1 баги будет порождать 2 новых. Тогда лучшее, что можно сделать - заморозить его. Ну или покрыть модуля автогенерируемыми юнит тестами, затем взяться за рефакторинг модулей с целью навести порядок в модели и сделать код чуть более clean. Затем выкинуть старые автогенерируемые тесты и написать нормальные, читабельные. Этот долг придется выплатить, если хочется продлить жизнь проекту. И лучше тут пользовать подходом ПрицнипСкаута. Сделать место стоянки после себя чище, чем оно было до тебя. Каждый день плати чуть-чуть времени уделяя этим инструментам: CleanCode + Refactoring + UnitTesting. И проект проживет дольше. 

Это один из примеров связки практик. Есть и другие практики. И тот из нас, кто научится использовать их по максимуму будет производительнее чем тот, кто не будет в 100 раз, в 1000 раз, а может и в 10000 раз. Возьмем студента новичка без опыта разработки - сложная задача может просто его застопорить на недели (если вообще задача будет решена), тогда как опытный миддл сделает ее за два дня. Вот и решай на сколько более производительный тот, кто сделал работу в сравнении с тем, кто не сделал ее. Я же верю в то, что хоть в среднем по индустрии Middle не сильно отличается от Senior (так просто устоялось), их производительность может отличаться в весятки, а то и сотню раз. Вопрос в том, остановился ли Senior в развитии на уровне инструментария Middle и дальше качает только SoftSkills или продолжает поиск инструментов его ускоряющих.

воскресенье, 19 января 2014 г.

Есть Хакер, а есть Конструктор. Кто ты?

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

Аутсорсинг (outer-source-using) - некогда маленькие, сейчас это большие заводы работающие по такой схеме. И чем больше они становятся, чем больше людей вовлечены в производство - тем больше разнообразных ярлыков можно навешать. Я хочу это сделать сейчас.

Какие ярлыки существуют сейчас? Trainee, Junior, Middle, Senior, TechLead, Architect. Есть еще ветка менеджмента, но не о ней сейчас. Сейчас о технической ветке. Похали - trainee - тот кто учится и еще не имеет комерческого опыта. Тут все просто. Junior - тот кто, только-только стал решать комерческие задачи, но еще больше проблем порождает (пока). Middle - на него можно положиться, он рабочая лошадка. Senior - наиболее опытный решатель вопросов в команде. TechLead - лидер команды, обычно Senior+. Architect - думает об архитектуре, такой себе метроном команды, вероятно даже занимается несколькими командами - видит все с высока. 

Все вроде как хорошо, но есть но. Феномен, который называется "Сеньйор в 23". Вместе с тем я знаю Junior разработчика, который из за скромности своей не сильно пинает менеджера о своем повышении, а просто красиво делает свою работу. И он при том, что по ощущению Middle+, по тайтлу пока еще Junior. Потому я больше не верю в метрику Ju-Mi-Se потому как она показывает больше качества меня как продажника, чем меня как технря. Такие реалии. 

(ничего против С/С++ не имею, в java все гораздо хуже) 
 
Винят в этом те же компании, которые пылесосят сотрудников друг у друга за +500$. Но стоп! Эти же компании нам дали возможность развиваться. Потому я пост начал с благодарности им за эту возможность. Тот % ребят, который хотел развития - он его продолжает и будет продолжать при любых условиях, даже если вдруг Айти рухнет. Есть настоящие Senior в наших рядах. Но большая компания хочет стать еще большей, а Senior в достаточном количестве нет - отбирают тех, что остались, снижая порог вхождения. 

Введу новый ярлык. Хакер - тот человек, у которого программирование - это хобби. Он будет этим заниматься, даже если прийдется днем разгружать кирпичи, чтобы оплатить инет и купить булку хлеба. Но вечером он будет делать свое хобби! Каждый день. Это Хакер. Хакер может быть начинающий, а может и опытный. Часто слышу, говорят рекрутерам заказы "хочу, чтобы глаза горели", "чтоб проект домашний был". Хакера хотят. Молодого. Почему? А потому что у него рост стремительный. В то время, как Сеньор-в-23 наберет опыта и так и останется на своем плато. 

Если ты попадаешь в тусовку Хакеров, все показатели твоего роста зашкаливают - за пару дней ты уже знаешь столько, сколько не дало бы тебе недели вебсерфинга в промежутках между задачами. Находится рядом с Хакером приятно просто потому, что чувствуется какая-то техническая аура у него, даже если он молчит. А если начнет что-то делать/показывать/рассказывать... Ну а покодить в паре с Хакером - это вообще высшая мера удовольствия. Опять же, кому как? Молодому Хакеру интересно с Хакером опытным. Сейнору-в-23 только, если это поможет. 

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

Где тут мотивация?  Притяну сюда пирамидку Маслоу, и пусть не серчает на меня.  Он говорит о том, что без закрытия нижних уровней потребностей сознание человека не будет меняться в сторону более высоких. Просто если ты хочешь кушать и не делал это уже пару дней, то о катании на санях с горки и речи быть не может. Убирать снег, да! Что угодно - лишь бы покормили. Когда сыт - хочется чтобы тебе ничего не угрожало. Если вокруг бьют/стреляют - следующая мысль, как бы укрыться от всего этого. Тут на санях не покатаешься в свое удовольствие - ну не до этого просто сейчас. И вот только, если ты сыт, а тело в безопасности хочется следующего уровня - быть принятым в комьюнити. Тупо хочется чтобы тебя взяли и сказали (в переносном смысле), что любят тебя, что теперь ты не сам, а есть МЫ. И так далее, по пирамидке вверх. Представь, что это сосуд, который по капле наполняется - мне так легче понять модель.  

Что айти компании сделали хорошо для небольшой части Украинцев? Они быстро закрыли вопросы по нижним двум уровням. И вот теперь специалист стал работать на более высоких уровнях. У него есть Компания - потребность в принадлежности и любви так же быстро (за пол года у новичка) решается. Идем дальше. Вкалываешь, накопил опыт - вскоре тебя будут уважать или как минимум (джуники) будут прислушиваться. И где-то тут начинается то, что заставляет Хакера уйти из компании, а Сеньйора-в-23 просто остановиться в развитии. Дело в том, что Хакеру дальше надо узнавать новое в своем хобби, делать это красиво, как художник - а на проекте часто требования другие, приземленные. А чтоСеньйор-в-23? У него хобби лежит в другой области, не в айти. Он в айти закрыл первые несколько уровней, а в 18:00 идет домой, ведь там ждет его его хобби. И имеет полное право! Он не плохой человек, он хороший, у него свои идеи, свои мысли, свое мировозрение, но лежат они где-то там, не в айти...

Я вот недавно был дома, в Черновцах. Гостил у Мамы. Недели две. Забилась канализация, я решил ее почистить. Будь я 20 лет назад, я бы фиг сделал это так просто как сейчас. В то время (~1990) сантехника была произведением искусства - каждая гаечка уникальная, все резьбы разные, все трубы чугунные, а стыки замазывались цементом. Сейчас у меня на демонтаж канализационнной трубы, чистку и монтаж обратно ушло 2 часа с уборкой места после работы. Дело в том, что все трубы стандартные, пластиковые - с ними легко управляться. Пока этим занимался я думал об айти. И вот какие аналогии родились. Сейчас, не надо быть опытным сантехником, чтобы сделать эту работу. Сантехники-Хакеры, придумали фреймворки для простой работы с трубами (для себя же придумали). И я простой юзер (достаточно, чтобы с руками не из попы) могу за пару часов сам управиться. А Сантехник-Хакер освободился для решения более сложных и комплексных задач. Порог вхождения уменьшился и теперь делать работу на дому могут простые-Сантехники-за-2-часа, которые быстро научатся этому и будут just do it свою работу, чтобы заработать для семьи. И не всегда их работа будет качественной, потому что дверь открылась самоучкам. Хочешь качества - плати больше и ищи сверх-занятого-Сантехника-Хакера.   

Короче в айти та же фигня сейчас. Просто есть хорошие ребята со способностью делать эту работу. И я бы не сказал, что очень сложную работу - вокруг все эти IDE, тулы, виртуальные машины, фреймворки, google, stack overflow, да и в придачу один-два Хакера на проекте - решение найти не сложно. Ну не сложно, признайся в этом. Можно просто пилить, ничем особо не выделяться, получать свои денюжки и тратить их на свое хобби. Но давай называть вещи своими именами. Ты не Хакер, ты Конструктор. Хакеры пишут свои фреймворки, а ты их используешь. Хакеры пишут ответы на stack overflow, а ты их гуглишь. Хакеры пишут книги, ты их читаешь. Хакеры создают Андроид, а ты пишешь на нем свою аппку, чтобы выложить на стор и заработать лайков. Хакеры постят в блог/хабру/доу, а ты пишешь там комменты или вообще просто читаешь. У Хакера дома книжная полка из айтишных книг, а у тебя ее нет даже на работе. Хакеры работают на выходных над своими проектами, а ты отдыхаешь (или делаешь что-то полезное но в другом домене, не в айти). Ты Конструктор.

Нет, конечно же я не преуменьшаю твоего вклада в развитие айти - ты решаешь проблемы заказчика, который собственно и платит всем деньги. Но стоит признать, что ты не Хакер, а хороший парень с хобби в другом домене, который в айти потому, что................. (нужное впиши), но не потому, что тебе это интересно в чистом виде, как наука. 

Вопрос в лоб, сколько бы ты времени уделял тем задачам, которые решаешь сейчас, если бы тебе пришлось за это платить денег? Членский взнос, за пребывание в офисе. И тебе тут никто не заплатит! Прийдется где-то работать, а потом приходить в офис, отдавать деньги за то, чтобы еще немного поработать с командой над проблемами заказчика/домена. Если хоть пару часов в неделю ты бы этим занимался - поздравляю, это твое, ты - Хакер. 

Хакерспейс! Вот же оно! Ребята собрались и сами за свои деньги организовали место в котором можно делать любимое дело. Это не бесплатно, ежемесячный членский взнос тебе придется отдать из своих кровно заработанных денег. Но открываются новые возможности, новые контакты, новые знания, новые прорывы. "аааа, хачуу" - вот что ответил Друг, когда я ему рассказал о такой возможности. Вот он Хакер в этом. Его прет робототехника. А в чем Хакер ты? 

К чему же я это все растормошил? А дело в том, что моя мама может фиксить xml (тут и везде под "фиксингом xml" я понимаю работу, которая не требует выдающихся аналитических способностей и многолетнего опыта в домене). Еще 30% Украинцев может фиксить xml. Если им рассказать, как это сделать правильно. Моя Мама будет рада получить за это 200$ в месяц. Тот Бизнесмен, который недавно вмешался в наш разговор с другом и попросил ему помочь создать сайт смог бы это сам сделать, или попросить мою Сестру это сделать (если сам занят), а она получила бы своих 100$. Мой другой Друг освободился бы от "фиксинга xml" на проекте и написал бы свой язык программирования (он фанат этого), а третий Друг написал бы свой ИИ играющий в карты, а не верстал бы дизайн для очередного инет-магазина, просто потому что он может и к нему обращаются, а больше никто рядом не может. Хакеры должны заниматься задачами на передовой айти. Конструкторы пусть используют готовое решение Хакеров чтобы сделать полезные дела. А все остальные пусть просто умеют включать компьютер и гуглить решение повседневных проблем, разработанные Конструкторами. 


Среда, в которой айтишником стать будет проще имеет ряд особенностей. Сеньорам-в-23 будет все сложнее удержаться на своих позициях ничего не делая. Прийдется делать! Небольшой спуск по пирамидке Маслоу вниз не помешает, встряхнет это болотце. На Украине столько голодных потенциальных-айтишников-Конструкторов, жажущих делать пользу и заработать себе на нормальную жизнь. Те, кто сейчас расслаблены вскоре напрягутся. А Хакеры, освободившись от "фиксинга xml" бдут заняты все более высокотехнологично-важными-имзеняющими-будущее-делами. Эх!! Нравится мне время, в которое мы живем!

Напоследок несколько неприятных вопросов.

Менеджер, 
- зачем искать себе на проект Хакера, которому будет скучно там? 
- зачем Конструктору знать так много всякого, чтобы выполнять простой "фиксинг xml"? 

Первым ты перекрываешь кислород, подсаживая Хакера на зарплатную иглу и не давая возможности ни уйти с проекта ни развиваться дальше оставаясь на нем. Вторым ты так же не даешь возможности развиваться. Но но но! Перестань!

Хакер, 
- какого фига ты еще ждешь? Вокруг столько всякого рождается, а ты "фиксишь xml". Начни уже кодить свои идеи. В свободное время. Автоматизируй наконец этот "фиксинг xml". Найди в компании проект, usergroup или просто одиноких единомышленников - делайте это в паре, втроем, группами, в или за пределами компании. Но делайте! 

Интересуешься языками - напиши свой. Интересуешься роботами - иди и делай их. Все ждут твоего решения. У тебя столько гениальных идей. Будешь ждать - их кто-то реализует. Ведь идея не приходит в голову одному, она как дождь - падает сразу на всех, кто попал под дождь. Сделай что-то уже сегодня! Удивляй!  

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

- зачем ты расходуешь свой уникальный талант (сочетание софт и хард скилзов, делающих из тебя айти тренера) на то, чтобы научить еще 20 человек в месяц? Как же все Украинцы, их 40 000 000. А вас, тренеров, в айти всего, ну пусть 1000. Как тебе научить 40 000 человек? Как тебе такой челлендж? Вот где магия.

Рекрутер, 
- зачем тебе спамить Хакера вакансиями, которые интересны только твоему заказчику? Хакер все равно в 99,9% случаев откажет тебе. Не так ли? Лучше, вместо того чтобы искать возможности увеличить поток спама в 2 раза, помоги Хакеру сделать то, что он надумал - найди заказчика, который поддержит его финансово и даст ему проект-возможность. Будь Продюсером Хакера. Помогай людям, а не закрывай вакансии. 

- за атришен с кого спросят? Убеди своего Заказчика, что ему не нужен Хакер на проекте, а достаточно Конструктора. Все хотят себе Хакеров на проекте. Чтобы глаза горели и все такое... Ну наймете вы его, пройдет месяц - он уволится. И в чем профит? Работай с Заказчиком, а не просто озвучивай его волю рынке as is.

- учись! Попробуй не только гуглить на википедии описания, но и ковырять технологии, ходить на тусовки. Чтобы с тобой интересно было общаться Хакеру, чтобы Конструктор к тебе прислушивался, а Заказчику ты мог дать совет и задать дельные вопросы. Пусть ты будешь Продюсером для 100 специалистов в какой-то узкой области, в которой сам что-то можешь сделать. Магия случится, поверь!   

Конструктор,
- думаешь, получать 3000$ это автоматически значит, что ты крутой разработчик? Просто сейчас так платят. Просто нехватка кадров. Там, за границей тебе мало что светит, если каждый день ты не развиваешься. Не веришь? Едь попробуй. Ну или поучаствуй на международных олимпиадах/соревнованиях. Какое место занял? То-то же. А Сертификат получить слабо? Почувствуй, как напрягутся все твои сфинктеры во время подготовки к сдаче какого-то международного сертификата. Вот как надо отрабатывать свои зарплаты. 
 
- зачем отрабатывать те деньги, которые ты зарабатываешь - спрашиваешь? Чтобы заработать еще больше. Смотри, как это делает Хакер. Он не из за денег старается. Хоть иногда и по-чуть-чуть подглядывай за ним. И выучи ты наконец эти шаблоны проектирования, коль уж кодить взялся. Кроме них есть еще 100500 других инструментов, которые ты до сих пор не использовал и никогда не узнаешь про них, пока не начнешь задавать себе вопрос "а как мне сделать мою работу в 2 раза быстрее". Задавай этот вопрос чтобы делать больше пользы - деньги не линейно, но все же зависят от твоего вклада. Менеджер увидит это, оценит. Учись! Будь экспертом в своем деле. Покажи пример. 
   
- думаешь, как сегодня будет всегда? Твоя работа сейчас возможна только потому, что ты делаешь ее с каким-то допустимым для Заказчика уровнем качества, но главное дешевле, чем это делают у него в стране. Постоянно повышая себе ЗП и понижая (не повышая его каждый день) качество своей работы, ты помогаешь заказчику осознать, что ему делать в нашей стране нечего. А ведь ты хочешь чтобы так как сейчас было еще лет 30? Я хочу! Давай постараемся вместе.   

Заказчик на Украине, 
- думаешь твои айтишники не уйдут? Рядом есть большая аутсорсинговая компания и много западных продуктовых - с ними тягаться сложно, но все же подглядывай, как это делают они. И да, отправляй своих ребят повышать квалификацию. Ты делаешь нереальное - делаешь бизнес в нашей стране. Спасибо за это! Но цени своих Айтишников. Это твой капитал, твоя инвестиция в завтра - завтра все будет в сети. Вот увидишь!

- ты еще не имеешь команды айтишников для поддержания твоего бизнеса? Все переходит в цифру. Начни это делать уже сегодня. Ты даже не представляешь, насколько больше возможностей там, в сети. Айтишники знают новости, они могут придумать такие штуки - сядь с ними, на равных, обсуди их идеи относительно твоего бизнеса. Магия случится!

Фух! Выговорился. А теперь за работу!
Чтобы продолжение как всегда следовало...