Comments 17
В длительных проектах сложно держать все в голове, в нашей компании разрабатывалось изначально 3 программных продукта которые зависимы друг от друга, и в каждом из них более сотни фишек многие из которых влияют на поведение остальных, год назад появились дополнительные продукты и привлекаются новые команды, в том числе фрилансеры на небольшие задачи.
Если не документация — прочтение тонны кода превращаются в ад (первый релиз был 7 лет назад)…
правило «разделяй и властвую» — отлично справляется, иначе бы каждый программист то и делал что код читал… пока до конца дойдешь — не помнишь с чего начиналось…
а пробелы новых сотрудников есть смысл заполнять по мере создания ими (сотрудниками новыми) конкретных решений, с этим помогают люди которые создавали зависимые части программы.
быстрее спросить пояснение, чем лазить в дебрях чужого код… а херовый код пишут все. Условие разные и срочность решения задачи бывает не оставляет времени на поиск элегантного решения с хорошо структурированным кодом.
Для некоторых проектов на почтение всего исходного кода могут уйти годы, а то и вся жизнь. Как тогда быть?
В проекте, с которым я работаю около 15 000 000 строк кода.
Пусть я буду читать по строке в секунду без остановки (без сна, обеда, отпуска, выходных и перерывов) — на это мне понадобится примерно полгода. Если всё же предположить, что я буду читать по строке в секунду только в рабочее время, то у меня уйдёт более двух лет. Всё это время я не буду работать и буду только читать код, который, кстати, за два года кардинально изменится. Если заложить время не только на чтение, но и на его обдумывание, то, боюсь представить время на такое обдумывание.
Такие дела.
Вредный совет, неправильные выводы. Чтобы знать всю систему, особенно, если это действительно большая система, надо уметь абстрагироваться от мелочей. ООП, с его декомпозицией, перетекающей в инкапсуляцию, позволило строить действительно большие системы именно благодаря разделению контекстов с сокращением их объёма до реально объемлемых пределов.
Быть экспертом по всей ли стстеме, либо по какому-то участку системы — не вредно, но всё имеет цену. Проблема не в "оно вам надо, такое беспокойство?", а в том, настлько ли оно полезно, насколько трудозатратно (читай: дорого).
Или так: у тебя есть машина? Разбери её. Всю. Если машины нет, разбери троллейбус. Нет, собирать не обязательно, главное — разобрать, чтобы знать и понимать. И рассуждать об этом на собраниях. И будешь ценным кадром.
То есть нет, вру: оказывается, умение собирать может быть намного полезней, и ценится дороже.
На самом деле, чтобы начать врубаться, достаточно читать диффы всех новых вмерженных в мастер веток — а не только того, что полагается в рамках назначенного лично тебе code review. В таком случае, будет достаточно нескольких месяцев, чтобы обрести новый, более глубокий уровень понимания (хотя экспертом по всему продукту стать не получится, для этого нужно писать код во всех его частях, а не только читать). Выделить на это достаточно полчаса в день — после обеда, или по приходу на работу, или ещё какое у кого малопродуктивное время. Заодно и в рабочее состояние проще становится войти.
Я много раз «читал» код, например при переходе на новый проект или при смене работы. Чтение требовала от несколько дней до месяца. Но это всего лишь ознакомление и ни как не овладение. Более того, этот процесс демотивирует и неинтересен и скорее всего знания кода будет временным.
Из моей практики, лучше просто узнать что и где находится, создать наброски и диаграммы. А углубляться уже при работе на конкретную часть кода. У меня я команде всегда кто то хорошо знал часть кода, и все зависели друг от друга. Все, всегда участвовали во всех стратегических совещаний. Тех лид никогда не знал код полностью а только, кто за что отвечает и что где находится, где какие проблемы возникали и их решение. Сам он всегда имел кучу документов со описанием кода, проблем и узких мест, списка желании и так далее. Но и даже после этого знать вес код не было реально а проект имел средние размеры.
Ни кто не хочет тратить собственное время на код и проект, так ка другого свободного времени нет, на работе работаем а после каждый по своим делам. Лучше поменять работу и таким образом получить прибавку к зарплате чем заниматься сомнительно выгодным делом за счет собственного времени. К тому же если даже тратить столько времени на один проект ради становления каким то лидом и/или прибавки зарплаты то тогда как профессионал не будет прогресса разве что в конкретной среде. Знаю многих кто по этой схеме двигались и после многих лет уже работу менять не могут и зарплата уже не поднимается. Но зато все обращаются к ним, потому что проект знают от А до Я. Наверно после такого авторитета поменять работу уже не хочется, ну и что нет радости в работе и жизнь не имеет смысла…
А то ведь некоторые работают над такими продуктами, что чтение всего коде без осмысления может занять несколько лет, а уж с осмыслением…
У нас в фирме почти 700 разработчиков и кода за десятки лет написано не просто много, а до… фига.
Главное понимать, как работает система в целом, знать ее шаблоны, особенности и дыры. А читать тысячи строк кода… ну, это если совсем много свободного времени…
Прочитайте код своего продукта. Весь