Развитие программиста
От: Basil2 Россия https://starostin.msk.ru
Дата: 27.09.04 14:36
Оценка:
- Без славы мне в Париже не житье,
Вся жизнь прошла, пора судьбой заняться!
— Так сколько же вам лет, дитя мое?
— Ах много, сударь, много... восемнадцать!
Дуэт де Тревиля и д'Артаньяна.


Всегда считал себя грамотным специалистом, программистом высокого уровня (очень помогало при неудачах, даже с девушками). Успел написать коммуникационную систему Клиент/Сервер (сейчас 100,000 транзакций ежедневно, и без права на ошибку: потеряешь транзакцию, и звонят разъяренные пользователи; удвоишь ее — прибегают возмущенные бухгалтеры; а повиснешь и не будешь нечего передавать — встает на уши высшее начальство, у которого стоят программы по подсчету оборота за день и не дай Бог, если он ниже вчерашнего).

Но в последний год я как-то потерял энтузиазм, и делал свою работу спокойно. Хорошо, конечно, делал — мастерство не пропьешь, но и не "вау!". И в один прекрасный день, проснувшись, я понял, что так жить нельзя (ну, на самом деле в этот день я узнал, кто сколько получает) — и понял, насколько я опустился. И что быть простым программистом — "Василий, для тебя это мелко".

Но программировать мне и нравиться, и получается! И для себя я выбрал вариант "Генерального конструктора" (не знаю, как это будет в программном проекте — наверное, ведущий программист, но им я уже был). Он, с одной стороны, программист и технический специалист, а с другой — надо уметь работать с людьми, ставить им задачи и мотивировать их — руководить. Я вас еще не запарил этой лирикой? Еще чуть-чуть, и будет ваша очередь!

Так вот, я понял, насколько я отстал. Конечно, я применял ООП, кое-где лепил объекты и обширно комментировал исходники. Даже перешел с Watcom C на MSVC и попробовал его среду — оказывается, программы можно набирать не только в DOS Navigator'e (у меня в жизни был эпизод, когда я досконально: все фичи и все баги, знал две программы: Turbo Pascal 7.0 И DN 1.49 — эх, да его уже не вернешь)! И вот, я стал возвращаться в мир технологии: поигрался с продуктами Numega (с восторгом!, плюс изучил eMule , установил Source Safe и решил полностью переписать свою систему Клиент/Сервер (благо, назрела переделка системы безопасности, и под нее начальство дает время). Прочитал замечательную книжку Ханта и Томаса "Программист-прагматик", где увидел множество того, до чего дошел сам; и окончательно убедился, что нечего придумывать велосипед.

А посему, у меня к вам три вопроса (наконец-то, да?):

1. Путь от программиста к "большому" программисту — каков он?

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

3. Что почитать на эту тему? (URL/Книги. Я не думаю, что есть хорошие курсы для продвинутых программистов, но все же...)


О себе (для более точной наводки): 25 лет, окончил МАИ, компьютер с 13 лет , работаю программистом 4 года, сейчас "Руководитель группы" (но в группе лишь я да начальник отдела). Отлично знаю C++ и WinAPI. В детстве Pascal, Asm (PC/Zx), HTML, OS/2. В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re: Развитие программиста
От: bkat  
Дата: 27.09.04 14:49
Оценка: 9 (2) +5
Здравствуйте, Basil2, Вы писали:
B>О себе (для более точной наводки): 25 лет, окончил МАИ, компьютер с 13 лет , работаю программистом 4 года, сейчас "Руководитель группы" (но в группе лишь я да начальник отдела).

Выделяю основную проблему.
Похоже ты не работал в команде и все делал в одиночку.
Я прав? Если да, то попробуй сменить место работы и влиться в команду.

Вообще, работа программиста в одиночку убивает в программисте программиста
и не дает по-настоящему развиваться.
Re: Развитие программиста
От: LaptevVV Россия  
Дата: 27.09.04 14:58
Оценка:
Здравствуйте, Basil2, Вы писали:

B>- Без славы мне в Париже не житье,

B> Вся жизнь прошла, пора судьбой заняться!
B>- Так сколько же вам лет, дитя мое?
B>- Ах много, сударь, много... восемнадцать!
B>Дуэт де Тревиля и д'Артаньяна.
B>


