5171

Ответ на пост «"Программисты не умеют программировать"»19

А я соглашусь, хоть и сам программист.

Я типичный крудошлеп, без бэкграунда в computer science. Кое-как выучил Java Core, кое-как посмотрел Spring, что-то там по реляционкам - и устроился на работу джуном аж за 35к в Хабаровске в местный бодишоп. Там, понятное дело, уже подтянулся к остальным, через три месяца круды пилил не хуже местных "мидлов". Через семь месяцев Сбербанк схантил за 100к с переездом в Москву, я и согласился - что я, дурак что ли?

Там зарплата довольно быстро выросла до 135к, и в принципе на этом этапе я считал, что схватил госпожу удачу за хвост - я весь такой умный, зарабатываю x2 по Москве и x5 по России. Правда, когда я попробовал пройти собес в другую компанию (по-моему, Luxoft), моя радость быстро омрачилась - меня спросили что-то примитивное, в духе "а как устроена HashMap в Java", а я вообще ни сном, ни духом. Какие хэш-функции, нафиг они нужны? Какие коллизиии? Какая потокобезопасность? Ребята, есть класс HashMap, как его использовать, я знаю, что вам еще надо то?

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

Был ли я хорошим крудошлепом? О да, я мог быстро написать хороший, покрытый тестами круд на Java. Был ли я хорошим программистом? О нет.

  1. Многопоток - паника

  2. Другой ЯП - паника

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

  4. Внутрянка Java (как устроена JMM, как работает GC и т.д.) - паника

  5. Просьба задизайнить приложение сводилась к разбиению на микросервисы. Любые попытки вывести на темы доступности / производительности / консистентности данных - паника.

  6. Любые попытки выйти за пределы базовых понятий реляционок - паника.

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

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

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

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

156
Автор поста оценил этот комментарий

Многопоток - паника

Другой ЯП - паника

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

Внутрянка Java (как устроена JMM, как работает GC и т.д.) - паника

Просьба задизайнить приложение сводилась к разбиению на микросервисы. Любые попытки вывести на темы доступности / производительности / консистентности данных - паника.

Любые попытки выйти за пределы базовых понятий реляционок - паника.

Ну так у всех так.


Первый час паникуешь, потом начинаешь копать, и оказывается, что не все так сложно.

раскрыть ветку (1)
35
DELETED
Автор поста оценил этот комментарий

Ага, только многие не начинают копать, а идут на другой проект)

показать ответы
2
Автор поста оценил этот комментарий

А, ну тогда еще ладно. Ты в ойти заходил без вышки штоле, чисто так, сам?

раскрыть ветку (1)
6
DELETED
Автор поста оценил этот комментарий

Ага, JavaRush (не реклама), «Философия Java» Эккеля, мануалы на Baeldung. Бэкграунда не было совсем.

показать ответы
1
Автор поста оценил этот комментарий

А как прокачивал дизайн приложений? А у меня тоже от этого жопа горит периодически

раскрыть ветку (1)
6
DELETED
Автор поста оценил этот комментарий

Если низкоуровневый - то ещё никак, но на Educative заприметил курс по паттернам. Высокоуровневый - книга «Высоконагруженные приложения» и сайт Designhurus.

показать ответы
Автор поста оценил этот комментарий

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

Мне очень неловко тебя расстраивать, но таджики на стройках в мск еще в 2022 году работали за 90-150к смотря че умеют. Какие х2 по Москве? В москве еще в 2023 средняя зп была уже 140+ тыс.

раскрыть ветку (1)
6
DELETED
Автор поста оценил этот комментарий

Это был 2019 ещё, тогда средняя была в районе 70, если мне память не изменяет.

показать ответы
6
Автор поста оценил этот комментарий

зачем учить алгоритмы и все остальное, чтобы что? Чтобы считать себя настоящим программистов? Кто вам навязал мнение, что вы ненастоящий программист и привил синдром самозванца? Вам бы к психологу сходить и свои тревоги с ним проговорить, а Вы тут хвастаетесь, что делаете что-то, чтобы соответствовать чему-то мифическому. Такое ощущение, вы боитесь что будут тыкать в вас пальцем и говорить: "он ненастоящий программист!". Наслаждайтесь лучше жизнью, а к собеседования можно подготовиться просто по факту погуглив интернет, так как все равно тренды меняются и знание CS не связано со скиллом прохождения интервью, а литкод можно 1-2 месяца порешать в свободное время перед собесами и все, medium встречал очень редко, для easy есть подборки, все задачи типовые

раскрыть ветку (1)
5
DELETED
Автор поста оценил этот комментарий

Я хочу в бигтех, там medium / hard, ну и вопросов из CS хватает. Понятно, что по условной concurrency напрямую спрашивать не будут, но могут поднять тему на сисдизе. А вообще я лично реально почувствовал, что мне стало проще кодить и понимать вещи, которые лично для меня раньше были сложными. Я «кабанчика» читал как художественную книжку, а еще пару лет назад она бы меня на этапе B-деревьев в нокаут отправила.

показать ответы
Автор поста оценил этот комментарий

Изучаю джаву для себя, до Джуна мне как до Китая раком, но что такое хэш и прочее знаю на зубок. Днище ты в общем пробитое.

