Java Developer
6.45K subscribers
235 photos
8 videos
12 files
279 links
MAKE JAVA GREAT AGAIN

Мемы: @java_memes
加入频道
Ситуация — вы в поиске работы. Характеристика, которая больше остальных повлияет на выбор компании:
anonymous poll

Зарплата выше средней – 504
👍👍👍👍👍👍👍 56%

Возможность переехать в другой город/страну – 209
👍👍👍 23%

Удалённая работа – 108
👍👍 12%

Офис недалеко от дома – 47
👍 5%

Красивый офис – 21
▫️ 2%

Оплачиваемая медицинская страховка – 13
▫️ 1%

👥 902 people voted so far.
Пробуйте. Общайтесь. Кайфуйте

Я недавно был на презентации книги Ирины Хакамады. Не спрашивайте, как туда попал. Запомнил несколько мыслей, которые можно перенести и на наши будни:

«Общаюсь с молодыми бизнесменами-миллионерами. Зелёные — 22 года. Но как начнешь с ними говорить про деньги, процессы, бизнес, то понимаешь, что они очень уверенно, умно и по-взрослому мыслят. Всё потому что, много пробовали, запускали новые проекты».
Так же и нам нужно пробовать постоянно что-то новое, использовать интересные технологии, создавать никому ненужные приложения, проекты. А там глядишь и выстрелят.

«Главный минус современной молодежи, что она не умеет коммуницировать. Деньги, идеи есть, но нет умения договариваться.»
Мы с вами, как программисты, часто себя считаем самодостаточными. И это правильно с точки зрения психологии. Но когда хочешь расти как спец, важно еще постоянно общаться с коллегами, спрашивать совета у более опытных товарищей, обсуждать технологии.

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

Подглядел в приложении Тинькофф онлайн-ресурсы для изучения английского. Подкасты, фильмы, курсы, общение с носителями — всё, как надо.
​​JavaDoc

JavaDoc — cпециальные комментарии, которые предназначены для документирования Java-кода. С помощью этих комментариев можно описывать классы, интерфейсы, переменные, методы, пакеты. Хороший JavaDoc помогает новым пользователям быстро разобраться с библиотекой, с которой он не знаком.

Лучшие примеры JavaDoc — исходники самой Джавы. В каждом классе подробно описано, что делают и чего не делают методы, при каких условиях они работают, и как они справляются с ошибками. В общем, хорошая документация та, после которой не нужно гуглить туториалы или подходить к человеку, который её написал.
Бесполезный JavaDoc
Пример из исходников Джавы
Старт карьеры

Попросил своего друга Павла Погодаева @pogpp описать впечатления от первых двух недель работы программистом. В итоге получился небольшой рассказ о его первом месте работы. Слово Паше:

Первые дни работы программистом.
Год-полтора учёбы и подготовки к интервью, и вот он – оффер в не самую отстойную контору. Девочка-кадровик собирает бумаги, а ты ходишь очаровано смотришь на средний офис, команду разработки и переживаешь про себя. Вдруг ты самозванец, тебя спалят, что приврал в резюме про Spring Boot или Hibernate и не пройдешь испыталку. Но нет.

Начало везде одинаковое: читаешь бесполезную документацию, смотришь видосы, ни у кого особо на тебя нет времени. Но потом приходит она – первая таска. Как правило, простая, как 2 байта переслать. Через пару месяцев уже полноценно участвуешь в работе, несёшь ответственность за фичи и в целом появляется картина, как оно и зачем.

Моим первым проектом на пути программиста были кассовые приложения для Спортмастера. Из технологий – Hibernate, JavaFX + guice и божественный soap для связи с внешними системами. Через 7 месяцев я прозрел, что это сплошной багфикс и никакого роста. Стояк на работу стал не так крепок, и пришло время что-то менять. Как итог: новая приятная работа, доходы выросли за год в 2.5 раза, международный проект, переезд из Мск в СПб (да-да, не надо стесняться релоцироваться из-за денег) и вот оно счастье.
Хорошо — Плохо

Проглатывать исключения плохая практика

Плохо
catch (Exception ignored) {}

Хорошо
catch (Exception e) {
throw new RuntimeException(e);
}

Тоже гуд
catch (Exception e) {
log.error("Description", e);
}
Один из лучших вариантов пробрасывания ислкючения — создать свой специализированный. Например, UserNotFoundException, который унаследован от RuntimeException. Плюс обрабатывать исключение должен тот класс, который знает, что с ним нужно делать. Иначе прокидывать дальше.

Исключения нужно использовать только для сигнализации исключительных ситуаций и не использовать для корректного исполнения. Они намного дороже с точки зрения ресурсов, чем обычный возврат значения или управления.
​​@rs_n4k прислал в ответ на пост о проглатывании исключений
Пост для тех, кто сейчас обучается у нас на марафоне по Джаве
Хорошо — Плохо

Объявляйте переменные в как можно меньшей области видимости. Например, переменная i используется только внутри цикла. Её нужно объявить внутри цикла, а не снаружи.

Плохо
int i = 0;
for (i = 0; i < 10; i++) {
/* ... */
}

Хорошо
for (int i = 0; i < 10; i++) {
/* ... */
}

Плохо
int count = 0;
void counter() {
if (count++ > 10) {
return;
}
/* ... */
}

Хорошо
void counter() {
int count = 0;
if (count++ > 10) {
return;
}
/* ... */
}
Хорошо — Плохо

