TL, DR: В моей компании разрабатывался этот программный продукт, мне нужно было просмотреть большую часть кодовой базы. Как связаться с командой разработчиков?
Не очень короткая версия:
По ряду причин (включая отсутствие документации, незнание языка программирования, поездки и отпуска, делающие людей недоступными) я решил заняться изучением кода самостоятельно. Теперь мне нужно начать более правильно общаться с разработчиками, но я не уверен, какой подход будет лучшим. Я чувствую, что «моя домашняя работа» по пониманию их кодовой базы почти сделана, приближается «время вопросов».
Как я могу подойти к ним, чтобы не показаться назойливым, властным или чрезмерно критикующим:
1-Задавайте вопросы о конкретных частях кода (у меня есть большая куча заметок, полных ими)
2-Узнайте о функциях и деталях, которые, по моему мнению, в основном незакончены.
3-Спросите о проблемах с ремонтопригодностью, которые я поднял.
4. Укажите на проблемы с качеством, которые могли возникнуть из-за инструментов с открытым исходным кодом.
5-Попросите лучшую документацию.
Примечания к контексту:
Таким образом, несколько практических подходов могут быть следующими:
1-Я случайным образом упоминаю фрагменты кода и задаю вопросы, как будто случайно прохожу мимо и не забуду задать вопрос. Это прозвучало бы странно, может быть агрессивно, и я, скорее всего, получил бы отрицательные ответы. Кроме того, они, как известно, дают пренебрежительные ответы.
2. Я мог бы запланировать встречу с младшим разработчиком и пройтись с ним по своим заметкам. Обстановка встречи позволила бы больше сосредоточиться на разговоре, но я бы понял, если бы он чувствовал, что его слишком критикуют. Я мог бы разделить записи на несколько встреч, но тогда каждая встреча была бы сложнее предыдущей.
3. Я начинаю публиковать сообщения о проблемах в инструментах управления версиями и/или делать глупые запросы на включение в их кодовую базу (исправлять опечатки, вставлять лучшие комментарии и т. д.). Я думаю, это будет раздражать всех, и если они действительно отклонят или приостановят запрос на вытягивание без объяснения причин, я буду очень оскорблен. Но некоторые из моих жалоб могут потребовать ответа «тогда сделай сам» .
Чего я хочу/должен достичь, так это: я хочу относительно хорошо знать их кодовую базу и заставить их признать это. Мне нужно иметь возможность задавать деликатные/конкретные вопросы и получать честные, конкретные ответы. Я бы хотел, чтобы они со временем улучшили свои стандарты кодирования и документацию.
Если вам нужно интегрироваться с их кодом, почему бы не рассматривать его как черный ящик?
Если вы укажете, каких результатов вам нужно достичь, и попросите их описать, как взаимодействовать с их кодом для достижения желаемых результатов, а не просматривать сам код. Другими словами, попросите их предоставить подробную спецификацию (аналогично контракту на обслуживание с точки зрения API), а не объяснять, как работает их реальный код на подробном уровне.
Это жизнеспособно?
Мне кажется, вы подходите к своей задаче не с того конца. Если ваша цель состоит в том, чтобы помочь улучшить стандарты кодирования, этого не добиться, подвергая сомнению существующую кодовую базу. Вы должны показать пример, чтобы добиться этого, и быть в состоянии объяснить, почему то, как вы сделали конкретный фрагмент кода, лучше предыдущего.
У вас нет причин изучать старый код или подвергать сомнению все это. Не похоже, что есть бюджет, чтобы пойти и переписать/рефакторить все это, не так ли? Хотя, если бы это было так, я бы все равно сосредоточился не на существующей реализации, а на сборе бизнес-требований и последующей проверке того, соответствует ли им код. Это также создаст четкие точки действий о том, что и как нужно улучшить, а по мере написания нового кода — это время для внедрения лучших методов кодирования с помощью проверок запросов на вытягивание.
Но просто подвергать сомнению всю кодовую базу, я не думаю, продуктивно, и ваша текущая цель вызовет у разработчиков только гнев, а не благоговение и уважение, потому что критиковать легко, а направлять и наставлять к лучшему, часто личным примером, легко. жесткий.
Только просматривая комментарии, я узнал, в чем, по-видимому, ваша проблема: вам нужно написать программное обеспечение, которое интегрируется с существующим программным обеспечением.
Вам вообще не нужно смотреть на их код, и качество кода не должно иметь для вас значения. Что вам нужно, так это четко документированные интерфейсы. И если этих четко документированных интерфейсов нет, кто-то должен их создать.
Что вам нужно сделать, так это поговорить с кем-то, кто отвечает за то, как вы получите то, что вам нужно. Кто-то, кто может сказать команде: «xyz нужно задокументировать, и это имеет более высокий приоритет, чем задачи a, b и c». И вы, вероятно, были бы подходящим рецензентом для этой задачи.
Какова ваша цель здесь? Все, что я вижу из вашего вопроса, - это личное обучение, поскольку я не вижу бизнес-цели (например, мне нужно изучить базу кода, потому что я буду разрабатывать продукт с группой, писать тестовые примеры и т. д.). У разработчиков есть только определенное количество времени в день, и, учитывая выбор между целями, поставленными перед ними их боссом, ИЛИ удовлетворением вашего интеллектуального любопытства, какую из них они выберут?
Сообщите о своих целях, почему вы делаете то, что делаете, и если разработчики увидят какие-то положительные стороны этой идеи, они, скорее всего, будут работать с вами, чтобы добиться этого.
Прежде всего, проекту нужна документация — не только документация для пользователей, но и документация для разработчиков. Вот с чего вы должны начать, прочитав документацию.
Эта документация представляет собой не просто список классов/функций, не просто сгенерированный doxygen список комментариев из кода, она должна иметь хороший общий обзор архитектуры, модулей приложения, а затем переходить к следующему и следующему. уровень, компоненты, классы, их взаимодействие и т.д. и т.п.
Если такой документации нет, то это первый момент, который нужно исправить — они должны это сделать.
Если компания не хочет выделять время даже на написание базовой архитектурной документации, то, наверное, и на что-то другое время не выделят, и тогда ситуация безвыходная. (и вопрос, зачем ты вообще это делаешь?)
Вопрос в том, не писали ли разработчики документацию, потому что не хотели... или потому что компания не давала им времени на это, и продолжала просить все больше и больше функций, игнорируя долгосрочную потребность в документации. , автоматические тесты на всех уровнях (юнит, компонент, интеграция и т. д.), правильный код-ревью и все остальное...
Если компания не дала им на это время, а теперь вы приходите и просите их об этом, им (по понятным причинам) это не понравится.
sf02
Первый игрок
Бернхард Дёблер
Мефитико
Мефитико
Мефитико
Мефитико
Сайфер
Мефитико
Мефитико
Мефитико
Стефан Бранчик