Обучение и трудоустройство Java-программистов от Junior до Senior

Как научиться быстро ориентироваться новичку в коде нового проекта ?

 
 
 
Сообщения:3
Я программист, мне 32 года, опыта работы мало 1 год работы на Oracle/delphi (пытаюсь перейти на java уже год учу ее ),пока пришел в новый проект Oracle(автоматизированная банковская система со 100+ модулями и 1000+ таблицами,бизнес-логика PL/SQL ) , кинули меня как котенка и сказали плыви сам, но я утонул :)

ВОПРОС К ОПЫТНЫМ ПРОГРАММИСТАМ!!!
Как правильно осваивать новый код огромного проекта ? Как запоминать связи таблицы, цепочки вызовов или это специально никак не запоминается а приходит путем долгих посиделок над кодом и через годы проект только запомнится ? Как некоторые въезжают в код за месяц а некоторым нужно пару лет ? Берется ли такое опытом а не интеллектуальными способностями к усвоению новому ?

Я столкнулся с проблемой усвоения больших объемов информации и в голове не помещается картина проекта в целом (связи таблиц , цепочки вызовов процедур, где что откуда берется ). Я всегда пытаюсь ее усвоить полностью а не кусочками , если кусочками то я не могу представить картину в целом . (Может это неправильно ?)
Скажите это нормально для начального уровня и пройдет ли это с опытом ? За год стало немного легче но все равно картина общая не прорисовывается т.к кидают по разным модулям , вопрос возник из-за того что с вхождение в мир java у меня будут те же проблемы что и с oracle куча новой информации , требование выполнить доработку не вдаваясь в подробности реализации связанных с ней частей и не понимая картины проекта в целом неужели все программисты начинают с такого или просто мне не повезло т.к не было куратора и старшего наставника ?

Хотя у меня знакомые могут не вникая полностью в тему достаточно комфортно работать не вдаваясь в полное погружение т.е умеют поверхностно выбрать главное а остальное по месту , может быть им опыт с предыдущих мест работы помогает и они встречают подобное и есть общее представление кода программы или это талант с детства рожден быстро схватывать ? . Мне же чтобы все понять нужно только полное погружение в тему дотошно , это специфика личности или это можно как то развить для быстрого усвоения новой информации ? Как измениться ?Может кто поделится какими методиками как они поверхностно усваивают т.е про таких людей говорят быстро схватывает . Буду рад услышать ваши мысли .
Извиняюсь за много вопросов т.к наболело .
 
 
Сообщения:430
да не, всё правильно. ты либо видишь весь проект, но без деталей, либо со всеми подробностями, но кусок. величина этого куска зависит от качества твоих мозгов.

поэтому и существует понятие "чёрный ящик".
короче: ты досконально знаешь(изучаешь) свой участок, хорошо изучаешь интерфейсы тех вещей, с которыми тебе приходится работать и примерно знаешь за каким хреном эта вся фигня кому-то там сдалась.
 
 
Сообщения:9570
Чтоб быстро понимать проекты:
- Нужно уметь догадываться как что может называться (для этого нужны к примеру design patterns, а также опыт), и уметь находить это (полноконтекстный поиск, grep и т.д.)
- Уметь работать с Java инструментами такими как debug, thread dump, profilers, memory dump.
- Иметь представление о стандартных структурах данных и алгоритмах.
- Понимать как работает фундаментальное - диск, сети, многопоточность, CPU. А также разбираться в JDBC, Servlets API, Maven.
Изменен:03 авг 2017 06:44
 
 
Сообщения:766
Приветствую!

Так никто человеку ничего и не посоветовал. Грусть, печаль, тоска, боль.