раскрыть ветку (1)
8
DELETED
Автор поста оценил этот комментарий

Если продолжишь читать тексты через слово, до джуна ещё не скоро дойдешь.

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

11
Автор поста оценил этот комментарий

"Там, понятное дело, уже подтянулся к остальным, через три месяца круды пилил не хуже местных "мидлов"."
Через год опыта сейчас в поиске работы более полугода, потому что не хочу приписывать опыт до 2 лет, ибо нихрена я не могу пилить на уровне "мидлов" )
"печалился я недолго - просто выучил ответы на типовые вопросы Java / Spring собеседований, благо, таких материалов в интернете море."
У меня этих типовых вопросов на 100 мб примерно вордовских документов - и это только основное на джуна, я не могу это запомнить, если не читаю каждый день постоянно месяца напролёт.
Так что всё у тебя хорошо, ты не такой уж крудошлёп )

раскрыть ветку (1)
3
DELETED
Автор поста оценил этот комментарий

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

показать ответы
7
Автор поста оценил этот комментарий

зачем учить алгоритмы и все остальное, чтобы что?

Суть не в том что бы наизусть знать конкретный алгоритм, а в том что знание алгоритмов способствует более быстрому проектированию программы и созданию более эффективной логики.

Кто вам навязал мнение, что вы ненастоящий программист

Синдром самозванца приходит сам, когда приходится сталкиваться с вещами/задачами за пределами известных знаний, и вот тогда возникает вопрос "это от меня требуют запредельное или может я не обладаю нужными знаниями, а должен?"

раскрыть ветку (1)
4
DELETED
Автор поста оценил этот комментарий

Какая же жиза. Или когда читаешь, как кто-то спокойно вкатывается в новый ЯП за пару недель и такой «да там все одинаковое»)

показать ответы
1
DELETED
Автор поста оценил этот комментарий

Ты подожди, скоро тебе начнут вопросы задавать типа как обеспечить SLA 99.9, как лоад балансинг по SNI делать, как ты автоскейлил сервисы и прочую хуйню. Все от того, что щас на девелоперов все говно сваливают.

раскрыть ветку (1)
2
DELETED
Автор поста оценил этот комментарий

А я и не против, мне интересно) На работе, конечно, есть отдельный отдел devops, но обладая базовыми занятиями, проще с ними на одном языке говорить.

22
Автор поста оценил этот комментарий
Судя по тексту ты уже молодец, понимаешь что именно ты не понимаешь, остальное решается пробами, гуглением и тестированием.
Всё получится, главное руки не опускать.
раскрыть ветку (1)
4
DELETED
Автор поста оценил этот комментарий

Время жалко, почти пять лет карьеры херней страдал, штампуя микросервисы на Spring Boot. А так мне реально нравится учиться. Даже математика в кайф, хотя в школе терпеть ее не мог.

показать ответы
0
Автор поста оценил этот комментарий

че-то я запуталась. async это же про асинхронность, то есть всякие JavaRx, реактивные библиотеки вроде Mutiny и корутины Колтина? А synchronized это скорее про доступ к данным. Я понимаю, почему stateless решает проблему synchonized, там по идее не должно быть общих переменных, но не понимаю, как это связано с async/scheduler.

Или я что-то не так поняла и мне тоже пора почитать что-нибудь? :D Что за книга?

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Все в порядке, это я просто про мои прошлые познания в многопотоке, которые сводились к «ну вроде аннотация async помогает стартовать процесс в отдельном потоке, это все»)

показать ответы
0
Автор поста оценил этот комментарий

особых проблем перешел уже на 250к в другой бодишоп

Ну вот как нахуй это работает? Я, понимая в разы больше, чем вы на том этапе, в январе этого года еле нашел работу на 200. Но, правда, стек .NET, а не Java. Обидно, блеать)

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

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

Автор поста оценил этот комментарий

250 - это 10-й грейд, нифига не миддл.

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Это уже после ухода из Сберыча, там было 170 макс, без учёта годовой, конечно.

показать ответы
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Я просто хотел (и хочу) в бигтех, и по пути втянулся и понял, что все это не такая уж бесполезная хрень и есть другое IT, кроме крудов и конкуренции с индусами на аутсорсе.

1
Автор поста оценил этот комментарий

Да позиция собеседующего понятна. У него она своя, у меня своя.
"рассказывать про свой опыт и про свои задачи.... Мы не справочник, чтобы помнить теорию наизусть...."
Памяти тут нужно не меньше )

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Посмотри Amazon STAR и попробуй использовать, поможет на интервью.

11
Автор поста оценил этот комментарий

А че там concurrency? У вас JVM блин и async/await как у всех. Сейчас все на SpringBoot с blueprints и Hibernate. Есть конечно отчаянные с raw SQL, но хрен пойми зачем. Java это джунгли абстракций и так

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Ну вот хотя бы пример из книги, которую сегодня читал - использование synchronized на всем методе - это хреново, и лучше использовать блоки. Понятное дело, что в stateless приложениях это особо не упало, но по правде, есть ощущение, что я просто так и не дорос до проектов, где понимание теории многопотока - это реально важно, и воткнуть аннотацию async / впилить шедулер недостаточно.

показать ответы