Системный аналитик «СёрчИнформ» Павел Пугач рассказывает, как облегчить выполнение требований закона по внедрению SIEM …
Понимай. Или как научиться программированию за десять лет
Юрий Зеленский | 08.09.2014
Из общения с опытными специалистами в области разработки ПО видно, что всё чаще предметом особой гордости является возможность заявить об узкой специализации. Т. е. назваться просто «software developer» или «QA engineer» считается не так престижно как «server-side java developer» или «standalone application QA automation engineer». Более того, и при обсуждении возможных сценариев профессионального развития часто приходится слышать опасение стать олицетворением английской поговорки «Jack of all trades, master of none» (или по-русски, «кто за всё берется, тому ничего не удается»). Приводятся доводы в стиле: вот продолжу заниматься «.net-разработкой» и на рынке труда буду оценен как .net-специалист с пятью годами опыта, а перейду на ruby и буду снова несколько лет «числиться» новичком.
По моему мнению, сформировавшемуся на основе многолетних наблюдений за развитием карьер десятков и десятков специалистов высокой квалификации, работающих в нашей отрасли, это порочный подход, реально мешающий профессиональному развитию специалиста.
Действительно, опасение стать jack of all trades можно понять. Но никто не призывает быть master of none. Я призываю, достигнув мастерства в узкой профессиональной области (и это, конечно, обязательный этап для любого специалиста) не останавливаться на достигнутом. Освоил нюансы server-side java разработки? Молодец! Попробуй, научиться чему-то ещё, чего раньше делать не доводилось (например, из за разделения труда с коллегами по проекту). Не стоит «копить» годы «специализированного опыта», очень часто три года опыта на поверку оказываются одним годом, но три раза.
Более того, я не только призываю не замыкаться на конкретных языках программирования или парадигмах (попробуйте неимперативные языки, это бодрит!), я предлагаю программистам, контролерам качества, бизнес-аналитикам, инженерам поддержки, техническим писателям, проектным менеджерам не гнушаться понять, в чем состоит труд коллег, вместе с которыми мы делаем наше общее дело: создаем программное обеспечение [для цифровых электронных вычислительных машин]. У каждого из нас были причины выбрать ту или иную специальность. Как правило, это связано с личной эффективностью в той или иной сфере деятельности. И я ни в коем случае не призываю отказываться от этой специализации. Я всецело разделяю максиму: заниматься нужно тем, что получается лучше, чем у других. Но содержательное понимание собственных ограничений и возможностей и сопоставление их с ограничениями и возможностями коллег не только позволит создать и укрепить атмосферу взаимоуважения при совместной работе (а это, буквально, жизненно важно), это позволить нам, как команде, перейти на качественно новый уровень возможностей по созданию ПО. Мы сможем делать более масштабные, востребованные и более качественные программы, используя для этого меньше усилий и средств.
Надеюсь, немногие, дочитавшие до этого места, поняли, к чему относился призыв «понимать» из названия статьи. Верно, я призываю стараться понять все аспекты создания ПО, не останавливаясь лишь на тех, что касаются непосредственных обязанностей. На определенные сложности, ожидающие тех, кто решиться последовать призыву, намекает вторая часть названия. Это, к слову, название известной статьи Питера Норвига, которую я рекомендую к прочтению.
Сложность состоит в том, что на то чтобы понять, как создается ПО, уйдет много лет. Прочитать Сode complete, SICP, BABoK и PMBook можно за несколько месяцев. Но на то чтобы действительно их понять, уйдут годы, а возможно и десятки лет. Сейчас нет абсолютно никаких ограничений по доступу к информации и знаниям. Курсы ведущих вузов доступны для всех желающих. С проверкой теории на практике могут быть сложности при работе в небольших коллективах над длительными специфическими проектами. Но работа в крупной компании предоставляет практически неограниченные возможности по практическому ознакомлению с любым аспектом производства ПО. По сути, единственным условием является наличие желания. Желания учится. Желания понимать.
Но самое коварное препятствие поджидает нас в начале пути профессионального роста. Нередко приходится сталкиваться со специалистами, попавшими в ловушку иллюзии всезнания. В некоторых подразделениях нашей компании обсуждалась даже (скорее в шутку) возможность введения в качестве необходимого условия для присвоения сотрудникам высокой инженерной квалификации (SD+) отсутствие требования по присвоению этой квалификации со стороны самого сотрудника. Обсуждалось в шутку, но статистика на текущий момент 100-процентная: каждый раз, когда сотрудник сам интересовался «а не пора ли уже», оказывалось, что пока ещё рановато, и наоборот во всех тех случаях, когда «было уже пора», сам сотрудник скорее сомневался в том, что он уже достоин. Эффект Даннинга — Крюгера в действии.
Бороться с этим препятствием относительно несложно, нужно лишь помнить, что если вы не готовы вслед за Сократом повторять «я знаю лишь, что я ничего не знаю», то это всегда означает, что уровня Сократа вы пока не достигли, и никогда не является признаком того, что вы Сократа превзошли.
Кстати, по результатам опроса на programmers.stackexchange.com на тему «что должен уметь каждый разработчик» наибольшее количество баллов набрал ответ: «смирить гордыню и признать ошибки, не принимая их лично».
Хочется верить, что каждый из нас ещё только в самом начале своего большого пути, на котором нас ждет немало свершений.
Автор статьи — технический директор компании Itransition.
Ссылка на статью: [URL=http://www.pcweek.ru/business/article/detail.php?ID=166266]Понимай. Или как научится программированию за десять лет[/URL]
Здравствуйте, Юрий. Спасибо за статью, интересно. У меня вот такой интересный вопрос есть, кажется можно его Вам попробовать задать. Как дорого будет стоить разработка аналога платформы 1С 7.7, с как можно лучшей поддержкой языка 1С? Это я к чему, платформа 7.7 заброшена и не развивается. Но вот например для наших задач она вполне достаточна. Тратить деньги на 8 пока нет необходимости. В семерке подправить бы немного "недоработок", и мы бы еще пожили с ней :-) "Недоработки" например- работа с большими таблицами DBF (>2Гб или >15 млн.записей) работа с SQL бесплатными и/или современными. и т.д и т.п. Спасибо!
Сергей Крымов 10.09.2014 13:28:35
Добрый день. Спасибо за спасибо, и за проявленный к статье интерес. Хотя мне сложно понять как Ваш вопрос связан с темой статьи, но постараюсь если не ответить, на него то по меньшей мере порассуждать вслух, опираясь на свои познания в данном вопросе. Во-первых, соглашусь, что проблема "принудительного прогресса" через снятие с поддержки вполне устраивающих пользователя версий ПО, действительно существует. Кроме 1С 7.7 можно привести яркий пример WinXP. И лишь отчасти эти "прогрессорские" инициативы обусловлены объективными причинами (например попыткой снизить сложность новых версий за счет отказа от обратной совместимости), чаще это банальная монетизация монополии того или иного рода.
К сожалению, почти всегда, произодители снимают версию с поддержки только тогда, когда окно возможностей по выпуску аналога уже закрылось (нередко, манипуляция патентным правом позволяет сделать так чтобы это окно никогда и не открывалось).
Итак, давайте порассуждаем. Я не настолько хорошо знаком с функциональность платформы 1С 7.7 чтобы дать оценку с погрешностью в десятки процентов (но нельзя сказать что я вообще не знаю о чем речь, платформу от конфигурации я отличаю). Оценка такого объема и такой точности требует для своего составления десятков часов работы. Но я попробую оценить диапазон, в который с большой долей вероятности попадет точная оценка (по меньшей мере на две сигмы можно рассчитывать). По моей интуитивной оценке(если нас читает кто то из разработчиков оригинальной версии, было бы очень интересно сравнить мои предположения с фактом, особенно если я где-то сильно ошибся) разработка такого продукта с нуля заняла 2-3 года, у коллектива из 20-30 разработчиков. Тут нужно учитывать, что для достижения некоторых качеств (например эффективности работы на low-end hardware) пришлось бы отказаться от использования современных технологий разработки, что могло бы повлечь значительные трудности с мотивацией разработчиков. Если учесть что стоимость человеко-года разработки лежит в пределах $50k-$100k, то с учетом определенной взаимозависимости всех параметров (стоимость, сроки, размер команды) мы получим диапазон от $2M до $7M
В целом-же, хотя мне и присущ некоторый технологический консерватизм (как ни странно это слышать от CTO компании разрабатывающей ПО), но новые программы как правило умеют делать больше чем старые, и если отвлечься от вопросов ценообразования, то это не так уж и плохо. Ведь как гласит принцип IBM (и я с ним полностью согласен): машина должна работать, человек - думать.
Юрий Зеленский 13.09.2014 17:59:53
Спасибо за ответ про 1С. Мой вопрос конечно с темой статьи не связан. Т.к. вопросов по статье то и нет :-) Согласный я со всем что написали!
Сергей Крымов 20.09.2014 11:41:23
Спасибо за статью ... отличная статья для новичков. Мое мнение следующие. Научиться програмированию может не каждый, даже если он этого сильно захочет. Для этого надо иметь особые знания и четкий ум программиста. Испытал на себе, и потратил много времени. Если у человека этого нет то он может потратить большесотни лет и не чего из этого не выгодает.
Макар Агапеев 27.02.2015 15:37:43
Только зарегистрированные пользователи могут оставлять комментарий.