Compartilhar via


Как стать хорошим программистом? (часть 2 из 3)

??, ??? ?... ?????????. ? ???? ???-???? ????????? ???, ??? ?? – ?? ???????????, ? ?????? ?? ?????. ? ???? ?? ???????? ???????????, ?????? ?????????? ???????? ??????? ?????? ?? ????? ??????.

??-??, ??? ??????, ? ????????????? ?????...

??? ??????, ??????????, ?? ??? ?????????????? ??????? ?????????? ? ???????? ????????????. ?? ?? ?????? ????????? ???-?? ???????, ?? ??? ? ???????? ??? ???????, ?????????, ??? ??? ??? ????????????? ?????, ? ????? ?????? ???????. ??????? ??????????? ?????? ?????? ?????? ??????-?????? ????? PM'? (?????????, ?????????, ????????, ??? ??? ??? ????????? ???, ??? ???? ??????). ? ????? ?? ??????, ??? ??? ??? ??? ??? ??????? ?????, ???? ? ?????? ????. ?????? ????????. ?? ???? ?? ?????? ???????? ??? ?? ?? ??????? ? ?????. ? ??? ????????, ??? ??? ??? ????? ?????? ??, ??? ????? ????????????. ??? ???????, ? ??? ?????, ??? ?????????? ? ???????? ??????. ?? ????, ????? ??????????? ?? ????????, ??? ????. ?????????? ??????? ?????.

? ?????, ??? ??????? ????? ??????? ???????????. ??? ?? ??????? ??????????, ??? ?????? ??? ??? ???????. ?? ??? ???????? ????????? ???????? ????? ? ???????, ??? ? «??????? ? ????? ??????????», ? ????? ?????? ? ??, ??? ???? ???????? -  ??? ?????? ??????. ??? ?? ?? ?? ???????????, ?? ?? ????? ?? ??????? ???????, ? ???? – ???????. ? ??????? ??????????? ?????, ??? ????? ?? ????? ?? ??? ????????, ????????? ???????? ??? ???? ?????? – ????? ????? ?? ??? ??????, ??? ?????. ? ???? ? ???????????, ??? ???????? ??? ? ??? ?????? ??????, ?????????? ???? ?? ??????????? (????????? ??????? ?????????????? ????? ?????), ?? ?? ????? ????????? ???????????? ???????? ????? ??????????? ???????? – ???? ?? PM, ????????, ??? ???, «???????» – ??? ?? ????? ?????????? ????????????????????? ?? ???????????? ??????? ? ???? ???????.

??? ???????? ??? ?? ??????? ????????????? ???????????????? ????? ??? ????????? ????????????, ??????????? «??? ????? ???????» . ??-??, ?? ??? ??????????? ??? ?????. ???????????, ?????. ???, ?? ????? ? ?????? ??????, ??? ???????????????? ??? ? ?????? ?????. ?????, ? ??? ??????, ??? ?????? ????? ?? ??????. ??, ??????. ?? ? ????? ???????????? ?????? ????? ? ?? ?????. ??? ?????? ?? ???? – ? ??????, ??? ????? ??????. ? ??????, ????? ?? ???? ? ?????????????...

?????, ? ?????? ????? ???? ??????? ?? ????? ???? ?????????????, ?? ??? ??? ????? ?? ??????, ??? – ????? ????????, ??????? ????? ?????? ?? ??? ??? ????, ? ??? ?? ????. ??????, ??? ??????????? ??????? ????? «??????????? – ??? ?? ?????????, ??? ???????»? ?????????? ?????? ???????? ?????????? ?????: «? ???? ???? ??????? ????? ????? ??? «????? ????????????? ?????? – ?? ???? ????????!»» ??? ???, ????? ????????????? ?????! ?????????? ??????????, ????? ??? ? ???????????? ??????, ????????? ????????? ??????? ?? ??????, ?????? ????????, ?? ???? ???????????????? – ??? ?? ??????????, ??? ??????????????????. ??, ??? ?????? ????????? ???????, ??????????? ??????????? ?????? ?????????. ??????? ??????? ? ???, ??? ????????? ??????? ????????? «???????????» ????? ??????? ????????, ??? ?????? ????????? ? ?????? ???????? ??????? ??? ?????? ? ?????? ?????? ????? ? ????????? ??????????? ???????????, ??????????? ??? ? ???? ????????? ?????, ??????????????? ?????? ???????? ?????????, ????? ? ?????????????? ?????????? ? ?????????? ????????, ??????? ????? ???????? ? ????? ????????????? ?????????? ??????????... ?????? ??????????? ?? ?????????, ? ?????? ?????, ??? ?? ???? ??????? ?? ?????? ?? ????????. ? ???????? ???????? ????????????? ????? ???? ?????? ????? ???? 3-4 ????? ?????, ?????????? ?????? (???? ??? ??????, ???? ??? Windows Server, ???? ??? XP, ???? ???, ? ???? Xbox ? ?????? ??? ????????????? – ??, ??, ??????? Xbox – ??? ??? ???????????? ??????? ??????). ????? ??????????? ???????????????? ????????????? ?????? ????????? ?????? ???????? ??? ????????, ?????, ? ???? ????? ? ????? ?????? ????????. ???? ???????????. ? ?????, ????? ?? ? ?????.