B>А посему, у меня к вам три вопроса (наконец-то, да?):
B>1. Путь от программиста к "большому" программисту — каков он?
Вступить в РСДН!
B>2. Какие технологии, методологии, языки и средства имеет смысл изучить? А постоянно применять?
Из языков — все около С++, С# и Java. И пока в обозримом пространстве не видать, что вместо них будет.
B>3. Что почитать на эту тему?
А по дереву Ресурсы-книги здесь на РСДН — все читал?

B>О себе (для более точной наводки): 25 лет, окончил МАИ, компьютер с 13 лет , работаю программистом 4 года, сейчас "Руководитель группы" (но в группе лишь я да начальник отдела). Отлично знаю C++ и WinAPI.

Ну, отлично знает С++, пожалуй, только Страуструп. Члены комитета и около них — на 4, а все остальнвые — на троечку, не больше.
Вот тебе вопрос: для чего можно применить виртуальную базу в одиночном наследовании? Ы?
Еще вопрос: если в базовом классе определена чистая виртуальная функция, то будет ли базовый класс абстрактным? А наследник? наследник абстрактным? А если в в базовом классе деструктор чистый виртуальный?
B>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).
Нормально! (где-то мелькала цифра что Unix = 13000 строк кода на С + 2000 на ассемблере).
Но, сдается мне, что при рефакторинге можно уполовинить. Особенно с учетом паттернов а ля Александреску
Ы?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Развитие программиста
От: Dervish Россия http://www.dervish.ru
Дата: 27.09.04 15:05
Оценка: :))) :))) :))) :)))
Здравствуйте, LaptevVV, Вы писали:

LVV>Ну, отлично знает С++, пожалуй, только Страуструп. Члены комитета и около них — на 4, а все остальнвые — на троечку, не больше.


Валерий Викторович, значит ли это, что студенты не могут получить больше трёх баллов на экзамене?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: Развитие программиста
От: Diw_Diw  
Дата: 27.09.04 15:06
Оценка:
Здравствуйте, Basil2, Вы писали:

B>1. Путь от программиста к "большому" программисту — каков он?

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

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

Я считаю, что, если ты идешь путем микросовта, то надо идти рекомендуемым путем, а именно C#, .Net, MSF, MS SQL.
Можно начать со VS 2003, но уже сейчас лучше начать гонять VS 2005 betta Express, она беcплатно авляется на сайте Microsoft.

B>3. Что почитать на эту тему? (URL/Книги. Я не думаю, что есть хорошие курсы для продвинутых программистов, но все же...)

URL:
http://www.microsoft.com/rus/msdn/msf/default.mspx
http://msdn.microsoft.com/developercenters/
http://www.microsoft.com/resources/practices/guides.mspx
http://msdn.microsoft.com/architecture/

Курсы:
http://www.specialist.ru/programs/course.asp?idc=435
http://www.specialist.ru/programs/course.asp?idc=373
http://www.specialist.ru/programs/course.asp?idc=405

Книга:
Приемы объектно-ориентированного програмирования (патерны програмирования)

И что поискать:
Информацию по UML, патерны-програмирования, XP (экстримальное програмирование)
Re[3]: Развитие программиста
От: LaptevVV Россия  
Дата: 27.09.04 15:11
Оценка:
Здравствуйте, Dervish, Вы писали:

D>Здравствуйте, LaptevVV, Вы писали:


LVV>>Ну, отлично знает С++, пожалуй, только Страуструп. Члены комитета и около них — на 4, а все остальнвые — на троечку, не больше.


D>Валерий Викторович, значит ли это, что студенты не могут получить больше трёх баллов на экзамене?

Не, могут и больше, если отвечают на подобные приведенным вопросы (и при этом обращают внимание на слово "определена", а не объявлена чистая виртуальная функция).
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Развитие программиста
От: Dervish Россия http://www.dervish.ru
Дата: 27.09.04 15:23
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Всегда считал себя грамотным специалистом, программистом высокого уровня (очень помогало при неудачах, даже с девушками).




B>1. Путь от программиста к "большому" программисту — каков он?


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

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


