Найти в Дзене

Топ-3 ошибки при найме Go-разработчика из «бывших джавистов»

Как тимлид с многолетним опытом в Java, я часто вижу одну и ту же картину: на собеседование приходит крепкий сеньор, который утверждает, что «уже полгода пишет на Go». Но как только мы открываем код, становится ясно — передо мной джавист, который просто сменил синтаксис, но не мышление. Вот три главных «красных флага», которые выдают человека, всё еще живущего в мире Spring и Hibernate. Первое, что делает джавист в Go — начинает плодить глубокие иерархии и геттеры/сеттеры для каждого поля структуры. В Go структуры — это данные, а не «черные ящики» с состоянием. Если я вижу GetID() и SetName() там, где можно просто обратиться к полю, я понимаю: человек боится простоты Go. В Java мы привыкли к try-catch. В Go обработка ошибок — это часть логики. Если кандидат на каждый err != nil делает panic() или, что еще хуже, пытается создать глобальный перехватчик исключений — он не понял философию языка. В Go мы не надеемся на чудо, мы явно обрабатываем каждый шаг. Это дисциплинирует, но для «избал
Оглавление

Как тимлид с многолетним опытом в Java, я часто вижу одну и ту же картину: на собеседование приходит крепкий сеньор, который утверждает, что «уже полгода пишет на Go». Но как только мы открываем код, становится ясно — передо мной джавист, который просто сменил синтаксис, но не мышление.

Вот три главных «красных флага», которые выдают человека, всё еще живущего в мире Spring и Hibernate.

1. Попытка построить «Enterprise-крепость»

Первое, что делает джавист в Go — начинает плодить глубокие иерархии и геттеры/сеттеры для каждого поля структуры. В Go структуры — это данные, а не «черные ящики» с состоянием. Если я вижу GetID() и SetName() там, где можно просто обратиться к полю, я понимаю: человек боится простоты Go.

2. «Исключительное» поведение

В Java мы привыкли к try-catch. В Go обработка ошибок — это часть логики. Если кандидат на каждый err != nil делает panic() или, что еще хуже, пытается создать глобальный перехватчик исключений — он не понял философию языка.

В Go мы не надеемся на чудо, мы явно обрабатываем каждый шаг. Это дисциплинирует, но для «избалованного» магией джависта это кажется излишней рутиной.

3. Потоки вместо Горутин

Самая частая ошибка в высоконагруженных задачах — попытка управлять горутинами так же, как потоками в Java. Разработчик начинает городить сложные пулы воркеров там, где достаточно просто запустить горутину. Или, наоборот, забывает про синхронизацию и каналы, пытаясь использовать Shared Memory везде, где можно.

-2

Итог для Тимлида

Нанимая «перебежчика» из Java, не смотрите на знание библиотек. Смотрите на то, готов ли он разучиваться. Лучший кандидат — это тот, кто готов признать, что его 10-летний опыт в ООП-паттернах здесь может быть вреден.

Я сам сейчас прохожу через этот этап «ломки» привычек, разрабатывая свой проект Go-Pulse. О моих успехах и граблях читайте в Telegram:

👉 🐹 Go после Java: Записки Тимлида

А на что вы обращаете внимание при найме разработчиков в новый стек? Поделитесь своими лайфхаками в комментариях!