??????????, ???????? ? ?????????? – ??? ?????? ??? ??????? ??????? ??????? ???????? ????????????, ??????? ? ??????? fidelity to reality – ???????? ??????????. ?? «??????», ?? «??????», ? ?????? «??????????». ?? ????, ??? ???????? ?? ????????????? ???????, ? ???? «??? ?? ????? ????». ? ????? ??, ??? ?? ??????????????? ????, ??? ???????? ????????. ?? ??????????, ??????????????????, ?? ??? ?? ????? ???????? ????????, ??????? ????? ????? ? ?? ???? ????????? ???????? ????? ????????????. ?? ???? ???????? ????? ?????. ? ??? ????? ??????. ???????? ?????. ??? ???????????? ???? ????????? ? ??????????? ????? ???????????????? ?????? ?????????? ????? (? ????? ???????????? ????????? ????? ???????????? ??????????) – ??? ?????????? ?????????? ??? ??? ???? ?????????????? ?????????, ??????? ???? ?????????????????. ?? ?????????? ?? ????? ????????? ??, ?????? ?????, ???????? ??? ????????????????, ????????? ???????????????? ???????????? ????????? ????? ???????????????? ??????????? – ??? ??? ???????? ?????????? ??? ??????? ????? ???????????? ???????? ?? ?????? ??? General Motors. ?????????? ?????????? ? ?????????? ?????? ???????????. ? ?????, ? ?????????????? (? ?????? ????? ? ????), ???? ?? ?? ??????????? ? ??? ??? ???????????????? ?????????? (?????? ??????, ?????? ???????? ????? ? ????????????? ?? ???? ??????? ??????), ? ??? ??????????? («??? ??? ?? ????? ?????») – ??? ??? ??????????? ??????? ?? StarWars, StarTrek ??? ??? Babylon 5.

????????? ? ?????? ??????: ??, ?????? ????, ????????????. ?? ???????? ???? ? ???????????? ???????, ? ? ??? ? ????????? ???????? ?????????. ???, ????? ??-????????, ????? ???, ????? ???, ????? ???... ?? ? ???-?? ? ????, ??? ??????????? – ??? ? ?????? ??????? ???????? ???????, ???? ??????, ?? ????????? ???????. ?, ???????, ?????? ? ??????? ????????????. ???????? ???????? ??? ??? ?? ?????. ?????? ???????? ???? C# ? .Net ??? ??? Visual Basic – ? ??????. ?? ?????? ?????????? ???????????? ?? ?? ????????, ?? ????? ???? ?????. ? ?????, ??????? ???????. ???? ?? ???-???-???, ? ?????, ? ???????????! ? ?????, ???? ??? ??, ??? ??? ????? – ??????, ? ?????????? ???? ???? ?? ? ????. ? ???? ???????? ? ?????????? ????????????.

