Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
- Telegram Web
Telegram Web
Продолжаем вашу(мою) любимую рубрику Ответ на вопрос
И телезрители играют против знатоков, вопрос из зала задает @Vlod_R

Вопрос:
Как у тебя происходило изучение других ЯПов/стеков? Когда уже был опыт в каком-то
Что бы посоветовал при перекате с ноды/ТС на JVM? Может уже работал с такими людьми и замечал общие ошибки?

Ответ:
Скажу честно, что такие перекаты от санитаров в изучении других ЯП у меня не то чтобы популярная история. В целом совет тут можно дать самый базовый: у любого ЯП есть его стержень (у некоторых ЯП типа как Scala их может быть несколько), так вот понять надо именно стержень этот. Например, в Java - это ООП (ОПГ) и разделение логики на всякие сервисы, контроллеры (Spring головного мозга) - поняв эти две вещи вы точно сможете на работе говорить на одном языке. Здесь важно не уходить в детали и всякие там типы данных - ну есть они и есть, вы их потом поймете. По сути этот стержень - это и есть философия языка, его главная парадигма.

У Python эта философия (как по мне) в нескольких вещах:
Это его гибкость через эти все словари у каждого объекта - что вы там в словаре объекта найдете все его возможности по сути.
Это его ООП (именно свой взгляд, не как у Java) и стиль написания (все эти генераторы).

В Java это его ООП и именно то как Java видит полиморфизм - отсюда все эти интерфейсы там и прочее. Можно полистать старую книжку (она реально чуть устарела, но плюс минус все еще будет полезна) Эккеля Thinking in Java. Даже посмотрев как в Java сделаны ФП вещи можно сформулировать вот именно ту самую философию. По сути (если коротко) Java очень любит абстракции и слои абстракций - отсюда эти все абстрактные фабрики абстрактных методов (шутка) (я не шутил)

Не советую еще читать Шилдта (это как справочник имхо он не нужен сейчас) и Блоха тебе пока не надо читать первое время, на мой взгляд это может отпугнуть

Основные ошибки же у всех одни - надо перестать писать «как вы писали» (забудьте чему вас учили в школе!), например, кто приходит с Си (студенты) - они начинают экономить сразу же байтики повсюду, это не нужно. Вторая популярная ошибка (кмк) - это уход в детали сразу, погружение слишком глубокое туда, куда еще рано. Часто бывает такое, что человек там начинает про какие-то Integer Pool-ы читать, а это ну точно не то, что ему надо сейчас. Третья ошибка - уход в теорию и мало практики (я на нее сам регулярно попадаю).

Очень важно сразу понять нейминг - по сути грамматика для ЯП, в Java принято размашисто писать, в Go нет - вот уже и первые ошибки будут, если ты начнешь как-то называть переменные или классы/методы коротко с кучей сокращений

Еще Java очень строгий и закрытый язык, в отличи от того же JS.
Это выражается и в структуре кодовой базы:

├── controller
├── service
├── repository
├── model
├── config

Даже при DDD ты что то похожее увидишь просто по другому сгруппированное чуть чуть
Пойми как и по какой логике группируют код в проекте (или ты будешь группировать) - отсюда же будет понимание той самой абстракции и интерфейсов-связей между слоями.

Еще отличие, которое замечал, что то, что смотришь на конференциях на том же Python - это все уже было в Симпсонах Java (не так давно смотрел вот про DI доклады там)

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

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

И я бы на твоем месте быстрее переходил бы в Spring/Ktor/Quarkus/Микронавт там - короче куда то туда, а по мере необходимости уже детали бы изучал.
Вообще популярные фреймворки языка - это тоже в том числе отражение его философии (то как ее видит большинство) - вот тебе это подойдет прямо.
Senior Java Developer ищет баг перед отпуском
12 апреля - день космонавтики!

В целом, я закончил ФАКИ (Факультет аэрофизики и космических исследований) в МФТИ и даже на кафедре писал чуть чуть на питоне обработчик телеметрии с космоса. К слову, делали мы программное обеспечение тогда не как сейчас, а на совесть, потому первая версия потеряла всю полученную телеметрию.

Но никто не расстроился, потому что ее принимали еще вроде в Калуге (но я точно не помню).

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