Зависит от ответа на первый вопрос. И от области работы. Нет хороших и плохих языков. Есть задачи, для которых лучше годится тот или иной язык. Скажем, вы же не будете на .NET делать скринсейвер?

B>О себе (для более точной наводки): ... окончил МАИ ...




B>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).


Всё относительно. Более корректный вопрос: "много это или мало для вас нынешнего". Думаю, что если гордитесь, значит имеете на это право.

Когда-то я думал, что 1,000 строк (правда на ассемблере), это предел того, что я смогу удержать в голове, над чем смогу работать нормально, не путаясь. Сейчас в проекте немного более 60,000 строк (на С++) и ничего, справляюсь.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[2]: Развитие программиста
От: jazzer Россия Skype: enerjazzer
Дата: 27.09.04 15:51
Оценка:
Здравствуйте, bkat, Вы писали:

B>Здравствуйте, Basil2, Вы писали:

B>>О себе (для более точной наводки): 25 лет, окончил МАИ, компьютер с 13 лет , работаю программистом 4 года, сейчас "Руководитель группы" (но в группе лишь я да начальник отдела).

B>Выделяю основную проблему.

B>Похоже ты не работал в команде и все делал в одиночку.
B>Я прав? Если да, то попробуй сменить место работы и влиться в команду.

хороший совет

B>Вообще, работа программиста в одиночку убивает в программисте программиста

B>и не дает по-настоящему развиваться.

очень зависит от проекта.
очень часто проект не дает развиваться вообще.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Развитие программиста
От: orangy Россия
Дата: 27.09.04 16:13
Оценка: 1 (1) +2
Здравствуйте, Basil2, Вы писали:

B>1. Путь от программиста к "большому" программисту — каков он?

Тернист и труден

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

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

Все заданые тобой вопросы, на мой взгляд, проистекают из одной проблемы — у тебя нет поставленной цели. Как только ты выберешь очередную точку своего профессионального маршрута, ты сразу поймешь, что надо изучить, что надо подтянуть, что почитать, а где поэкспериментировать. Вот ты говоришь, руководить людьми. Фактически, ты хочешь быть техническим директором компании. Решать вопросы о технологиях, применяемых при разработке, внедрении и эксплуатации ПО, решать нетривиальные задачи, координировать разработку ПО и глубокомысленно грызть карандашик, эпизодически выдавая гениальные идеи, которые приносят компании (и тебе) кучу денег. Если это так, тогда смотришь требования к тех.директору, сравниваешь со своими знаниями и вперед — грызть гранит.

B>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).

Действительно, это совсем немного. Для одного человека нормально, если конечно не больше года писалось. С другой стороны, есть алгоритмы в 50 строчек, на которые лучшие умы потратили годы жизни Так что не в строчках счастье.
... << RSDN@Home 1.1.4 beta 2 >>
"Develop with pleasure!"
Re: Развитие программиста
От: Lloyd Россия  
Дата: 27.09.04 19:28
Оценка: +2 :)
Здравствуйте, Basil2, Вы писали:

B>1. Путь от программиста к "большому" программисту — каков он?


Пей побольше пива с шоколадом — и станешь "большим" программистом.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[2]: Развитие программиста
От: Lloyd Россия  
Дата: 27.09.04 19:28
Оценка: :)
Здравствуйте, Dervish, Вы писали:

D>Зависит от ответа на первый вопрос. И от области работы. Нет хороших и плохих языков. Есть задачи, для которых лучше годится тот или иной язык. Скажем, вы же не будете на .NET делать скринсейвер?


Вроде как в C# Express видел тип проекта скринсейвер.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: Развитие программиста
От: Nuald Россия http://nuald.blogspot.com
Дата: 28.09.04 01:13
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Но программировать мне и нравиться, и получается! И для себя я выбрал вариант "Генерального конструктора" (не знаю, как это будет в программном проекте — наверное, ведущий программист, но им я уже был).


Обычно так называют Project Manager-ов (руководителей проекта). Архитектор — это немного не то — в его обязанности не входит руководить. Генеральный конструктор — это вообще не из той оперы

B>1. Путь от программиста к "большому" программисту — каков он?


Никакой — обычно это просто решение начальства

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


