Английский не выходя из дома
Подглядел в приложении Тинькофф онлайн-ресурсы для изучения английского. Подкасты, фильмы, курсы, общение с носителями — всё, как надо.
Подглядел в приложении Тинькофф онлайн-ресурсы для изучения английского. Подкасты, фильмы, курсы, общение с носителями — всё, как надо.
JavaDoc
JavaDoc — cпециальные комментарии, которые предназначены для документирования Java-кода. С помощью этих комментариев можно описывать классы, интерфейсы, переменные, методы, пакеты. Хороший JavaDoc помогает новым пользователям быстро разобраться с библиотекой, с которой он не знаком.
Лучшие примеры JavaDoc — исходники самой Джавы. В каждом классе подробно описано, что делают и чего не делают методы, при каких условиях они работают, и как они справляются с ошибками. В общем, хорошая документация та, после которой не нужно гуглить туториалы или подходить к человеку, который её написал.
JavaDoc — cпециальные комментарии, которые предназначены для документирования Java-кода. С помощью этих комментариев можно описывать классы, интерфейсы, переменные, методы, пакеты. Хороший JavaDoc помогает новым пользователям быстро разобраться с библиотекой, с которой он не знаком.
Лучшие примеры JavaDoc — исходники самой Джавы. В каждом классе подробно описано, что делают и чего не делают методы, при каких условиях они работают, и как они справляются с ошибками. В общем, хорошая документация та, после которой не нужно гуглить туториалы или подходить к человеку, который её написал.
Старт карьеры
Попросил своего друга Павла Погодаева @pogpp описать впечатления от первых двух недель работы программистом. В итоге получился небольшой рассказ о его первом месте работы. Слово Паше:
Первые дни работы программистом.
Год-полтора учёбы и подготовки к интервью, и вот он – оффер в не самую отстойную контору. Девочка-кадровик собирает бумаги, а ты ходишь очаровано смотришь на средний офис, команду разработки и переживаешь про себя. Вдруг ты самозванец, тебя спалят, что приврал в резюме про Spring Boot или Hibernate и не пройдешь испыталку. Но нет.
Начало везде одинаковое: читаешь бесполезную документацию, смотришь видосы, ни у кого особо на тебя нет времени. Но потом приходит она – первая таска. Как правило, простая, как 2 байта переслать. Через пару месяцев уже полноценно участвуешь в работе, несёшь ответственность за фичи и в целом появляется картина, как оно и зачем.
Моим первым проектом на пути программиста были кассовые приложения для Спортмастера. Из технологий – Hibernate, JavaFX + guice и божественный soap для связи с внешними системами. Через 7 месяцев я прозрел, что это сплошной багфикс и никакого роста. Стояк на работу стал не так крепок, и пришло время что-то менять. Как итог: новая приятная работа, доходы выросли за год в 2.5 раза, международный проект, переезд из Мск в СПб (да-да, не надо стесняться релоцироваться из-за денег) и вот оно счастье.
Попросил своего друга Павла Погодаева @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. Плюс обрабатывать исключение должен тот класс, который знает, что с ним нужно делать. Иначе прокидывать дальше.
Исключения нужно использовать только для сигнализации исключительных ситуаций и не использовать для корректного исполнения. Они намного дороже с точки зрения ресурсов, чем обычный возврат значения или управления.
Исключения нужно использовать только для сигнализации исключительных ситуаций и не использовать для корректного исполнения. Они намного дороже с точки зрения ресурсов, чем обычный возврат значения или управления.
Хорошо — Плохо
Объявляйте переменные в как можно меньшей области видимости. Например, переменная
Плохо
Хорошо
Плохо
Хорошо
Объявляйте переменные в как можно меньшей области видимости. Например, переменная
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 в ГдеМатериал и автору канала @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 будут платить среднерыночную зарплату, пока сохраняется кризис на рынке труда.
А вообще я считаю, что каждый программист должен забирать на себя столько ответственности, сколько только может. Ведь это же твоя жизнь, и именно ответственность определяет ее качество: будешь ли ты сам доволен результатом того, что делаешь?
Зарплата — вопрос сугубо индивидуальный и переговорный. Если посмотреть на рынок труда, то CTO можно называть и единственного веб-программиста, который дорабатывает лендос у сервиса онлайн-курсов, а могут — руководителя производства, критичного для компании уровня ВК или Ламоды. Вот такая же и разница в зарплатах.
— Как программисту стать управленцем?
Вообще любой менеджер будет очень рад, если у него в команде появится программист, с которым можно поделиться ответственностью.
Для начала сделай так, чтобы тебя не нужно было менеджерить — научись выполнять свои собственные обещания и разбираться в задачах. Покачай софтскиллы — пойми зачем в принципе одни люди приходят к другим людям. Вот классические книги, которые в этом помогут:
• Стивен Кови — 7 навыков высокоэффективных людей. Про принятие решений и обещания.
• Джим Кэмп — Сначала скажите «нет». Про то, как разговаривать с другими людьми, чтобы им было полезно.
• Элияху Голдратт — Цель и Критическая цепь. Как лучше разбираться в постановке задач и управлении проектами.
Когда научишься менеджерить себя, останется совсем немного до того, чтобы научиться менеджерить других.
— Как научился брать на себя ответственность? Как понял, что больше хочешь быть управленцем, чем программистом?
Первоначально мне все эти штуки про ответственность были не очень интересны — казалось более прикольным ковыряться в коде и железках :-) Нужно сказать огромное спасибо коллегам, которые начали требовать этого от меня. Ну а дальше — начал читать книги.
Вообще программистам повезло с профессией. Есть, к примеру профессии, в которых можно получать удовольствие только от процесса, но не от результата — рабочий на производстве, дальнобойщик, официант в кафе. Есть наоборот, профессии, в которых важен только результат — это управление большими компаниями или собственным бизнесом, политика.
У программистов есть своеобразный баланс: мы сами выстраиваем себе удобный процесс, и сами выбираем в какой мере отвечать за результат. Не хотим отвечать за результат — пожалуйста, находим команду с хорошим менеджером, и не думаем ни о чем, кроме кода. Даже таким ребятам еще лет 5 будут платить среднерыночную зарплату, пока сохраняется кризис на рынке труда.
А вообще я считаю, что каждый программист должен забирать на себя столько ответственности, сколько только может. Ведь это же твоя жизнь, и именно ответственность определяет ее качество: будешь ли ты сам доволен результатом того, что делаешь?
Java Developer
Хорошо — Плохо Проглатывать исключения плохая практика Плохо catch (Exception ignored) {} Хорошо catch (Exception e) { throw new RuntimeException(e); } Тоже гуд catch (Exception e) { log.error("Description", e); }
прочитайте статью «7 распространенных ошибок обработки исключений», чтобы лучше в этом разбираться:
https://habr.com/post/337536/
https://habr.com/post/337536/