Везде, где это возможно, объявление и инициализацию переменной записывайте в одну строку. И каждую переменную объявляйте отдельной строкой. То есть не нужно использовать объявления такого типа int a, b;

Плохо
int i, j;
i = j = 100;

Хорошо
int i = 100;
int j = 100;
Кто такой CTO

Задал несколько вопросов Фёдору Борщёву, CTO в ГдеМатериал и автору канала @pmdaily.

— Расскажи, как прошел свой путь от простого программиста до технического директора

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

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

Тогда я и решил на какое-то время завязать с программированием, перебрался в Москву и пошел в студию Лебедева руководить дизайн-проектами. Студия — место с особой атмосферой и особенными людьми. Думаю, именно студия дала мне то, чего не хватало, чтобы стать CTO.

За время редких студийных выходных я выучил Django и сопутствующий стек (до этого писал на PHP). И под конец работы в студии начали сыпаться предложения об интересных технически-сложных проектах.

— Чем занимается CTO?

С точки зрения бизнеса, первая задача CTO — сделать работу с техническими специалистами такой же управляемой как, скажем, с менеджерами по продажам. Бизнес не должен задумываться о том, сколько у него программистов, на каких технологиях они работают, какое у них покрытие кода тестами и объем технического долга. Вместо этого он должен выдавать требования, получать в ответ цифры ФОТ (оплата труда) и результат к заявленному сроку.

Дальше начинается специфика — в маленьких компаниях CTO должен быть мастером на все руки. И в продукт влезть не хуже продакт-менеджера, и код пописать на уровне синьора, и бизнесу рассказать, какие требования лучше отдать в разработку, а какие сделать по старинке на Экселе и AmoCRM.

В больших компаниях, наоборот, CTO становится ближе к администрированию — выбирает правильных подрядчиков, задает им бизнесовые KPI, обращает много внимания на HR — как делить команды (по продуктам? по компетенциям? по фичам?), кого ставить во главу этих команд, как нанимать правильных людей и организовать передачу знаний.

Кроме бизнеса «сверху», есть еще программисты. Программисты обычно ждут от CTO хороших процессов — все хотят получать четко поставленные задачи с четкими критериями приемки, работать на актуальных технологиях, иметь возможность самим принимать решения и расплачиваться с техническом долгом, знать у кого из коллег о чем стоит спросить и т.д. В общем задача CTO для программистов — сделать, чтобы они были счастливыми, а значит — производительными.

— Насколько глубоко CTO должен разбираться в языках программирования? И какие технологии должен знать?

Для маленьких компаний, где CTO «работает руками», чем больше технологий — тем лучше :-) Лично я стараюсь фокусироваться на том, что важно для комфортной и быстрой работы команды, но при этом тяжело дается для изучения на «боевых» задачах — девопс, новые инструменты\механики тестирования, какие-то вещи про будущее.

Кроме самих технологий, CTO должен понимать, куда движется рынок в целом. Скажем года два назад хороший CTO для JS-проектов должен был изучать такие популярные сейчас вещи как Vue.js, typescript, jest, задумываться о serverless, знакомиться с netlify, предсказывать, что хайп вокруг NoSQL сойдет на нет и т.д.

А для больших компаний желание работать руками скорее будет минусом, чем плюсом.

#интервью #cto
— Какая зарплатная вилка у CTO сейчас?

Зарплата — вопрос сугубо индивидуальный и переговорный. Если посмотреть на рынок труда, то CTO можно называть и единственного веб-программиста, который дорабатывает лендос у сервиса онлайн-курсов, а могут — руководителя производства, критичного для компании уровня ВК или Ламоды. Вот такая же и разница в зарплатах.

— Как программисту стать управленцем?

Вообще любой менеджер будет очень рад, если у него в команде появится программист, с которым можно поделиться ответственностью.

Для начала сделай так, чтобы тебя не нужно было менеджерить — научись выполнять свои собственные обещания и разбираться в задачах. Покачай софтскиллы — пойми зачем в принципе одни люди приходят к другим людям. Вот классические книги, которые в этом помогут:
• Стивен Кови — 7 навыков высокоэффективных людей. Про принятие решений и обещания.
• Джим Кэмп — Сначала скажите «нет». Про то, как разговаривать с другими людьми, чтобы им было полезно.
• Элияху Голдратт — Цель и Критическая цепь. Как лучше разбираться в постановке задач и управлении проектами.

Когда научишься менеджерить себя, останется совсем немного до того, чтобы научиться менеджерить других.

— Как научился брать на себя ответственность? Как понял, что больше хочешь быть управленцем, чем программистом?

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

Вообще программистам повезло с профессией. Есть, к примеру профессии, в которых можно получать удовольствие только от процесса, но не от результата — рабочий на производстве, дальнобойщик, официант в кафе. Есть наоборот, профессии, в которых важен только результат — это управление большими компаниями или собственным бизнесом, политика.

У программистов есть своеобразный баланс: мы сами выстраиваем себе удобный процесс, и сами выбираем в какой мере отвечать за результат. Не хотим отвечать за результат — пожалуйста, находим команду с хорошим менеджером, и не думаем ни о чем, кроме кода. Даже таким ребятам еще лет 5 будут платить среднерыночную зарплату, пока сохраняется кризис на рынке труда.

А вообще я считаю, что каждый программист должен забирать на себя столько ответственности, сколько только может. Ведь это же твоя жизнь, и именно ответственность определяет ее качество: будешь ли ты сам доволен результатом того, что делаешь?
​​Шпаргалка по Doker'у