Поэтому, с праздником!
История
Как говорится мужчина сказал - мужчина сделал (через месяц)

Итак, я на первом курсе и вот первый семестр прошел и пора сдавать зачет по информатике
Не секрет, что на первом курсе из программирования я знал только то, что программирование -это когда печатают, т.е. был достаточно подкован. Пары у нас были по C, но были в пятницу вечером - а значит пересекались с более важными делами и перед зачетом я обладал следующими знаниями: как выглядит преподаватель, знал его фамилию, знал где проходят пары и умел включить компьютер.

Вооружившись всеми этими знаниями я отправился на зачет, на котором преподаватель, посмотрев на мою посещаемость (уверенные 2 занятия из семестра) и на мой внешний вид (уверенные 10 из 10, где 10 - это расстояние в километрах от понимания предмета), предложил мне трояк и мы расходимся уже прямо сейчас без вопросов (тогда в МФТИ была еще пятибалльная система).

Вариант с тройкой был с негодованием отвергнут, так как ощущал я себя как двухметрового метросексуала 0% подкожного жира и 200+ IQ. Преподаватель еще раз посмотрел на меня и, вздохнув, предложил мне написать перемножение матриц. Почувствовав себя Избранным и не обнаружив вокруг агентов Смитов я, разумеется, согласился, поэтому приступил к делу немедленно.

Залогинившись я обнаружил некоторое количество файлов с расширением .c и .out (у нас были линуксы там - но я не помню какие, скорее всего что то типа Debian с Gnome). Довольно быстро помощью популярной в АйТи RnD жилки я обнаружил, что .out открывается в текстовом редакторе, но нечитаемы - а значит, это не наш друг. А вот расширение .c было более дружелюбно, поэтому я буквально нырнул в С. Надо отметить, что все, что было кроме «Hello World» было уже довольно душноватым, поэтому копируя прямо гигантские куски и запуская их (а я умел запускать и компилировать - это было на первом занятии, которое я посетил) я понял, что некоторые конструкции выводят на экран текст, а некоторые ожидаю ввода. Тогда я не придал важности тому, что два обратных слэша - это комментарий и копировал все вместе, потому даже «Hello World» вышел строк на 50 у меня (я там по ошибке еще и какие-то объявления скопировал). Как с помощью scanf что то куда то записать я понимал смутно и примерно, но сложнее было даже не записать в переменную - а использовать ее.

На этом моменте я обнаружил, что мы уже почти час сидим в аудитории и у нас осталось 30 минут.Успокоив учителя, тем, что разгадка уже близка и я буквально играюсь со шрифтами, я продолжил. За оставшиеся 25 минут я не смог продвинуться к матрице (о существовании массивов я не знал - эти инопланетяне технологии были за гранью моего разума). В итоге, понимая безвыходность ситуации я накопировал кусками: предложение ввести матрицу 1 и 2, плюс вывод ответа.

Разумеется, так как матрицы могли быть разными по размерам я не разобрался как их сохранять и я просто предлагал что-то ввести и это просто никуда не сохранялось. Понимая, что мы идем ВА-БАНК, я выбрал пример посложнее (не 1 1 1 1 на 1 1 1 1 грубо говоря), после чего запустив и прогнав happy path (а там другого и не было) я подозвал преподавателя и объявил, что СкайНЕТ 2.0 готов и человечество обречено.

Преподаватель подошел и попросил продемонстрировать работу ИИ в деле, на что я, сказав, что единичная матрица это хуже чем очень слабо и надо сразу на хардкор идти ввел единственно верную комбинацию цифр (на самом деле они ни на что не влияли). Увидев результат, я на бумажке уже в реалтайме показал, что перемножил я верно на что мне поставили таки четыре с минусом.

Пообещав продемонстрировать в следующем семестре еще большие знания, я взял зачетку и пошел пить пиво. В целом, удивлены были в тот вечер два человека: учитель - так как я как-то перемножил матрицы, а я - что компьютеры эти как то работают и это в целом интересно.

P.S. Уже после, через пару лет, когда я действительно увлекся программированием, я таки взял книжку Кренигана и Ритчи, прорешал ее. Ну а преподавателя того уже, к сожалению, нет в живых - так как старый состав в МФТИ уже сменился. Хороший был мужик.
Да. Очень.
Наш проект - это саундтрек к мультфильму "Розовая Пантера":

