- Без славы мне в Париже не житье,
Вся жизнь прошла, пора судьбой заняться!
— Так сколько же вам лет, дитя мое?
— Ах много, сударь, много... восемнадцать! Дуэт де Тревиля и д'Артаньяна.
Всегда считал себя грамотным специалистом, программистом высокого уровня (очень помогало при неудачах, даже с девушками). Успел написать коммуникационную систему Клиент/Сервер (сейчас 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 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Basil2, Вы писали: B>О себе (для более точной наводки): 25 лет, окончил МАИ, компьютер с 13 лет , работаю программистом 4 года, сейчас "Руководитель группы" (но в группе лишь я да начальник отдела).
Выделяю основную проблему.
Похоже ты не работал в команде и все делал в одиночку.
Я прав? Если да, то попробуй сменить место работы и влиться в команду.
Вообще, работа программиста в одиночку убивает в программисте программиста
и не дает по-настоящему развиваться.
Здравствуйте, 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 на ассемблере).
Но, сдается мне, что при рефакторинге можно уполовинить. Особенно с учетом паттернов а ля Александреску
Ы?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну, отлично знает С++, пожалуй, только Страуструп. Члены комитета и около них — на 4, а все остальнвые — на троечку, не больше.
Валерий Викторович, значит ли это, что студенты не могут получить больше трёх баллов на экзамене?
Здравствуйте, 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/
Здравствуйте, Dervish, Вы писали:
D>Здравствуйте, LaptevVV, Вы писали:
LVV>>Ну, отлично знает С++, пожалуй, только Страуструп. Члены комитета и около них — на 4, а все остальнвые — на троечку, не больше.
D>Валерий Викторович, значит ли это, что студенты не могут получить больше трёх баллов на экзамене?
Не, могут и больше, если отвечают на подобные приведенным вопросы (и при этом обращают внимание на слово "определена", а не объявлена чистая виртуальная функция).
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Basil2, Вы писали:
B>Всегда считал себя грамотным специалистом, программистом высокого уровня (очень помогало при неудачах, даже с девушками).
B>1. Путь от программиста к "большому" программисту — каков он?
А что такое "большой программист"? Разные люди могут по-разному могут понимать этот термин, соответственно и ответы будут разными. Кстати, мне кажется, что если вы сами для себя ответите на этот вопрос, если дадите определение "большого программиста" в вашем понимании, то это будет почти ответ на вопрос "каков путь".
B>2. Какие технологии, методологии, языки и средства имеет смысл изучить? А постоянно применять?
Зависит от ответа на первый вопрос. И от области работы. Нет хороших и плохих языков. Есть задачи, для которых лучше годится тот или иной язык. Скажем, вы же не будете на .NET делать скринсейвер?
B>О себе (для более точной наводки): ... окончил МАИ ...
B>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).
Всё относительно. Более корректный вопрос: "много это или мало для вас нынешнего". Думаю, что если гордитесь, значит имеете на это право.
Когда-то я думал, что 1,000 строк (правда на ассемблере), это предел того, что я смогу удержать в голове, над чем смогу работать нормально, не путаясь. Сейчас в проекте немного более 60,000 строк (на С++) и ничего, справляюсь.
Здравствуйте, bkat, Вы писали:
B>Здравствуйте, Basil2, Вы писали: B>>О себе (для более точной наводки): 25 лет, окончил МАИ, компьютер с 13 лет , работаю программистом 4 года, сейчас "Руководитель группы" (но в группе лишь я да начальник отдела).
B>Выделяю основную проблему. B>Похоже ты не работал в команде и все делал в одиночку. B>Я прав? Если да, то попробуй сменить место работы и влиться в команду.
хороший совет
B>Вообще, работа программиста в одиночку убивает в программисте программиста B>и не дает по-настоящему развиваться.
очень зависит от проекта.
очень часто проект не дает развиваться вообще.
Здравствуйте, Basil2, Вы писали:
B>1. Путь от программиста к "большому" программисту — каков он?
Тернист и труден
B>2. Какие технологии, методологии, языки и средства имеет смысл изучить? А постоянно применять?
Главная технология, которую надо постоянно применять — это собственный мозг. Остальное — вопросы опыта и поставленной задачи.
Все заданые тобой вопросы, на мой взгляд, проистекают из одной проблемы — у тебя нет поставленной цели. Как только ты выберешь очередную точку своего профессионального маршрута, ты сразу поймешь, что надо изучить, что надо подтянуть, что почитать, а где поэкспериментировать. Вот ты говоришь, руководить людьми. Фактически, ты хочешь быть техническим директором компании. Решать вопросы о технологиях, применяемых при разработке, внедрении и эксплуатации ПО, решать нетривиальные задачи, координировать разработку ПО и глубокомысленно грызть карандашик, эпизодически выдавая гениальные идеи, которые приносят компании (и тебе) кучу денег. Если это так, тогда смотришь требования к тех.директору, сравниваешь со своими знаниями и вперед — грызть гранит.
B>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).
Действительно, это совсем немного. Для одного человека нормально, если конечно не больше года писалось. С другой стороны, есть алгоритмы в 50 строчек, на которые лучшие умы потратили годы жизни Так что не в строчках счастье.
Здравствуйте, Dervish, Вы писали:
D>Зависит от ответа на первый вопрос. И от области работы. Нет хороших и плохих языков. Есть задачи, для которых лучше годится тот или иной язык. Скажем, вы же не будете на .NET делать скринсейвер?
Вроде как в C# Express видел тип проекта скринсейвер.
Здравствуйте, Basil2, Вы писали:
B>Но программировать мне и нравиться, и получается! И для себя я выбрал вариант "Генерального конструктора" (не знаю, как это будет в программном проекте — наверное, ведущий программист, но им я уже был).
Обычно так называют Project Manager-ов (руководителей проекта). Архитектор — это немного не то — в его обязанности не входит руководить. Генеральный конструктор — это вообще не из той оперы
B>1. Путь от программиста к "большому" программисту — каков он?
Никакой — обычно это просто решение начальства
B>2. Какие технологии, методологии, языки и средства имеет смысл изучить? А постоянно применять?
ООП, паттерны проектирования, однако стоит иметь хотя бы базовые знания об альтернативных технологиях типа функционального программирования.
Языки — хотя бы иметь небольшое представление о том, что постоянно мелькает в форумах (java, c#, vb, perl, python, php etc), и досконально знать то, что постоянно используется (если скажем взять C++, то надо иметь хорошее представление об STL, и изучать новые тенденции, используя boost).
B>3. Что почитать на эту тему? (URL/Книги. Я не думаю, что есть хорошие курсы для продвинутых программистов, но все же...)
Одназначно стоит прочитать Александреску и Фаулера.
B>>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).
Средне.
Где то же была классификация проектов, вроде
там большие начинались от 100 000 строк (или это были средние?)
LVV>Нормально! (где-то мелькала цифра что Unix = 13000 строк кода на С + 2000 на ассемблере).
Чего там мелькать?
cd /usr/src/linux && find . -name '*.[hc]' | xargs wc -l
16097 total
Несколько больше. Хотя конечно, это с одной стороны не юникс, с другой
стороны если рассматривать только ядро...
B>Всегда считал себя грамотным специалистом, программистом высокого уровня (очень помогало при неудачах, даже с девушками). Успел написать коммуникационную систему Клиент/Сервер (сейчас 100,000 транзакций ежедневно, и без права на ошибку: потеряешь транзакцию, и звонят разъяренные пользователи; удвоишь ее — прибегают возмущенные бухгалтеры; а повиснешь и не будешь нечего передавать — встает на уши высшее начальство, у которого стоят программы по подсчету оборота за день и не дай Бог, если он ниже вчерашнего).
Если в 'дне' восемь часов, то это
100000 / (3600 * 8) = ~3 транзакции в секунду
Если в дне двадцать четыре часа, то это
приблизительно одна транзакция в секунду.
То есть большую часть времени система
простаивает. Думаю при таких нагрузках
любая приличная СУБД вытянет без того,
что бы терять или "удваивать" транзакции
(что бы под последним не понималось).
У нас неприличная держит 13 транзакций в секунду.
(Может и больше в зависимости от железа и инсталяции).
B>1. Путь от программиста к "большому" программисту — каков он?
Главное — не расслабляться.
B>2. Какие технологии, методологии, языки и средства имеет смысл изучить? А постоянно применять?
Думаю на этот вопрос можешь ответить только сам. Общий ответ — любые, которые кажутся
уместными в конкретном проекте. Если подходить с точки зрения прагматизма, а не религии.
B>3. Что почитать на эту тему?
Книги. Тугугл.
B>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?).
Если перевести в более понятные единицы, считая, что код на си и считая среднюю длинну строки 30 байт,
то это около 450 килобайт. Это нормально. Но гордиться надо не объемом кода.
Здравствуйте, dmz, Вы писали:
B>>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?). dmz>Если перевести в более понятные единицы, считая, что код на си и считая среднюю длинну строки 30 байт, dmz>то это около 450 килобайт. Это нормально. Но гордиться надо не объемом кода.
Никогда не понимал этого мерила — число написанных строчек кода... Но самое главное как их считать ?!! Если использовать вашу методу, то получается, что в предыдущем проекте мы на троих сообразили 132881 строчку кода за 7 месяцев работы... Но сюда входят и h-файлы, и моки, и юнит-тесты, и само-генерённые файлы... То есть нужна какая-та методика, позволяющая выкидывать весь этот "мусор". А вот теперь представьте, как будет выглядеть человек, который сосчитает все свои полезные отлаженные строчки кода во всех своих проектах скажем за 5 лет рботы !!! Я думаю без жалости на него смотреть будет нельзя. Так что я думаю — фигня всё это, потому как недаром Александреску говорил, что из всех написанных тобой строчек кода лучшими могут оказаться всего лишь 4 штуки, но именно ими ты и будешь гордиться!
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Здравствуйте, Mr. None, Вы писали:
MN>Здравствуйте, dmz, Вы писали:
B>>>В основном проекте сейчас 17 тыс. строк, из них 16 мои (это, кстати, много или мало? а то я типа горжусь, а вдруг это совсем немного?). dmz>>Если перевести в более понятные единицы, считая, что код на си и считая среднюю длинну строки 30 байт, dmz>>то это около 450 килобайт. Это нормально. Но гордиться надо не объемом кода.
MN>Никогда не понимал этого мерила — число написанных строчек кода... Но самое главное как их считать ?!! Если использовать вашу методу, то получается, что в предыдущем проекте мы на троих сообразили 132881 строчку кода за 7 месяцев работы... Но сюда входят и h-файлы, и моки, и юнит-тесты, и само-генерённые файлы... То есть нужна какая-та методика, позволяющая выкидывать весь этот "мусор". А вот теперь представьте, как будет выглядеть человек, который сосчитает все свои полезные отлаженные строчки кода во всех своих проектах скажем за 5 лет рботы !!! Я думаю без жалости на него смотреть будет нельзя. Так что я думаю — фигня всё это, потому как недаром Александреску говорил, что из всех написанных тобой строчек кода лучшими могут оказаться всего лишь 4 штуки, но именно ими ты и будешь гордиться!
На самом деле LOC — это одна из стандартных метрик.
Есть методика, как их считать. Есть доступные тулзы, которые меряют код в строках.
Эта методика учитывает и новый код и изменный код.
Так что если придерживаться этой методики, то LOC'и в Африке
и в России будут одинаковы и их можно будет сравнивать.
Теперь, зачем это надо?
Нигде (ну только может в самых запущенных случаях) эту метрику не применяют для
для оценки "крутости" программиста.
Она нужна для планирования и оценки состояния на проекте.
Скажем тот же COCOMO (модель оценки трудозатрат на проекте)
пользуется оценкой именно в строках кода.
Затем в строках же кода можно оценивать и то, насколько близко проект к завершению.
Но LOC'и конечно не могут быть единственной метрикой для оценки проекта.
Это только одна из многих метрик, которые в совокупности как раз могут
дать общую картину...
Здравствуйте, bkat, Вы писали:
B>Вообще, работа программиста в одиночку убивает в программисте программиста B>и не дает по-настоящему развиваться.
Спорное утверждение... Развиваться можно и в одиночку. Лично меня все время тянет выйти из команды и начать работать в одиночку. Из-за самосовершенствования. Существуют много проектов, которые бы ты хотел реализовать. Существует много вещей, который бы ты хотел попробовать. Я даже план себе набросал, но нет времени из-за каждодневной рутины.
Здравствуйте, Mystic, Вы писали:
M>Здравствуйте, bkat, Вы писали:
B>>Вообще, работа программиста в одиночку убивает в программисте программиста B>>и не дает по-настоящему развиваться.
M>Спорное утверждение... Развиваться можно и в одиночку. Лично меня все время тянет выйти из команды и начать работать в одиночку. Из-за самосовершенствования. Существуют много проектов, которые бы ты хотел реализовать. Существует много вещей, который бы ты хотел попробовать. Я даже план себе набросал, но нет времени из-за каждодневной рутины.
Любое утверждение спорное. Даже это
Одиночка лишен критики и взгляда со стороны.
Это самая большая проблема. Одиночка пишет для себя и у него у самого
все все идеально и без огрехов. Очень уж тяжело себя критиковать.
Такая уж натура у человека.
Но конечно же человек физически может быть один, но быть частью
команды и работать удаленно. Важно, чтобы было полноценное общение с себе подобными
и критический взгляд со стороны.