ООП, паттерны проектирования, однако стоит иметь хотя бы базовые знания об альтернативных технологиях типа функционального программирования.
Языки — хотя бы иметь небольшое представление о том, что постоянно мелькает в форумах (java, c#, vb, perl, python, php etc), и досконально знать то, что постоянно используется (если скажем взять C++, то надо иметь хорошее представление об STL, и изучать новые тенденции, используя boost).

B>3. Что почитать на эту тему? (URL/Книги. Я не думаю, что есть хорошие курсы для продвинутых программистов, но все же...)


Одназначно стоит прочитать Александреску и Фаулера.
Re[2]: Развитие программиста
От: dmz Россия  
Дата: 28.09.04 06:20
Оценка:
B>>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).
Средне.
Где то же была классификация проектов, вроде
там большие начинались от 100 000 строк (или это были средние?)

LVV>Нормально! (где-то мелькала цифра что Unix = 13000 строк кода на С + 2000 на ассемблере).

Чего там мелькать?
cd /usr/src/linux && find . -name '*.[hc]' | xargs wc -l
16097 total


Несколько больше. Хотя конечно, это с одной стороны не юникс, с другой
стороны если рассматривать только ядро...
Re: Развитие программиста
От: dmz Россия  
Дата: 28.09.04 06:44
Оценка:
B>Всегда считал себя грамотным специалистом, программистом высокого уровня (очень помогало при неудачах, даже с девушками). Успел написать коммуникационную систему Клиент/Сервер (сейчас 100,000 транзакций ежедневно, и без права на ошибку: потеряешь транзакцию, и звонят разъяренные пользователи; удвоишь ее — прибегают возмущенные бухгалтеры; а повиснешь и не будешь нечего передавать — встает на уши высшее начальство, у которого стоят программы по подсчету оборота за день и не дай Бог, если он ниже вчерашнего).

Если в 'дне' восемь часов, то это
100000 / (3600 * 8) = ~3 транзакции в секунду

Если в дне двадцать четыре часа, то это
приблизительно одна транзакция в секунду.

То есть большую часть времени система
простаивает. Думаю при таких нагрузках
любая приличная СУБД вытянет без того,
что бы терять или "удваивать" транзакции
(что бы под последним не понималось).

У нас неприличная держит 13 транзакций в секунду.
(Может и больше в зависимости от железа и инсталяции).

B>1. Путь от программиста к "большому" программисту — каков он?

Главное — не расслабляться.

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

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

B>3. Что почитать на эту тему?

Книги. Тугугл.

B>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).

Если перевести в более понятные единицы, считая, что код на си и считая среднюю длинну строки 30 байт,
то это около 450 килобайт. Это нормально. Но гордиться надо не объемом кода.
Re[2]: Развитие программиста
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 28.09.04 07:21
Оценка:
Здравствуйте, dmz, Вы писали:

B>>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).

dmz>Если перевести в более понятные единицы, считая, что код на си и считая среднюю длинну строки 30 байт,
dmz>то это около 450 килобайт. Это нормально. Но гордиться надо не объемом кода.

Никогда не понимал этого мерила — число написанных строчек кода... Но самое главное как их считать ?!! Если использовать вашу методу, то получается, что в предыдущем проекте мы на троих сообразили 132881 строчку кода за 7 месяцев работы... Но сюда входят и h-файлы, и моки, и юнит-тесты, и само-генерённые файлы... То есть нужна какая-та методика, позволяющая выкидывать весь этот "мусор". А вот теперь представьте, как будет выглядеть человек, который сосчитает все свои полезные отлаженные строчки кода во всех своих проектах скажем за 5 лет рботы !!! Я думаю без жалости на него смотреть будет нельзя. Так что я думаю — фигня всё это, потому как недаром Александреску говорил, что из всех написанных тобой строчек кода лучшими могут оказаться всего лишь 4 штуки, но именно ими ты и будешь гордиться!
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[3]: Развитие программиста
От: bkat  
Дата: 28.09.04 07:33
Оценка:
Здравствуйте, Mr. None, Вы писали:

MN>Здравствуйте, dmz, Вы писали:


B>>>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).

dmz>>Если перевести в более понятные единицы, считая, что код на си и считая среднюю длинну строки 30 байт,
dmz>>то это около 450 килобайт. Это нормально. Но гордиться надо не объемом кода.