// todo
// todo
// todo
// todoooooo
Если бы меня попросили одной картинкой описать термины at least once и backpressure
После последних релизов могу точно сказать, что Бог существует, поэтому: с Пасхой, друзья!
Выпуск про тимлидов уже доступен для просмотра. Вы узнаете, как устроена настоящая командная динамика, что делать, если «всё рушится», и почему работа тимлида — это не про власть, а про ответственность. Не пропустите — разговор откровенный, местами жёсткий, но крайне полезный для всех, кто хочет расти в IT.

https://www.youtube.com/watch?v=_qJ_rU8-S90

Альтернативные ссылки: Аудио | vk
Итак, кажется, что меня засосало в Dota 2, но на самом деле я пытался сформулировать мысли по такому событию как System Design Interview
Как обычно, статья - это лонг рид и делал я ее с точки зрения как к этому подготовиться, как проходить и что это такое

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

В общем, как обычно - буду рад критике, найденным ошибкам и советам!
Ну и еще больше рад буду если вам пригодится!

Ну и сама заметка: https://github.com/qcha/JBook/blob/master/interview/design_interview/help.md
Сегодня, 28 апреля, отмечается Всемирный День выгорания!

С праздником, друзья! Еще покоптим!
На собеседовании спросили сколько я знаю способов создать объект в Java.

Ну, во-первых, через таску в Jira…
Итак, с утра в субботу мне приятель пишет Go в Доту
Я такой, о, Go!

И решил с chatGpt задачку разобрать на Go:

func main() {
first := []int{10, 20, 30, 40}
second := make([]*int, len(first))

for i, v := range first {
second[i] = &v
}

fmt.Println(*second[0], *second[1])
}

Что будет?


Он мне честно отвечает, дескать, Александр! Хороший пример с классической ловушкой Go при использовании range с адресами переменных.
Будет 40 40 (и 40 будет во всех second[i], если распечатать дальше) - не подловишь меня, дурачок!

На что я ему свою коронку "А в новых версиях Go?"
А он мне, на голубом глазу: Отличный вопрос. Даже в новых версиях Go (включая 1.22 и выше) — поведение с range и переменной v остаётся прежним. Это осознанное решение дизайнеров языка.
И даже доказательство пример привел!

Я говорю "А в Go 1.24?"
Бездушная машина стоит на своем: В Go 1.24 поведение цикла for с использованием переменной v в конструкции range не изменилось.

На что я ему уже открыто говорю: Но это не так же
И тут-то он и покаялся во грехе: ​Извините за прежнюю неточность. В версии Go 1.22 было введено изменение, которое решает проблему с переиспользованием переменной цикла v в конструкции for range. С этого момента Go создает новую переменную на каждой итерации цикла и бла бла бла. Ответ 10 20, прошу простить!

Создается впечатление, что это не ИИ, а просто специально обученный китаец сидит и отвечает на вопросы и с утра не выспался еще, не проснулся.
Когда апрув на пулреквест ставит тимлид, мидл и джун
С Днем Победы! С великим днем!
Помним, гордимся!

Обязательно посомтрю сегодня какой-нибудь фильм (например, "В августе 44-го") и почту минутой молчания.

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

Вообще, очень правильно говорить спасибо и хвалить, поэтому если ваш тимлид (и не только он, но тимлидов реально редко хвалят) молодец - то скажите ему об этом на 1-1 разочек-другой! Не надо частить с похвалой, но иногда можно!

Спасибо, старина!
С помощью диплома смог достать телефон из щели между кроватью и стеной, а вы и дальше говорите, что высшее образование не нужно
Почему девопсы много получают?

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

Некто Кларк (не Кент, а Джек) считает (до 10 видимо):
Мы увидим появление менеджера-гика, у которого есть свои 'люди', но эти 'люди' — на самом деле экземпляры ИИ-агентов, выполняющих огромный объем работы для них


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

Ждем опросы ИИ по вовлеченности еще (у чатЖПТ интереснее проекты! Я только изображения генерирую, хочу новое что то!) и заживем!
Когда отключили горячую воду на неделю
2025/06/11 11:01:08
Back to Top
HTML Embed Code: