Конференция "Прочее" » Впервые в команде. Думал, прикалываетесь.
 
  • Romkin © (15.05.08 11:34) [40]
    Глубокое заблуждение, что начинающий пишет с той же скоростью, что и опытный. Сколько раз уже измеряли, скорость иногда на порядок отличается.
    А если работа ведущего убирать мусор за подчиненными - то и ведущего быстро не станет, и студенты ничему не научатся.
    Есть, конечно, такие фирмы, с жуткой текучкой кадров, по этому признаку их и распознать можно. Но сейчас они уходят: написать-то продукт таким стилем можно, а вот сопровождение сделает его золотым.
  • Игорь Шевченко © (15.05.08 11:37) [41]
    Romkin ©   (15.05.08 11:34) [40]


    > Глубокое заблуждение, что начинающий пишет с той же скоростью,
    >  что и опытный.


    Начинающий даже быстрее может писать. Вот только исправлять за ним потом дольше
  • Юрий Зотов © (15.05.08 11:38) [42]
    > Поп Гапон   (14.05.08 20:21) [15]

    Принимаем, что зарплата ведущего равна 3-м студенческим. Получаем вот что.

    1. Вариант: 3 студента плюс ведущий.

     3*1 - зарплата 3 студентов за месяц;
     0.5*3 - зарплата ведущего за консультации студентов и правку их кода в том же месяце;
     0.5*3 - зарплата ведущего за следующий месяц, в котором он писал тот код, который недописал в предыдущем месяце  из-за того, что потратил время на студентов и правку их кода.

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

    2. Вариант: два ведущих.

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

    Вот такая арифметика. Два ведущих по срокам - быстрее, по деньгам - дешевле, по качеству - лучше.
  • Romkin © (15.05.08 11:42) [43]
    Впрочем, не так страшен код с непонятными названиями и без комментариев, как код с большой связностью. Это когда покрутил что-то в одном месте - и гадость лезет в куче других, совершенно неожиданно :)
    Вещи эти в какой-то мере взаимосвязаны: если код написан как курица лапой, то скорее всего и вся программа будет единым куском в стиле "не трогать!!!!!!!". Но иногда бывают программы "переходного периода", комментарии есть - а трогать нельзя.
    Так вот, о чем я: программу такую часто легче переписать, чем привести в нормальный вид. К сожалению, такой опыт уже был :(
  • TUser © (15.05.08 12:04) [44]
    А откуда возьмутся ведущие, если везде кроме трех студентов посадить одного опытного?
  • MsGuns © (15.05.08 12:05) [45]
    Проблема программистов - "художников" решается достаточно просто.
    Во-первых, следует не полениться и написать "Стандарты" - на программный код, на код сервера, на оформление документации, на требования к интерфейсу и т.д.
    Во-вторых, каждому вновь пришедшему дать эти все стандарты и приказать иметь их на столе в печатном формате.
    В-третьих, с первых же проектов контролировать соблюдение этих стандартов.

    За 2 года, что я работаю с молодежью, у меня был только один момент, когда молодому надо было не просто объяснить, но и слегка придавить "авторитетом", чтобы соблюдал.

    Сейчас у нас несколько десятков проектов, написанных разными программистами. Любой из них легко въезжает" в любой проект. Правда, необходимо заметить, что очень много реализовано в библиотечных юнитах "системного" назначения.
  • Style © (15.05.08 12:05) [46]

    > Впрочем, не так страшен код с непонятными названиями и без
    > комментариев, как код с большой связностью. Это когда покрутил
    > что-то в одном месте - и гадость лезет в куче других, совершенно
    > неожиданно :)
    > Вещи эти в какой-то мере взаимосвязаны: если код написан
    > как курица лапой, то скорее всего и вся программа будет
    > единым куском в стиле "не трогать!!!!!!!". Но иногда бывают
    > программы "переходного периода", комментарии есть - а трогать
    > нельзя.


    Все это от лукавого! Сначала пишут программы, а потом пытаются менять архитектуру ) Вместо того чтобы переписать большую часть, начинают мудрить и делать заплатки - лишь бы работало. В итоге абсолютно не понятная и порой даже не логичная структура проекта.
    А дело то в том, что на этапе проектирования надо было учесть все возможное и даже не возможное, что может происходить с программой или базой, какие могут потребоваться доработки и как сделать так чтобы в дальнейшем можно было бы без труда внести изменения или доработать проект.
  • keymaster © (15.05.08 12:10) [47]

    >  Во-вторых, каждому вновь пришедшему дать эти все стандарты
    > и приказать иметь их на столе в печатном формате.

    Необязательно.
    Когда я работал в известной компании, у нас все стандарты лежали на сервере в общем доступе.
  • MsGuns © (15.05.08 12:16) [48]
    Практика показывает, что печатный материал лучше "инсталлится" в мозги, чем экранный. К тому же можно карандашом пометить для Пети одни разделы, а для Тани - другие для первоочередного "усвояевания" ;)
  • Style © (15.05.08 12:21) [49]

    > Практика показывает, что печатный материал лучше "инсталлится"
    > в мозги, чем экранный.


    Это от типа мозга, зависит. Современный универсальный мозг, способен воспринимать информацию на разных носителях )
  • KSergey © (15.05.08 12:23) [50]
    > MsGuns ©   (15.05.08 12:05) [45]
    >  но и слегка придавить "авторитетом", чтобы соблюдал.

    А почему авторитетом, а не з/п? Или авторитетом - более тонкое искуство при тех же (или лучших?) результатах, а з/п - это грубо?
  • Игорь Шевченко © (15.05.08 12:24) [51]

    > Современный универсальный мозг, способен воспринимать информацию
    > на разных носителях


    Главное, чтобы он ее потом не вываливал на разные носители :)

    MsGuns прав, бумажный вариант всяко лучше.
  • Style © (15.05.08 12:29) [52]

    > MsGuns прав, бумажный вариант всяко лучше.


    ну с кпк книжки читать тоже вполне удобно )
  • Romkin © (15.05.08 12:31) [53]

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

    Да не обязательно. Реальная история: надо было написать небольшое простое приложение, а точнее, просто переписать то, что было под ДОС на win, ну и немного расширить возможности. Наняли "вчера студент", я ему примерную структуру БД нарисовал, фигня, десяток таблиц всего там. К сожалению, я был загружен, и не проконтролировал код. Мдя. Получился уродец, но кое-как работающий :)
    Через пару месяцев посадил опытного программиста чуть доделать (не менять), убрать иногда появляющийся AV, ну и пару кнопок приделать. Мелочи. Через месяц с ним случилась истерика :)
  • Romkin © (15.05.08 12:34) [54]
    Код был примерно такой (выдрал отрывок, весь метод не поместится точно!)
        Panel1.Height := h div 3;
        dbreQuestionText.Width := w - h div 3;

        AnswerCount := 0;
        if ((Info.AnswerPicture1.Height <> 0) or (Info.AnswerText1DataSource.DataSet.FieldByName(Info.AnswerText1DataField).AsStr ing <> '')) then
         AnswerCount := AnswerCount + 1;
        if ((Info.AnswerPicture2.Height <> 0) or (Info.AnswerText2DataSource.DataSet.FieldByName(Info.AnswerText2DataField).AsStr ing <> '')) then
         AnswerCount := AnswerCount + 1;
        if ((Info.AnswerPicture3.Height <> 0) or (Info.AnswerText3DataSource.DataSet.FieldByName(Info.AnswerText3DataField).AsStr ing <> '')) then
         AnswerCount := AnswerCount + 1;
        if ((Info.AnswerPicture4.Height <> 0) or (Info.AnswerText4DataSource.DataSet.FieldByName(Info.AnswerText4DataField).AsStr ing <> '')) then
         AnswerCount := AnswerCount + 1;
        if (AnswerCount = 0) then
         AnswerCount := 1;
        Panel4.Width := w div AnswerCount;
        Panel5.Width := w div AnswerCount;
        Panel6.Width := w div AnswerCount;
        Panel7.Width := w div AnswerCount;

        if (Info.QuestionDataSource.DataSet.FieldByName(Info.QuestionDataField).AsString = '') then
         dbreQuestionText.Visible := False;
        if (Info.QuestionPicture.Height = 0) then
         begin
         Panel2.Visible := False;
         dbreQuestionText.Align := alClient;
         Panel1.Height := h div 4;
         end;

        temp := h - (stQuestion.Height + Panel1.Height + stAnswers.Height);
        if (Info.AnswerText1DataSource.DataSet.FieldByName(Info.AnswerText1DataField).AsStr ing <> '') then
         if (Info.AnswerPicture1.Height = 0) then
          begin
          dbreAnswer1.Height := temp - bbAnswer1.Height;
          iAnswer1.Visible := False;
          end
         else
          begin
          dbreAnswer1.Height := temp - min(w div AnswerCount, temp div 2) - bbAnswer1.Height;
          iAnswer1.Height := min(w div AnswerCount, temp div 2);
          end
        else
         if (Info.AnswerPicture1.Height = 0) then
          Panel4.Visible := False
         else
          begin
          dbreAnswer1.Visible := False;
          iAnswer1.Height := temp - bbAnswer1.Height;
          end;


    Так практически везде. И это еще цветочки :))) Стоило чуть поменять где-либо - все сыпалось непредсказуемым образом... Типа один метод что-то делает с таблицей, за ним запускается другой (вообще из другого модуля), который рассчитывает, что первый метод точно все сделал и спозиционировал таблицу именно так, как надо. Ну и тд..
  • Style © (15.05.08 12:42) [55]
    Ну не самый страшный код )
    Но как минимум студента заставить именовать грамотно объекты - надо было!
  • Игорь Шевченко © (15.05.08 12:58) [56]
    Romkin ©   (15.05.08 12:34) [54]

    Ночной кошмар программиста
  • Style © (15.05.08 13:03) [57]

    > Ночной кошмар программиста


    ну-ну проснувшись от такого кошмара, рекомендуется пойти на кухню выпить стакан водки с перцем, покурить, вздохнуть, залезть под  одеяло и долго думать об троекратном росте свой заработной платы, до тех пор пока не уснешь!
  • Slym © (15.05.08 13:37) [58]
    Style ©   (15.05.08 12:42) [55]
    Ночной кошмар программиста

    Ц графика - нистрашно... Вот када такая "программа" на непрерывном производстве железкой рулит автоматически, а эта железка высотой в 3 этажа - вот это страшно!
  • Юрий Зотов © (15.05.08 13:48) [59]
    > TUser ©   (15.05.08 12:04) [44]

    > А откуда возьмутся ведущие, если везде кроме трех студентов
    > посадить одного опытного?

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

    Конечно же, он стал дороже - ровно на стоимость ресурсов, потраченных на обучение. И на соответствующее время длительнее.
 
Конференция "Прочее" » Впервые в команде. Думал, прикалываетесь.
Есть новые Нет новых   [134435   +9][b:0][p:0.002]