MN>Никогда не понимал этого мерила — число написанных строчек кода... Но самое главное как их считать ?!! Если использовать вашу методу, то получается, что в предыдущем проекте мы на троих сообразили 132881 строчку кода за 7 месяцев работы... Но сюда входят и h-файлы, и моки, и юнит-тесты, и само-генерённые файлы... То есть нужна какая-та методика, позволяющая выкидывать весь этот "мусор". А вот теперь представьте, как будет выглядеть человек, который сосчитает все свои полезные отлаженные строчки кода во всех своих проектах скажем за 5 лет рботы !!! Я думаю без жалости на него смотреть будет нельзя. Так что я думаю — фигня всё это, потому как недаром Александреску говорил, что из всех написанных тобой строчек кода лучшими могут оказаться всего лишь 4 штуки, но именно ими ты и будешь гордиться!


На самом деле LOC — это одна из стандартных метрик.
Есть методика, как их считать. Есть доступные тулзы, которые меряют код в строках.
Эта методика учитывает и новый код и изменный код.
Так что если придерживаться этой методики, то LOC'и в Африке
и в России будут одинаковы и их можно будет сравнивать.

Теперь, зачем это надо?
Нигде (ну только может в самых запущенных случаях) эту метрику не применяют для
для оценки "крутости" программиста.
Она нужна для планирования и оценки состояния на проекте.
Скажем тот же COCOMO (модель оценки трудозатрат на проекте)
пользуется оценкой именно в строках кода.
Затем в строках же кода можно оценивать и то, насколько близко проект к завершению.
Но LOC'и конечно не могут быть единственной метрикой для оценки проекта.
Это только одна из многих метрик, которые в совокупности как раз могут
дать общую картину...
Re[2]: Развитие программиста
От: Lorenzo_LAMAS  
Дата: 28.09.04 07:56
Оценка:
LVV>Ну, отлично знает С++, пожалуй, только Страуструп. Члены комитета и около них — на 4, а все остальнвые — на троечку, не больше.

Я полагаю, что С++ отлино знают еще тысячи программистов, при этом не все из них разработчики компиляторов.
Of course, the code must be complete enough to compile and link.
Re[2]: Развитие программиста
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 28.09.04 08:03
Оценка:
Здравствуйте, bkat, Вы писали:

B>Вообще, работа программиста в одиночку убивает в программисте программиста

B>и не дает по-настоящему развиваться.

Спорное утверждение... Развиваться можно и в одиночку. Лично меня все время тянет выйти из команды и начать работать в одиночку. Из-за самосовершенствования. Существуют много проектов, которые бы ты хотел реализовать. Существует много вещей, который бы ты хотел попробовать. Я даже план себе набросал, но нет времени из-за каждодневной рутины.
Re[2]: Развитие программиста
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 28.09.04 08:11
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Нормально! (где-то мелькала цифра что Unix = 13000 строк кода на С + 2000 на ассемблере).


Может Minix? Там тоже примерно такая цифра. Но это чисто ядро. Кроме того, по заверениям автров, Deep Junior это около 10 000 строчек С-кода.
Re[3]: Развитие программиста
От: bkat  
Дата: 28.09.04 08:25
Оценка: +1
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, bkat, Вы писали:


B>>Вообще, работа программиста в одиночку убивает в программисте программиста

B>>и не дает по-настоящему развиваться.

M>Спорное утверждение... Развиваться можно и в одиночку. Лично меня все время тянет выйти из команды и начать работать в одиночку. Из-за самосовершенствования. Существуют много проектов, которые бы ты хотел реализовать. Существует много вещей, который бы ты хотел попробовать. Я даже план себе набросал, но нет времени из-за каждодневной рутины.


Любое утверждение спорное. Даже это

Одиночка лишен критики и взгляда со стороны.
Это самая большая проблема. Одиночка пишет для себя и у него у самого
все все идеально и без огрехов. Очень уж тяжело себя критиковать.
Такая уж натура у человека.

Но конечно же человек физически может быть один, но быть частью
команды и работать удаленно. Важно, чтобы было полноценное общение с себе подобными
и критический взгляд со стороны.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.