??????, ????????? ????? ??????????? ??????? ??????? ?????? ?? ??????? ?????, ?? ???? ? ???, ??? ?? ??? ? ?? ????????? ??? ?????? ??????????????. ???-???, ??????? ??????????????? ??????. ????????? ?????????? ???? ????? ?? ???? ???? ??? ???????????????? ?????????? ??? ??? ????????. Fidelity to reality ?? ????????????? ??????????? ????????????? ??? ????????????, ??? – ????????? ?????? ??????? ? ??????????? ? ???? ????????????. ? ???????? ????? ???? ????? ?????? ??????? ??????????, ? ?????? ??? ??? ?????????????? ???????????????? ?????????. ? ???????????????? ?????? ???, ????? ?? ???????? ??????????, ?? ??? ?? ????????? ?????? ?? ?????. ? ??????? ???????. ????????? ????? ?? ???????. ????????? ????? ? ??????????????, ?? ?????? ????? ??, ??? ?? ???????, ???? ???? ???? ??????? ????? ? ??????? ?? ?????? ???? ??? ????????. ? ??? ?????????? ??? ??? ? ????, ?? ?????? ? ?????, ?? ???? ? ???. ? ?? ?????????? ? ?????, ??? ???? ???? ? ??, ??? ?? ???????? ??? ????????? ?? ????? ???????? ????????, ? ?????? ??? ??? ???????? ??? ?? ? ?????????????. ?? ??????? ???? ???? ?? ?? ?????????? ?????? ?????? ????? ?????? ????. ? ???? ????????? ? ???????? ????????????? ??????? ????? ? ????? ??????????.

? ?????, ??? ???? ????? ????????????? ??????????? ? ????????????, ??? ??????? ????, ??? ?????? ????????? ????? ???? ?? ???? ???. ??? ???????? ??????, ??? ??? ?? ???? ? ???-?? ??????, ? ??? ?? ?? ??? ????????, ? ??????????? ?????????? ??????????? ? ?? ??????? ? ???????? ?? ????? ??????. ??????, ??????? ? ???????? ????????? ????? ???????? ? ?????????, ??? ???-?? ?????? ????? ?? ???? ?? ?????. ? ????? ??? ???????? ???? ?? ?????????, ? ???? ??????? ????????, ????????? ???? ???????? ??? ??? ????????. ????, ??? ?????????, ?? ????? ?????? ????? ? ????? ?????????? ???????. ???? ?????? ???????? ??, ??? ?? ? ???????? ????????? ????? ????????????? ? ???????? ?????????????, ?? ??????? (????? ???????????? ?????????? ?? ??????? ???????????) ??? ??????? ? ?????? ???????????? ?? ????????????????. ? ??????, ??? ?? ?????? ???????, ? ?????? ???, ???????, ??? ????????????. ? ?????, ????????? «???????? ? ??????» ??????????? ????????? ????? ? ????? ?????????? ?????.

?????? ??????? ?????? ? ???, ??? ????? ?????????????. ?? ??? ????????, ??? ??????? – ????? ? ?????? ?????????? (? ????? ? ?????? ????) ???????????????, ? ?? ????????? ??? ?? ??? ??????? ???????????? ????? ?????????????? ? ??????? ???????? ?? ?????? ???. ? ??? ??? ?????????? ??????????????? ?????????? ?????, ????? ??? ?????????. ? ????? ???????. ??? ????? ????? ???????? ?? ???????????????? ????????????.

????????? ?????????? ???????????????? ? ??????. ? ??????, ? ???? ???? ???????? ???? ??????. ?? ??????? ???? ?? ?????? ??????. ? ?????, ??????? ??????? «???????» ??????-?? ??????????????? ??????????????. ??? ????????. ????? – ??? ??? ??? ?????????? ???????????. ?????? ???? ??????? ????????????. ????????? ? ?????? ? ????????? ? ???????? ?????? ??????? ??? ??? ? ???, ??? ?? ???????????? ??? ?? ???????, ????? ???????? ?????????? ?????? ????????????, ? ??????????????? ???????, ????????? ??? ?? ????? ???????? ????? ????????????, ??? ? ????????????? ??? ?????? ?????? ?? ???????????? ????????. ? ??????????? ? ????? ???? ????? ?????????. ??? ??? ????? ????????? dial-up'?? ???????? ?????????, ? ?????????? ???-???? ????????? ?? DSL, ? ?? ? T1, ???? ??? ???????. ??????, ???????? ??? ?? ???????????????? ? ????? ? ?????????? ?? ????????. ? ?????, ???? ?? ???? ?????...