Про модули я не понял. Что имеется в виду?
Что касается бизнес-логики в SQL, это конечно анахронизм. Архитектура клиент-сервер это из 90x. Чтобы как-то разобраться в этом, рекомендую воспользоваться каким-либо инструментом для реверс инженеринга. Т.е. создать визуальные диаграммы таблиц и их взаимосвязи. Если взаимосвязей нет, всё построено на процедурах и триггерах, то надо выявить их зависимости. Думаю, что в современных СУБД и в частности Oracle такие возможности есть. Что касается java классов прогнать опять-таки через инструментарии, которые создают UML диаграммы их связей. Если проект на Maven, то опять таки все зависимости можно спокойно выявить.

Как-то так.
 
 
Сообщения:841
Староверъ:
Чтоб быстро понимать проекты:
- Нужно уметь догадываться как что может называться (для этого нужны к примеру design patterns, а также опыт), и уметь находить это (полноконтекстный поиск, grep и т.д.)
- Уметь работать с Java инструментами такими как debug, thread dump, profilers, memory dump.
- Иметь представление о стандартных структурах данных и алгоритмах.
- Понимать как работает фундаментальное - диск, сети, многопоточность, CPU. А также разбираться в JDBC, Servlets API, Maven.


Это больше похоже на идеальный случай, когда проект изначально проектировался и писался правильно.
Реально же в большинстве случаев это не так - о solid предшественники и не вспоминают, про фундаментальное что-то знают, что-то нет. Код, как минное поле. Да, есть "быстроразбиральщики", которые правят какую-то одну ошибку, но потом в другом месте программы в результате может появиться другая, но им все равно (или они просто не понимают этого) - работа по исправлению ошибки ведь выполнена.
У меня разбор такого кода занимает тоже много времени, и это необходимость. Код обычно legacy - тестами не покрыт, времени на написание собственных тестов не дают, поэтому требуется вдумчивый анализ каждой строки кода и восстановление логики работы программы.

Нет ничего проще, чем заблудиться в иллюзиях, нет ничего сложнее, чем освободиться от них.
 
 
Сообщения:3
Привет всем!!!
Спасибо всем кто откликнулся на мою просьбу объяснить что к чему . Сделаю небольшой комментарий по поводу моей текущей работу с нашей банковской программой :
-под понятием модуль я имел ввиду некоторую область банковской деятельности (например модуль вклады, кредиты, отчетность , ценные бумаги , касса и.т.д)
-некоторые спрашивали почему клиент-серверная технология и что это старье , да я согласен , система стара и ее пытаются перевести на 3-х звенную архитектуру и на java но пока безуспешно т.к переписывать надо наверно 50 % а то и больше + нету спецов по java только oracle, никаких unit тестов здесь конечно нет , все делается вручную и тестируется тоже вручную единственная надежда это тестировщик если вдруг пропустишь ошибку.

В итоге я сделал вывод что быстрого способа усвоения нет , тупо чем больше сидишь и втыкаешь в код тем быстрее поймешь его (Вот на счет реверс -инжениринга это идея хорошая , были бы uml диаграммы дело пошло бы конечно быстрее . Кстати интересно узнать кто и как разбирает незнакомый код ? Я например пытался по отладчику записывать стек вызовов а потом по нему рисовать блок схему или диаграмму . Как вы поступаете , в памяти все представляете или делает наброски ?

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

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

Если у кого-то есть чем дополнить с удовольствие почитаю , а так всем спасибо за уделенное внимание и советы
Изменен:03 авг 2017 15:33
 
 
Сообщения:1555
Quote:
Что касается java классов прогнать опять-таки через инструментарии

Как говорится very true. Например Class Visualizer
 
 
Сообщения:220
Imix:
Как говорится very true. Например Class Visualizer

кривенько она работает.. вроде все просто написано, но неправильно импортирует библиотечные зависимости - ни прямоуказанные jar, ни репозитарий..
никак не смог получить рабочий вариант - не видит классы в импортированных jar'никах смех да и только..
 
 
Сообщения:20
Когда сильно начинаешь вдаваться в подробности, общая картинка убегает. Поэтому стоит создать план по изучению и не откланяться от него. Так же помогут памятки на видном месте.
 
Модераторы:dTern
Сейчас эту тему просматривают:Нет