?

Log in

о программистком опыте - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

о программистком опыте [июн. 27, 2007|03:33 am]
Anatoly Vorobey
[Tags|, ]

juan_gandhi сказал то, о чем я не раз думал:
Интересная у нас профессия, у программистов. Можно тридцать лет и три года сидеть на компьютере, и в результате знаний и осмысленного опыта практически столько же, сколько у двадцатилетнего хакера.


Есть ли действительное накопление опыта и знаний (настоящих знаний, не типа там библиотеки какой итп.) в программировании? Может, после того, как достигается определенный рубеж профпригодности, мы никуда не растем? Мне так иногда кажется; я вспоминаю себя, пишущего разные неплохие программы 15 и 10 лет назад, и мне неочевидно, что сейчас я умею их писать лучше. Именно "неочевидно": если как следует подумать, то все-таки, наверное, сейчас умею лучше, но это отнюдь не очевидное утверждение. И даже если умею лучше, то совсем не ясно, насколько это качественно лучшее умение, или скорее накопленное количество сведений: стандартов, протоколов, библиотек, методов сериализации или синхронизации...

С другой стороны, 9000 возражает в комментах там:
С другой стороны, глянем на Эйнштейна. Для придумывания ОТО нужен были именно что опыт, потому что она растёт из не настолько простых идей. Недавно мне попалась "Сумма технологий" Лема; я поразился, насколько более глубоким и менее наивным сумел стать автор за 10 лет. Притом, что Лем, imho, один из гениев 20 века.

Перечитывая свой код месячной давности, думаешь, бывало: "какой балда его написал!". Код пятилетней давности, которой уже забыл -- "хм, да я уже тогда был ловок". Код 10-леьней давности -- "ужас, ужас, каким я был наивным неумехой".

Конечно, верно и то, что, вспоминая себя 15- и 10-летней давности, я невольно накладываю на свой тогдашний образ знания и понимание, которые у меня есть сейчас. Так что в каком-то смысле неудивительно, что глубокой разницы не замечаешь. Честно говоря, мне как-то и не хочется перечитывать свой код 10-летней давности, что бы он мне ни сообщил.

И вот что еще подумалось: может быть, одна из причин того, что в последнее время (год-два) я старался изучить больше совсем новых для себя по сути своей языков (Хаскель, Лисп) было тоже связано с этим, двигалось в том числе подспудным желанием смочь сказать самому себе: я действительно знаю больше, чем знал 10 лет назад, действительно понимал что-то совсем новое и мощное, что тогда не понимал. Может быть. Потому что, если честно, картина программирования как искусства, которое не становится лучше или хуже с годами, возможность того, что со временем ничему действительно новому не учишься, мне не то что не нравится, а в какой-то степени даже ужасает. Нехорошая эта картина, не по душе мне она - и мое стремление расширить свои знания, выучить что-то действительно новое было, возможно, стремлением от нее оттолкнуться.

А вы что о всем этом думаете?
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: scolar
2007-06-27 01:05 am
Нужно чётко различать два вида нашей повседневной деятельности: "пишем код" vs. "решаем задачу". Для второго типа опыт - вещь бесценная. Для первого, действительно, начиная с какого-то момента рост практически прекращается. Этот стабильный уровень у каждого свой, разумеется.
(Ответить) (Thread)
[User Picture]From: aneta
2007-06-27 01:10 am

ужасающая картина

А мне тоже так показалось. Действительно, лет пять роста практически с нуля, а потом - предел, только вширь - новые библиотеки, новые языки... Но это уже скучно. Либо расти по административной линии, руководить другими, учить, писать книжки, открывать свою фирму... Но это уже в сторону, уже не сама профессия.

Я уволилась, ищу что-нибудь другое, принципиально. Вернуться в науку, например... Но тяжело - приходится начинать с начала, а время упущено..
(Ответить) (Thread)
[User Picture]From: nizgoraev
2007-07-04 08:08 am

Re: ужасающая картина