????? ???????????????? ???????? ???, ????? ?????, ????, ?? ??????? ????? ?????? ???????? ??? ? ??????? ?????. ??? ??????????? ???? ?????, ? ????? ??????? ?????? ? ? ????????? ?????????????? ? ??????? ? ???????? ?????. ???????????? ? ???? ? ??????: «???? ???, ???? ???, ????? ??????-?????? ?????? ? ????? ? ??????? ??????? ? ??? ?????? ????????» ???, ????????? ??????, ??????????? ????????: «??-?-?...» ????? ??????? ?????? ??? ? ???????????? ? ??????????????? ????????????: «???? ???, ???? ???, ????? ??????-?????? ?????? ? ????? ? ??????? ??????? ? ??? ????? ????????» ???, ????????? ??????, ????? ??????????? ????????: «??-?-?...» ??? ??????????? ????????? ???. ???????, ????? ??????????: «???, ???? ???, ? ??? ? ?? ????? ???????» ??? ????????? ??????, ????????, ? ????????: «?? ????????-???????? ?????? ? ????? ? ??????? ??????? ?? ????? ?????!»

??? ? ?????, ? ??????? ????? ??????? ? ?????, ???? ?? ??????.

??, ? ?????? ? ?????? ??????????? ??????? ? ??? ??????. ????? ????? ?????? ?????? ??????? ??????

? ???????!

????????????? ???? ????? ?????? ?? ?????: «???? ???! ? ??? ?????? PlayBull ? ??????? ?????-?????? ??????? ? ?????????? ?????. ????? ????? ? ??????? ???????????? ? ????? ???????????? ?? ????????????» ???????. ??????? ???????? ? ????????? (? ?????? ?????), ????????? (? ?????? ?????) ??? ? ??????????? (? ?????? ? ????????????????). ? ?????????? ?????? ???? ???? ???????????? ??????. ??, ???, ??????? ??????? ???????????, ?????? ???? ???? ????????... ???? ?? IT admin (??? ? ? ??? ? ????????????????, ???? ?? ?????????? ? ???? ??????????), ???????? ?????? ??? ?? ?????????, shell ??? ?????. ????? ????????? ?????????? ?? C# ??? C++, ??????? ???? ?????? ???????. ???????????? ? ?????-?????? ???????? ????????. ???????? ?????? ?????????? ??? ???????????? ????. ???????????, ??????????, ??????? ???? ????????. ???????? ?? ??????????????? ???????. ??????, ??? ?????????? ?????? ? ????, ???????????? ?????? ??????????? ?????????. ??, ? ??? ?????. ?? ???? ???? ???? ??????? ????? ??????????????? ????? ??? ???????????? ??? ?????. ?????? ?????????, ??? ??? ??????? ?????? ?????? ??????? ???? – ??? ?????? ?????? ?? ???. ?? ???? ???? ????? ????? ?? ???????.

??, ? ? ????? ? ?????, ??????? ??????? ???? ? ????? ????? ??????????????? ????????? ??? ????????? ????? ?????????? (?????? ?????), ?????????????? ????????? ? ???????????, ?????? ? ??????????? (????? ????? ??? ??? ????? ? ??? ??? ?????? ????????, ? ????? ???? ????????? ?????? ???????? ?????? ????? ?? ?????????? ????????), ?????? ? ???????? (??? ??? ?? ?????, ???? ???? ?????? ?????). ??????, ??????? ??????????? ? ??????? ??????????, ??????, ??? ??????????? ????????. ??? ?? ? ???? ????????? ??????. ?? ???? ??????? ??? ?? ???, ????? ????????? ???? ??? ? ??????? ???????????? (????? ???-???? ?????????????? ????????????????, ???????, ??? ?? ?????????, ??? ???????), ?? ?????? ??????? ??? ??????? ????, ? ?????????? ????? ?? ???? ???????????. ??? ????? ???? ??????? ? ???????????????? ?????? ??? ? ????? ???????? – ?????????? ????? ?? ???? ???????????. ??? ?????????, «??? ???? – ??? ?????, ??? ????? ??????? ???????.»

??, ? ??? ?????? ?? ?????, ???? ??????? ?????? ?? ???? ?????? ?? ????? ? ?????? ????????, ? ? ???????????? ?????????????? ?????? ?? ?????? ?????????. ? ?????, ? ??? ?????, ??? ???? ??????? – ???????????? ?????????? ??? ????????????? ? ?????, ??????? ??? ??????...

