LINUX.ORG.RU
ФорумTalks

как вы вливаетесь в новый проект?

 , ,


0

1

Всем привет.

Например, вас взяли на проект где уже написано 100500 строк кода, при чём проект пережил несколько этапов эволюции: писался разными людьми, которые уже не работают, с разным уровнем скиллов и т.д. Другими словами — «сборная солянка» ☺

Вы сразу берёте какую-то таску, пусть будет «на починить» или «реализовать» что-то и понеслась...

Как вы будете это делать?

У меня что-то хреновенько выходит ☹ Реализовывая/чиня что-то, я пытаюсь применять алгоритмы поисков вглубину и ширину. Но проблема заключается в том, что дойдя до самой глубокой ноды я уже не понимаю как и зачем я сюда добрался. Записи и рисовалки не помогают. С шириной всё ещё хуже — инфы набирается столько, что теряю нить её применения и приходится несколько раз начинать сначала.

Интересен любой опыт над любыми проектами... ну, и техники «вливания»


Имитируешь деятельность, получая зарплату. Держат обычно до конца испытательного срока. Параллельно ищещь другую работу. Приходишь туда. Repeat.

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

прости, но при чём тут это?

ubik
() автор топика

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

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

Rastafarra ★★★★
()
Последнее исправление: Rastafarra (всего исправлений: 1)

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

Это как? Чет не могу себе представить такого...

Stil ★★★★★
()
Ответ на: комментарий от Stil

Это как?

это очень даже запросто, когда у тебя 100500 модулей, процедуры по 1000 строк и никакой ИДЕ нет, есть только что-то вроде блокнота, да и тот убогий.

Rastafarra ★★★★
()
Ответ на: комментарий от Stil

Это как? Чет не могу себе представить такого...

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

ubik
() автор топика
Ответ на: комментарий от Rastafarra

когда у тебя 100500 модулей

И твой учебный баг размазан по всем 100500 модулям?

процедуры по 1000 строк

Kill it with fire.

никакой ИДЕ нет, есть только что-то вроде блокнота, да и тот убогий.

Аппаратный блокнот и ручка тащат. Имхо.

Stil ★★★★★
()
Ответ на: комментарий от Rastafarra

никакой ИДЕ нет, есть только что-то вроде блокнота, да и тот убогий.

А как IDE поможет в этом?

ubik
() автор топика
Ответ на: комментарий от ubik

как IDE поможет в этом?

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

Rastafarra ★★★★
()
Ответ на: комментарий от ubik

у тебя возникает ещё 100500 вопросов из-за которых ты можешь ветвиться

Ну тут как Rastafarra выше написал, да. Я записывал свои вопросы в блокнотик и, когда их набиралось 5-10 штук, звал опытного программера.

Stil ★★★★★
()

Реализовывая/чиня что-то, я пытаюсь применять алгоритмы поисков вглубину и ширину.

В этом и проблема. У тебя есть некоторый локальный баг, его и чини, не лезь в дебри, которые к нему не относятся. Со временем разберёшься, а поначалу не надо.

Gvidon ★★★★
()
Ответ на: комментарий от ubik

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

Rastafarra ★★★★
()

Например, вас взяли на проект где уже написано 100500 строк кода

Лучше всего в такие проекты не ввязываться вообще. Временами, правда, бывают, исключения - когда проект писали грамотные люди, и вместо «спагетти-кода» сделали всё по уму (SOLID, IOC, и.т.д).

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

писался разными людьми, которые уже не работают, с разным уровнем скиллов и т.д. Другими словами — «сборная солянка»

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

DawnCaster ★★
()

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)

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

unt1tled ★★★★
()
Ответ на: комментарий от Iron_Bug

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

Куда копать я понимаю без вводных презентаций.

во-вторых, сгенери доки типа doxygen. если даже встроенных специальных комментариев нет, это отчасти поможет обозревать и исследовать код.

за doxygen спасибо, попробую ☺

ну а в остальном - только «опыт, сын ошибок трудных»

за этим я и пришёл сюда ☺

без корпения над кодом и овертаймов в новый проект не вольёшься.

да, я знаю, поэтому и сижу в офисе по 12-14 часов

обычно новичкам не дают задачу сразу что-то менять радикально в проекте.

пока таких задач не было, но дополнить хороший кусок фукнционала нужно

ubik
() автор топика
Ответ на: комментарий от unt1tled

У меня это так и не получилось ниразу.

Вникнуть в код?

В итоге всегда переходил на сольный проект. По пути обидев всю команду.

О! Расскажи подробности

ubik
() автор топика

С новыми проектами проблем обычно две:

1) отсутствие документации в принципе. инфа добывается методом «спроси вот у того человека, он тут давно работает и всё знает». человек же обычно тебя не понимает. например, тебе надо покрасить забор «в горошек», и ты спрашиваешь, как собственно менять цвет кисти(ибо до этого красили только одним цветом, и операции «сменить краску» не предусмотрено), а тебе объясняют как выбрать цвет для закраски забора одним цветом. иногда даже очень детально объясняют.

как подпункт этого пункта - полное отсутствие проектной документации: какие модули что куда делают, с кем взаимодействуют и т.д.

2) «гениальные» решения предыдущих разработчиков, которые надо героически преодолевать(ты же программист, разберись как нибудь). Например, код работал с файлом, и поэтому в принципе не предполагает возможности асинхронной работы. Теперь надо его использовать с сокетом и менять API нельзя.

i36_zubov
()

в качестве примера приведу тот же QtCreator

я долго пытался сделать на его базе редактор ASICов типа Cadence virtuoso. Но любое движение с ним даётся с таким геморроем, что оказалось проще написать с нуля упрощённый creator без этой адской мишуры, что и было сделано за неделю.

