-
Глубокое заблуждение, что начинающий пишет с той же скоростью, что и опытный. Сколько раз уже измеряли, скорость иногда на порядок отличается. А если работа ведущего убирать мусор за подчиненными - то и ведущего быстро не станет, и студенты ничему не научатся. Есть, конечно, такие фирмы, с жуткой текучкой кадров, по этому признаку их и распознать можно. Но сейчас они уходят: написать-то продукт таким стилем можно, а вот сопровождение сделает его золотым.
-
Romkin © (15.05.08 11:34) [40]
> Глубокое заблуждение, что начинающий пишет с той же скоростью, > что и опытный.
Начинающий даже быстрее может писать. Вот только исправлять за ним потом дольше
-
> Поп Гапон (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-х компов.
Вот такая арифметика. Два ведущих по срокам - быстрее, по деньгам - дешевле, по качеству - лучше.
-
Впрочем, не так страшен код с непонятными названиями и без комментариев, как код с большой связностью. Это когда покрутил что-то в одном месте - и гадость лезет в куче других, совершенно неожиданно :) Вещи эти в какой-то мере взаимосвязаны: если код написан как курица лапой, то скорее всего и вся программа будет единым куском в стиле "не трогать!!!!!!!". Но иногда бывают программы "переходного периода", комментарии есть - а трогать нельзя. Так вот, о чем я: программу такую часто легче переписать, чем привести в нормальный вид. К сожалению, такой опыт уже был :(
-
А откуда возьмутся ведущие, если везде кроме трех студентов посадить одного опытного?
-
Проблема программистов - "художников" решается достаточно просто. Во-первых, следует не полениться и написать "Стандарты" - на программный код, на код сервера, на оформление документации, на требования к интерфейсу и т.д. Во-вторых, каждому вновь пришедшему дать эти все стандарты и приказать иметь их на столе в печатном формате. В-третьих, с первых же проектов контролировать соблюдение этих стандартов.
За 2 года, что я работаю с молодежью, у меня был только один момент, когда молодому надо было не просто объяснить, но и слегка придавить "авторитетом", чтобы соблюдал.
Сейчас у нас несколько десятков проектов, написанных разными программистами. Любой из них легко въезжает" в любой проект. Правда, необходимо заметить, что очень много реализовано в библиотечных юнитах "системного" назначения.
-
> Впрочем, не так страшен код с непонятными названиями и без > комментариев, как код с большой связностью. Это когда покрутил > что-то в одном месте - и гадость лезет в куче других, совершенно > неожиданно :) > Вещи эти в какой-то мере взаимосвязаны: если код написан > как курица лапой, то скорее всего и вся программа будет > единым куском в стиле "не трогать!!!!!!!". Но иногда бывают > программы "переходного периода", комментарии есть - а трогать > нельзя.
Все это от лукавого! Сначала пишут программы, а потом пытаются менять архитектуру ) Вместо того чтобы переписать большую часть, начинают мудрить и делать заплатки - лишь бы работало. В итоге абсолютно не понятная и порой даже не логичная структура проекта. А дело то в том, что на этапе проектирования надо было учесть все возможное и даже не возможное, что может происходить с программой или базой, какие могут потребоваться доработки и как сделать так чтобы в дальнейшем можно было бы без труда внести изменения или доработать проект.
-
> Во-вторых, каждому вновь пришедшему дать эти все стандарты > и приказать иметь их на столе в печатном формате.
Необязательно. Когда я работал в известной компании, у нас все стандарты лежали на сервере в общем доступе.
-
Практика показывает, что печатный материал лучше "инсталлится" в мозги, чем экранный. К тому же можно карандашом пометить для Пети одни разделы, а для Тани - другие для первоочередного "усвояевания" ;)
-
> Практика показывает, что печатный материал лучше "инсталлится" > в мозги, чем экранный.
Это от типа мозга, зависит. Современный универсальный мозг, способен воспринимать информацию на разных носителях )
-
> MsGuns © (15.05.08 12:05) [45] > но и слегка придавить "авторитетом", чтобы соблюдал.
А почему авторитетом, а не з/п? Или авторитетом - более тонкое искуство при тех же (или лучших?) результатах, а з/п - это грубо?
-
> Современный универсальный мозг, способен воспринимать информацию > на разных носителях
Главное, чтобы он ее потом не вываливал на разные носители :)
MsGuns прав, бумажный вариант всяко лучше.
-
> MsGuns прав, бумажный вариант всяко лучше.
ну с кпк книжки читать тоже вполне удобно )
-
> Все это от лукавого! Сначала пишут программы, а потом пытаются > менять архитектуру ) Вместо того чтобы переписать большую > часть, начинают мудрить и делать заплатки - лишь бы работало.
Да не обязательно. Реальная история: надо было написать небольшое простое приложение, а точнее, просто переписать то, что было под ДОС на win, ну и немного расширить возможности. Наняли "вчера студент", я ему примерную структуру БД нарисовал, фигня, десяток таблиц всего там. К сожалению, я был загружен, и не проконтролировал код. Мдя. Получился уродец, но кое-как работающий :) Через пару месяцев посадил опытного программиста чуть доделать (не менять), убрать иногда появляющийся AV, ну и пару кнопок приделать. Мелочи. Через месяц с ним случилась истерика :)
-
Код был примерно такой (выдрал отрывок, весь метод не поместится точно!) 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;
Так практически везде. И это еще цветочки :))) Стоило чуть поменять где-либо - все сыпалось непредсказуемым образом... Типа один метод что-то делает с таблицей, за ним запускается другой (вообще из другого модуля), который рассчитывает, что первый метод точно все сделал и спозиционировал таблицу именно так, как надо. Ну и тд..
-
Ну не самый страшный код ) Но как минимум студента заставить именовать грамотно объекты - надо было!
-
Romkin © (15.05.08 12:34) [54]
Ночной кошмар программиста
-
> Ночной кошмар программиста
ну-ну проснувшись от такого кошмара, рекомендуется пойти на кухню выпить стакан водки с перцем, покурить, вздохнуть, залезть под одеяло и долго думать об троекратном росте свой заработной платы, до тех пор пока не уснешь!
-
Style © (15.05.08 12:42) [55] Ночной кошмар программиста Ц графика - нистрашно... Вот када такая "программа" на непрерывном производстве железкой рулит автоматически, а эта железка высотой в 3 этажа - вот это страшно!
-
> TUser © (15.05.08 12:04) [44]
> А откуда возьмутся ведущие, если везде кроме трех студентов > посадить одного опытного?
Проблема подготовки кадров - отдельный вопрос. Готовить их нужно, в том числе и на реальных проектах - но при этом не нужно говорить что проект стал дешевле.
Конечно же, он стал дороже - ровно на стоимость ресурсов, потраченных на обучение. И на соответствующее время длительнее.
|