?????? ??????:

?????? ?????? (?? ?? ?????):

Comments

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    Кстати, нашел ссылку на упомянутую вами статью: http://www.williamspublishing.com/21-days.html Занятно, что первые два пункта рекомендаций почти дословно совпадают: "Заинтересуйтесь программированием и занимайтесь им ради развлечения. Старайтесь сделать эти занятия достаточно привлекательными для того, чтобы не хотелось их бросать в течение десяти лет. Общайтесь с другими программистами; читайте программы, написанные другими. Это гораздо важнее по сравнению с любой книгой или курсом обучения."

  • Anonymous
    January 01, 2003
    Пратт? Это тот, что "Наука программирования?" Интересно, надо будет проверить. Проверил на Амазоне - жуткие ревью. Надо будет заказать в баблиотеке MS и полистать самому :-) Programmer Stone... да, знаю, уже третий месяц собираюсь написать о нем. А за что извинения? А насчет "нейрохирургии" и мурзилок не понял, но насчет границ применимости, конечно, согласен. И книжки "ХХХ в 24 часа" и правда не лучшее чтиво, если речь о них шла. Жутко размыты - эти кирпичи просто прочитать требует больше времени, чем они рекламируют на обложке.

  • Anonymous
    January 01, 2003
    Стас, не переживайте. Комментарий я порезал, а насчет вольностей... вы очень молодой? Это обычно в молодости остро воспринимается, потом начинаешь понимать, что ничего такого в этом нет, чтобы переживать и возмущаться. lg: никогда не читал, обязательно взгляну, спасибо. Но вот - не помогает, раз спрашивают.

  • Anonymous
    January 01, 2003
    Книжку Пратта заказал - в библиотеке нашлось третье издание. Как полистаю, скажу что думаю. Насчет извинений вы не поняли. Мысль была, что не за что извиняться. Что можно писать насчет Programmer Stone? Смотря для кого. Для тех, кто не читали, наверное кое-что можно. Это и планирую. Насчет "мурзилок" понял, спасибо. Буду в курсе этого выражения.

  • Anonymous
    January 01, 2003
    Так не для программистов писано, а для тех, кто хочет им стать. Рад, что коллегам это очевидно, значит не наврал :-) Более по делу я уже давно написал, но видать нужно было что-то попроще, раз опять спрашивают.

  • Anonymous
    January 01, 2003
    Любимый анекдот Касперского: Летят Шерлок Холмс с доктором Ватсоном на воздушном шаре. Залетели в облака, ориентировку потеряли. Приземлились в неизвестной местности. Видят - мимо человек какой-то идет. Шерлок Холмс:

  • Сэр, не подскажите ли Вы нам, где мы находимся? Мужчина долго думал и ответил:
  • В корзине воздушного шара, сэр. Шерлок Холмс:
  • Видите, Ватсон, перед вами типичный пример программиста. Доктор Ватсон:
  • Почему Вы так решили, Холмс?
  • Ну, во-первых, он очень долго думал над простым вопросом, во-вторых, он ответил АБСОЛЮТНО правильно, в-третьих, нам от его ответа нет никакой пользы. (С)http://lenta.ru/conf/kaspersky/
  • Anonymous
    December 03, 2008
    Эта часть статьи получилась прямо как будто для детей. Неужели в сказанном есть что-то не очевидное?

  • Anonymous
    December 03, 2008
    В качестве введения еще хорош SICP - Structure & Interpretation of Computer programs (он есть на русском) и How to Design Programs (на английском, но в свободном доступе) - они не учат конкретным языкам, а показывают способы программирования.

  • Anonymous
    December 03, 2008
    Программист в стартапе и программист в большой компании - два разных программиста. В стартапе работают за идею, в большой компании - за зарплату и продвижение. Если это перепутать, то ничего хорошего не получится. По себе знаю. По поводу первого абзаца - ой, сомневаюсь я. Предполагается, что PM/архитект знает, что надо пользователю. За всю свою жизнь ни разу такого не видел. И пользователь чаще всего не знает, что ему надо. А если программист вдруг догадается и поймёт, то у него появляется шанс сделать хороший продукт, но как и любое понимание, это сильно усложнит его жизнь и карьеру, ибо трудно понимать как надо и делать как велено. Чтобы стать хорошим программистом надо просто читать и писать программы. Много и с интересом, набираясь опыта и пробуя разные технологии. Как, чтобы стать пианистом, надо много и с удовольствием играть, в том числе, тоскливые этюды и упражнения для пальцев. Учатся обычно на классике - хорошей музыке, написанной другими. Для программиста тоже есть классика - открытый софт.

  • Anonymous
    December 04, 2008
    Каким-то желчным вышел у меня предыдущий комментарий. Вообще я не хотел бы, чтобы он так воспринимался. Как наезд на личность автора блога. Ну просто в совершенно технической теме зачем-то грубо прошлись по человеческим отношениям, сведя их к неумелым попыткам засунуть руку под одежду... Ну зачем, жизнь и так штука грустная...

  • Anonymous
    December 04, 2008
    рецепт как стать хоршим программистом давно известен и доступно изложен у Норвига в статье "Научитесь программировать за 10 лет"

  • Anonymous
    December 04, 2008
    примерно понятно почему не помогает.  Народ явно хочет стать хорошим программистом за короткий срок, а это врядли получится. Есть ещё такая теорийка, что приобретая вещи как у хорошего человека и делая так как делает он, ты станешь хорошим.  Но тут проблема - отсутсвие обратной силы.  Это как у львов, станешь вожаком - перестаёшь охотится, но вот если просто перетанешь охотиться, то уж точно вожаком не станешь - нет обратной силы.

  • Anonymous
    December 10, 2008
    SICP - Structure & Interpretation of Computer programs, что советует Алекс Отт - оспариваемая, но ОЧЕНЬ полезная серия лекций. Отмечу, что воспринимается непросто многими "опытными программистами". Присоединяюсь - стоит. От себя добавлю еще пару источников:

  1. Терренс Пратт "Языки программирования. Разработка и реализация". Это книга не про "как программировать", а про "как устроены языки изнутри".Я читал 2е издание - там еще snobol описывали - и много раз знания, системно поданные в этой книге, меня выручали. 3е издание на русский не переводили - был период эйфории АРМописательства на DBASиках. 4е издание перевели, качество материала - не хуже 2го издания.
  2. The Programmer Stone. Даже если собрались программировать под винду - читать СТОИТ. Да простит меня Эльдар (если его это заденет) - но ДОС и "одноместные" редакции винды породили удручающее количество программистов, абсолютно не желающих следовать каким-то канонам размещения системных и пользовательских данных, что в какие ветки реестра писать. Итог - огромное количество прикладного софта, требующего прав администратора по одной единственной причине - программер не думал. Пример - 2002 год. Москва. Выставка решений "про безопасность и контроль доступа" (название забыл). Две трети(!) решений программной части систем контроля доступа - либо Win98, либо win2000 - но с правами администратора. PS: для тех, кто хочет стать серьёзным программистом, я бы советовал избегать мурзилок из серии "Нейрохирургия за 24часа". Те, что мне попадались - содержали быстрые простые решения. Немасштабируемые. Главный недостаток - нет описания границ применимости. Пример: курсовик, который мы когда-то писали на двоих, мне пришлось переписывать и в части товарища, потому что решение работы с данными, взятое им из "мурзилки", на больших объемах просто не работало. В примере явных описаний ограничений не было.
  • Anonymous
    December 16, 2008
    Я Пратта читал только то, что указал. Знание, как устроен инструмент (ЯВУ) изнутри - мне сильно помогало. На первом курсе был сильно удивлен, что про "границы видимости переменных" нам не рассказывают. Извинения? Некоторых сильно задевает моё мнение, что именно популярность "одноместных" Windows справоцировало появление стольких программистов, игнорирующих рекомендации самой же компании Microsoft (реестр, программапользовательские данные и т.п.) А что можно писать о The Programmer Stone, ктоме того, что его стоит вдумчиво прочесть? Насчёт мурзилок - в среде знакомых электронщиков так называли журнал "Радио", за регулярные ошибки в схемах. А книги "блаблабла за 24 часа" я терпеть не могу из-за создаваемой ими иллюзии, что "программирование - это ж просто". Иллюзорная простота "вхождения" часто привлекает в программирование людей, не способных преодолеть уровень чуть выше таких книг. Те самые паразиты.