А как же ремесло? Навыки, автоматизм, нерефлектируемая точность... Разве это не прибавляется с годами?
(Ответить) (Parent) (Thread)
[User Picture]From: msh
2007-06-27 01:29 am
Мне кажется, что то, в чем я действительно значительно улучшился за последние годы - это как раз та часть программистского ремесла, которая не языки и не библиотеки. И я вижу еще огромное поле для улучшения и при текущей скорости, видимо, желаемого результата до пенсии не успею достичь
(Ответить) (Thread)
From: selfmade
2007-06-27 02:52 am
В программировании, чтобы оставаться на одном месте, нужно постоянно бежать. При этом новички начинают не со старта, а вливаются в поток с обочины.
(Ответить) (Thread)
From: dimiii
2007-06-27 06:01 am
Отличное сравнение!
(Ответить) (Parent) (Thread)
[User Picture]From: spamsink
2007-06-27 03:17 am
Мне кажется, что опыт программиста заключается в том, что он приближается к мудрости в смысле serenity prayer, т.е. в способности навскидку оценить сложность задач, которые перед ним ставят, а не пытаться брать нахрапом сложное и не надувать щеки перед простым.

Мой непосредственный начальник, собственно, включает тест на "мудрость" в интервью, вчерне описывая наш проект и предлагая указать наиболее сложные места с точки зрения кандидата. Молодежь обычно попадает пальцем в небо.
(Ответить) (Thread)
(Удалённый комментарий)
[User Picture]From: ygam
2007-06-27 05:30 am

Хороший анекдот!
(Ответить) (Parent) (Thread)
[User Picture]From: bujik
2007-06-27 03:33 am

А мой друг chio говорит: "программист силен наработками". :-)
(Ответить) (Thread)
[User Picture]From: shmel39
2007-06-27 03:40 am
Я думаю, именно поэтому кодирование часто складывается на низкоквалифицированных кодеров. "Лучший инструмент программиста - Visio. Накропал схемки, пошел спать, с утра индусы уже все закодировали" (С) :-))

Сам по себе конкретный язык программирования (или несколько) не является столь сложным, чтобы изучать его несколько десятилетий. А вот опыт решения задач, умение абстрактно мыслить, правильно развивать архитектуру, масштабировать, участвовать в крупных проектах - это все накапливается, да.

Кстати, а если сравнить скажем студента-математика и матерого профессора, есть ли здесь аналогия?

P.S. Хотел спросить про Haskell. Какую большую задачу Вы решали на нем в процессе изучения. Я просто зашел в тупик: я не знаю чего можно на нем вообще написать, кроме коротких математических задачек типа Project Euler. Либо к нему нужны задачи сильно специфические, либо надо уметь его специфически использовать под произвольные задачи.
(Ответить) (Thread)
[User Picture]From: abvgd
2007-06-27 04:17 am
>> именно поэтому кодирование часто складывается на низкоквалифицированных кодеров

точно, можно даже добавить -- и на высококвалифицированных тоже
какой, в сущности, кайф от того, что машина выполнила твои инструкции так, как и должна была выполнить? или от того, что инструкции написаны без ошибок? это все равно как наслаждаться тем, что умеешь грамотно писать, запятые расставлять -- сомнительное наслаждение
другое дело, написать повесть, или, возвращая аналогию -- изобрести эффективный алгоритм
но это в общем, не программирование, а скорее математика
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2007-06-27 04:02 am
мне программирование не нравится как раз тем, что, как тут сказали, "надо все время бежать". Плохо не то, что надо постоянно учить что-то новое, а то, что уже выученное устаревает и становится ненужным. Мне почему-то кажется, что программирование когда-нибудь дойдёт до финиша, до логического конца.

PS: А всех программистов убить, и уже сейчас. :-))
(Ответить) (Thread)
From: (Anonymous)
2007-06-27 04:07 am
Проблема дальнейшего роста состоит, пожалуй, в том, что по обретении внушительного массива знаний требуется выход за пределы известного. Дело это рискованное, ибо не гарантирует более-менее стабильного гешефта, ввиду чего многих отсутствие финансовых гарантий при новых исследованиях заставляет продолжать "плакать, но кушать кактус".

Здесь уже звучало, что зрелые специалисты не решают задачи нахрапом - у них есть опыт. Это верно даже при работе над сложными проектами - их расчленяют и пытаются нормализовать к базису опыта, но при этом надо помнить о спирали развития. Действительно новые вещи не изучаются, они всплывают в результате "отчаяных атак", выходов за пределы. Таким образом, ваш опыт в деле роста - это балласт, который удерживает вас в заданном слое. Для того, чтобы открыть что-то подлинно новое, необходимо рискнуть.
(Ответить) (Thread)
[User Picture]From: yanis
2007-06-27 04:12 am
я думаю, что за пять лет формируется профессионал в какой-то области программированиђ. за десять лет - в целом серьезный мастер. потом уже только опыт накапливается.
зато, если не зацикливаться на чистом программировании а как-то разнообразить это дело разными приложениями в других предметных областях, то возможности роста ничем не ограничены.
20-летний хакер во многом лучше человека с 10-летним опытом, но есть в вещи, для которых 20-летний хакер совсем не годится и, скорее даже вреден.
(Ответить) (Thread)
[User Picture]From: bugabuga
2007-06-27 04:15 am
Неосмысленный опыт увеличивает производительность :)
То бишь за 30 лет человек привыкает решать определённые классы задач во сне и одной левой. Да, если не менять профиль, то будет скучно, а потом хакеры с библиотеками стандартных решений может набегут, но ведь можно и количество в качество переводить.
От решения конкретных задач к созданию библиотек, общих принципов, улучшение процесса и тому подобные качественные скачки.
(Ответить) (Thread)
[User Picture]From: monomyth
2007-06-27 04:26 am
хорошо, что программист из меня не получился :) Хотя собственно "программированием" и занимаюсь на работе в последнее время.

Но я думаю ты говориш о проблеме перехода количества в качество и я не вижу, как человек, может достичь тупиковости если он чем–то занят. Просто, я думаю, становятся не интересны задачи, если их уровень не повышается с опытом их решения и поэтому нет мотивации для новых качественных скачков.
(Ответить) (Thread)
[User Picture]From: pargentum
2007-06-27 05:26 am

Не знаю

Мне кажется, самое ценное, что я изучил со времени окончания Универа - не языки и технологии, а осознание важности нефункциональных требований к коду, в первую очередь maintainability. То есть в универе я это знал, но как-то слишком умозрительно.
(Ответить) (Thread)
[User Picture]From: nizgoraev
2007-07-04 08:13 am

Re: Не знаю

Поподробнее опишите эти трубования, пожалуйста.
(Ответить) (Parent) (Thread)
[User Picture]From: 1bigud
2007-06-27 05:26 am
Наш декан говорил нам на первом курсе: "По настоящему заниматься математикой вы можете только сейчас, когда вам будет по 25 лет, вы уже ничего нового постичь не сможете". Программирование суть та же математика.
(Ответить) (Thread)
[User Picture]From: nms
2007-06-27 05:52 am
Компьютерное ремесло (ошибочно (?) называемое "искусство программирования") есть:

1) Анализ проблемы
2) Синтез решения
3) Запись на тарабарском языке

Конкретные персоны сильны не во всем. Первым двум пунктам меня учил учитель математики на уроках математики в школе. Третий пункт я освоил уже позже во студенчестве.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: gruimed
2007-06-27 06:43 am
Ответ на мой взгляд простой, но не очень для нас лестный - программирование не настолько сложно, как принято думать. Есть исключения там и сям, но в массе своей - это совсем не квантовая механика. Так что да - потолок есть, и не такой уж безумно высокий.
(Ответить) (Thread)
[User Picture]From: staryj_perec
2007-06-27 07:19 am
Если взглянуть на эту проблему динамически - интересная картина плоучается. То, что понималось под "программистом" 10-15 лет назад и сеичас заметно отличается. В прошлом, 10-15 лет назад, "программист" включал в себя и системного архитектора, и дизайнера, руководителя проэкта, и собственно программиста, т.е. того, кто все задумки реализует.
И там твои пределы ограничены только твоей башкой.
Сейчас произшло заметное раделение труда, и собственно "программист" остался в последней ипостаси - реализатор, если хотите слесарь, али плотник. Т.е. "программист" = инструмент, а не идея. Поэтому и скучно.
(Ответить) (Thread)
[User Picture]From: moon_aka_sun
2007-06-27 08:19 am
Что зато приятно теперь, что можешь какую-нибудь ерунду написать, алгоритм там вспомогательный или обработку файла какую, строк на 50-100, и в ней с первого раза не только не будет синтаксических ошибок, но и заработает как надо. Бонус - это даже может быть один из нескольких языков.
(Ответить) (Thread)
[User Picture]From: avva
2007-06-27 08:55 am
Да, это приятно. Но этого недостаточно.
(Ответить) (Parent) (Thread)
[User Picture]From: yornick
2007-06-27 08:19 am
У опытного актёра 133 штампа, у начинающего 3.
Кто лучше смотрится на сцене? Опыт, умудрённость или энергия и энтузиазм ?
И возвращаясь к нашим бараном,
идеальный вариант это не идти в ногу с технологией ( и это не самый плохой вариант ) а создавать её. А для этого тебе как минимум надо знать чем занимались твои предшественники.

Вот такой спонтанный комментарий
(Ответить) (Thread)
[User Picture]From: alexott
2007-06-27 08:23 am
я думаю, что должен происходить переход в иное качество - архитектор-аналитик.
опыт (не только программисткий) позволяет быстро оценить задачу, накидать варианты решения (может быть в виде бредовых идей) без кропания кода, покрутить варианты в голове/на бумаге и т.п.
и как раз в этом, появляется преимущество перед вчерашним студентом, который может отлично знать язык программирования, но не решал сложных задач.
сюда же можно отнести и опыт чтения/фиксения чужого кода, в том числе и на незнакомых языках :-)
(Ответить) (Thread)
[User Picture]From: avva
2007-06-27 08:57 am
Я не верю в "архитекторов-аналитиков". Есть программисты, в том числе и такие, которые по тем или иным причинам (часто связанным со временем, а не потому, что не хотят) не пишут код.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: alll
2007-06-27 08:38 am
Ну, у двадцатилетнего дворника знаний и осмысленного профессионального опыта столько же, сколько у пятидесятилетнего. И с сантехниками та же история. И с рабочими на конвейере. "Мы просто собираем бананы и кладём их в коробки".
(Ответить) (Thread)
[User Picture]From: alll
2007-06-27 08:42 am
На самом деле добрая половина профессии программиста - это коммуникация и поиск информации. Именно эти навыки прокачиваются с возрастом.
(Ответить) (Thread)
[User Picture]From: faceted_jacinth
2007-06-27 08:53 am
"картина программирования как искусства, которое не становится лучше или хуже с годами, возможность того, что со временем ничему действительно новому не учишься"
---
Тут уместно как раз провести параллели с искусством, например с живописью. Там же как, есть техника, способность точно двигать кистью, смешивать краски чтобы получить именно то, что хочется, перспективу правильную делать. Но ведь великий художник -- это не тот, кто в совершенстве овладел техникой, а тот, кто с помощью техники делает интересные вещи.

Программирование в смысле написания кода может быть даже ещё более глубоко (в смысле, длиннее дорога к совершенству техники), чем живопись или музыка. Мощные ортогональные инструменты, вроде языка С или темплейтов, можно изучать десятки лет, периодически обнаруживая разные интересные приёмы (вроде Curiously Recurring Template Pattern, который я совершенно случайно открыл самостоятельно пару лет назад, очень был рад).

Но это вовсе не повод придавать технике какое-то особое значение. Да, она необходима, но по большому-то счёту важно не то, как ты пишешь, а то, что ты пишешь. Изучение FP тоже ценно не столько тем, что даёт новые инструменты, сколько тем, что позволяет придумывать что-то новое, выходить за границы применимости старых инструментов, даже нет, не границы применимости, а неявно подразумеваемые цели, диктуемые старыми инструментами.
(Ответить) (Thread)
[User Picture]From: roza
2007-06-27 09:08 am
По-моему с опытом из джинна, который постоянно предлагает Аладдину построить дворец или разрушить город, преобразуешься в волшебника, который подарит то о чём мечтается без видимых усилий :)
А если серьёзно - кроме собственно способности писать улучшается способность думать о проблемах и решать их, и я не понимаю как здесь можно достичь потолка.
(Ответить) (Thread)
[User Picture]From: olegy
2007-06-27 10:23 am
Записал почти год назад :-)
Заглядываю в свой старый код, написанный лет этак 4-8 назад. Ужас как криво... Странно, что еще работает

Что касается развития. Когда в 90-х начинал, попал в лабораторию, где работали несколько поколений разработчиков. Я увидел тенденцию: практически каждый инженер в своем развитии доходил до непреодолимого барьера. При своем юношеском максимализме я определил этот баръер в 40 лет (мне сейчас 40 :-).
Среди схемотехников:
- Кто то не смог преодолеть барьер цифровой техники
- Кто то не смог преодолеть барьер микропроцессоров
Среди программистов:
- Кто то не смог преодолеть барьер С(pascal, ...) (остался не ассемблере)
- Кто то на смог преодолеть барьер операционной системы
(это я про 90-тые)

Сейчас у программистов появилось очень много барьеров.
Я уже вижу свой барьер (не скажу ;-), и странное дело, почему то нет желания его преодолевать.
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>