Чтоб в креаторе просто начать что-то редактировать в графическом режиме, тебе надо продраться сквозь сотни исходников, узнать как работает IMode, IEditor(который надо сделать readonly как в редакторе форм), программный интерфейс диалога «создать файл или проект» вообще изначально делался садистами.

i36_zubov
()
Ответ на: комментарий от pawnhearts

Там есть фичи типа goto definition и find usages.

по коду я умею бегать, вопрос не про это

ubik
() автор топика

Как оно у программеров не скажу, скажу про админов. Когда приходишь в группу админов, поддерживающую несколько больших проектов с хитрой инфраструктурой(разумеется, не задокументированной) - первые недели три-четыре делаешь всякую мелочёвку и всех заёбываешь вопросами. Потом втягиваешься. Это нормально, если ты пришёл на большой запутанный проект - никто не ждёт, что ты с первого дня начнёшь выдавать стахановский объём полезной работы.

selivan ★★★
()
Ответ на: комментарий от i36_zubov

1) отсутствие документации в принципе.

да, таких проектов у меня было >= 80%. Вся инфа передавалась народным фольклором. А те доки, что были, были obsolete.

2) «гениальные» решения предыдущих разработчиков

ну, это отдельная тема

Моя проблема заключается в том, что бегая по дефинишенам и коллам я не вижу архитектуры в целом. Например, вот этот класс наследуется от этих двух, а эти два ещё от восьми и т.д. + иногда приходится параллельно узнавать какие-то особенности языка или алгоритма. На выходе получается такая каша в голове, что думаешь: «Как бы отсюда уеб^Wвыйти и спрятаться» ☺

Кстати, с сишечкой мне почему-то проще разобраться, чем с каким-либо другим ОО-м языком ☹

ubik
() автор топика
Ответ на: комментарий от ubik

я работал в конторе, где на сишечке написали молитву сатане о ниспослании содомии и потоков фекалий, и сами еле еле понимали как её патчить, чтоб содомия так сильно не одолевала фекалием.

еще на практике был случай, когда кто-то очень умный замутил очень крутое ОО на С++ с QueryInterface и прочим форшмаком. И оно даже работало но не дай бог было где-то оставить хоть один «умный указатель» указывающий на полученные классы. Нет, оно не падало. Просто все изменения исчезали и заменялись на старые данные.

i36_zubov
()
Ответ на: комментарий от ubik

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)

Реализовывая/чиня что-то, я пытаюсь применять алгоритмы поисков вглубину и ширину. Но проблема заключается в том, что дойдя до самой глубокой ноды я уже не понимаю как и зачем я сюда добрался.

У тебя что на время "вливания" в проект совсем куратора нет? Обычно есть человек, которому можно сношать мозг глупыми вопросами по проекту. А сидеть сычом и применять "вглубину и ширину" это значит что соискатель не коммуникабелен и его лучше не брать на работу.

Loki13 ★★★★★
()
Ответ на: комментарий от Rastafarra

когда у тебя 100500 модулей, процедуры по 1000 строк и никакой ИДЕ нет, есть только что-то вроде блокнота, да и тот убогий.

Зачем работать в конторе, которая даже IDE на рабочее место не может купить?

Loki13 ★★★★★
()

бывает, что и спросить не у кого, работаешь над таким проектом один %)

люди бинарники успешно реверсинжинирят и дизассемблируют, а у тебя исходники есть, можешь мотивировать себя этой мыслёй

Harald ★★★★★
()
Ответ на: комментарий от Harald

Наоборот же. От копания в говне прокрастенирую. От этого накапливается зло. И все эти необразованные заедушные школьники начинают карабкаться на йух по очереди или все вместе.

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

unt1tled ★★★★
()
Последнее исправление: unt1tled (всего исправлений: 1)
Ответ на: комментарий от ubik

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

unt1tled ★★★★
()
Ответ на: комментарий от ubik

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

unt1tled ★★★★
()
  • Исследуешь падения/сбои системы.
  • Читаешь код!
  • Правишь известные баги.
  • Profit.
staseg ★★★★★
()
Ответ на: комментарий от staseg

И это, обязательно требуй от более опытных коллег делать ревью на твои изменения.

staseg ★★★★★
()
Последнее исправление: staseg (всего исправлений: 1)
Ответ на: комментарий от ubik

не лезь в дебри

с багом немного проще, а вот с имплементацией уже сложнее

Тот же совет. Сделай новый модуль с процедурами по 1000 строк кода и как-нибудь прилепи его к остальному. Ынтерпрайз же!

cipher ★★★★★
()
Ответ на: комментарий от Gvidon

У тебя есть некоторый локальный баг, его и чини

Иногда «локальный баг» является следствием самой концепции, и тогда его лечение прверащается в ох...го размера рефакторинг всего кода от самых базовых классов.

А особенно доставляют плюсовики, у которых 30% кода в .cc, 30% в .h и оставшееся это сцуко буст и STL.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

и тогда его лечение прверащается в ох...го размера рефакторинг

Который должны проводить люди, как минимум, разбирающиеся в коде и стоящей за ним логике. Только что пришедший на проект новичок тебе нарефачит, будешь потом неделями баги разгребать без выходных и перерывов на обед.

Gvidon ★★★★
()
Ответ на: комментарий от Gvidon

нарефачит, будешь потом неделями баги разгребать

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

pawnhearts ★★★★★
()

как вы вливаетесь в новый проект?

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

drull ★☆☆☆
()
Ответ на: комментарий от Harald

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 3)
Ответ на: комментарий от Loki13

купить

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

я под это дело даже взялся запилить плагин для идеи, но в одну харю оказалось чета дофига пилить, а присоединиться никто не захотел, всем пофиг.

так и живем.

Rastafarra ★★★★
()

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

i36_zubov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.