@korvin2

Как получить более глубокие знания?

Работаю android разработчиком в аутсорс-компании почти 4 года. За это время поработал на многих проектах (но один) с довольно разными задачи, все поставленные цели проекта выполнял, каких-то затупов где не получилось бы что-то реализовать не было, приложения и фичи работают достаточно стабильно. То есть в целом умею работать со многими инструментами (старыми и современными, т.к. начинал с java), как бы знаю "что нужно сделать для задачи X", но чувствую, что не хватает глубинного понимания, потому что как раз таки просто "знаю что нужно делать" (или могу найти как сделать, если не знаю), но как это работает под капотом или как сделать это лучше - без понятия.
Например, корутины и flow - знаю что нужно писать для запуска механизма работы, реализовывал различные кейсы, но для большинства задач достаточно моих поверхностных знаний, а как увижу что-то необычное при просмотре собеседований - сразу теряюсь и иногда даже суть вопроса понять не могу. Или ситуация с Volatile и Synchronized - знаю что они есть и для чего нужны, но ни разу не приходилось использовать. Слышал еще пару раз как на собесах говорили о Dalvik и ART, а я слов то таких даже не знал....
Чувствую себя обезьянкой, которая запомнила на какие кнопочки жать и копи-пастит код из одного проекта в другой.
Поэтому прошу совета от опытных разработчиков - какую базу необходимо подтянуть, в идеале еще где и как. Для себя выделил изучение java concurrency и узнать как работает под капотом то, что каждый день пишу в коде. Возможно посоветуете какие-нибудь книги или лекции. Очень хочу стать экспертом в разработке, но чувствую что как раз не хватает "экспертности" во многих вопросах. Спасибо.
P.S. Заранее прокомментирую некоторые возможные ответы. "Поступи в ВУЗ" - не буду вдаваться в подробности, но этот вариант отпадает. "Найди компанию с крутой командой" - это уже в планах.
  • Вопрос задан
  • 298 просмотров
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Слышал еще пару раз как на собесах говорили о Dalvik и ART, а я слов то таких даже не знал....

Чтобы это исправить достаточно регулярно читать Хабр.

Или ситуация с Volatile и Synchronized - знаю что они есть и для чего нужны, но ни разу не приходилось использовать.

Goetz - Java Concurrency in Practice

В целом достаточно иметь некоторый уровень любознательности. Тогда столкнувшись с чем-либо, сразу хочется это разобрать, а дальше официальная документация и гуглёж могут унести на любую глубину, вплоть до уровня железа.
Ответ написан
xez
@xez
TL Junior Roo
Возьмите привычку читать по часу в день.
Список литературы:
Брукс "Мифический человеко-месяц"
Гетц "Java Concurrency на практике"
Блох "Java. Эффективное программирование"
Мартин "Чистый код: создание, анализ и рефакторинг."
Гамма, Хелм, Джонсон, Влиссидес "Паттерны объектно-ориентированного проектирования"

Вся литература из доклада: https://www.youtube.com/watch?v=popkBBjbAv8

Алгоритмы не помешает еще подтянуть.
Минимум прочитать "Грокаем алгоритмы"
Кнут "Искусство программирования"
Седжвик "Алгоритмы на Java"
Кормен "Алгоритмы построение и анализ"
(не знаю, какая из них лучше, и нужно ли читать все)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
"Найди компанию с крутой командой"

Именно так. Ищите вакансию с требованиями по навыкам, классом чуть выше, чем вы предполагаете у себя. Готовитесь к собеседованию - подтягиваете знания по булитам в списке требований, где конь не валялся (как там с английским языком? а что там используется на стыке технологий в этом участке стека сейчас? какими средствами версируется проект? как распределяются зоны ответственности разработчиков и какие роли существуют?). Проваливаете 5-10 собеседований, наконец, худо-бедно устаиваетесь на желаемую позицию.
На этой позиции уже изучаете кухню подробнее, естественно, в свободное от работы время тоже.
Ответ написан
@Dementor
программист, архитектор, аналитик
как увижу что-то необычное при просмотре собеседований - сразу теряюсь и иногда даже суть вопроса понять не могу.

Не повод для беспокойства, а лишь повод для любопытства. Очевидно, что "спринговоды" делают круглые глаза при упоминании аднроидных реализаций виртуальных машин, а "андронавты" ничего не слышали про Tomcat и GlassFish.

Работаю android разработчиком в аутсорс-компании почти 4 года... Слышал еще пару раз как на собесах говорили о Dalvik и ART, а я слов то таких даже не знал...

Значит что ваш уровень не выше мидла. Есть куда расти.

"Поступи в ВУЗ" - не буду вдаваться в подробности, но этот вариант отпадает.

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

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

Вы уже нашли Хабр! Для начала подпишитесь на хабы по Java и мобильной разработке (можно еще парочку по интересам) и читайте все что выходи нового. Как видите неизвестные термины/технологии - гуглите. Далее выбирайте некий раздел - например работа с потоками раз вас так зацепили "Volatile и Synchronized" - и читайте хабровский архив на заданную тему. И не пропускайте комментарии - там часто замечания намного ценнее чем материал самой статьи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы