Это очень показательная ситуация. В России программисты считают программирование искусством. И никому не удается их в этом разубедить. Маркетологи не считают, что их работа это искусство, так же не считают директора, продавцы, бухгалтера, архитекторы и многие другие специалисты - спокойно относятся к своему призванию. Но не путают творчество в работе и отношение к работе как к искусству в ущерб целям и задачам этой работы.
[spoiler]
Например, для большинства художников очень важно заниматься своим творческим ростом. Но жизнь так устроена, что не получается все время работать на себя и свои идеи. Для того, чтобы развиваться, художники выделяют себе время на творчество, на реализацию своих идей. Но когда художник работает на заказ, в большинстве своем, он должен выполнить поставленную задачу и "услышать" пожелания заказчика, реализовать их творчески и художественно, но реализовать именно то, что хочет клиент.
Программист же почти всегда пребывает в состоянии творческого роста. Ему все время хочется учиться, изучать новые технологии, писать на самом новом инструментарии, переписывать приложение на новый язык или версию системы, обновлять свой компьютер, среду разработки, ставить патчи, прошить новую версию bios... Дописанная программа считается сразу устаревшей.
Причем сам себе программист говорит с искренней уверенностью, что он учится для того, чтобы на новом проекте или на новой работе применить эти знания. Но программист меняет работу или просто приходит на новый проект, и … опять выбирает для себя следующую новую технологию для реализации. Почему? Потому, что хочет ее изучить и пробует уже на ней сделать проект. Именно пробует сделать, так как результат для него не имеет большого значения. Результат никакого отношения к обучению не имеет, ведь так? Сам себе он выставляет внутреннюю оценку не по достигнутому результату, а по творческому шедевру, изученному пласту документации или созданному коду. Результат - это просто как случайный подарок - может случиться, а может и не случиться (вероятность 1/2 ). Но результат обычно не возбуждает программиста к свершениям, больше интересен процесс профессионального роста или иллюзия роста.
Безусловно, не все программисты такие, но 99% выходящих из университета именно такие. И я был именно таким когда закончил обучение в университете.
Интересно, думаю я теперь, почему мне в университете ни один преподаватель не сказал, что, приходя на работу, мы должны реализовывать бизнес задачу компании наиболее точно и использовать наиболее эффективный инструментарий для этой реализации… А может и говорили, но я не поверил или не услышал, как и все?
В первом банке, который я осчастливил своим присутствием, банковский софт был написан компанией "Инверсия" на FoxPro с DBF файлами. Но мне казалось унизительным, именно унизительным, писать на FoxPro и дописывать чужую программу. Я считал, что это для трусов - типа, настоящий профессиональный программист так не пишет
Я взял компилятор С++, нашел и переписал под Win32, использовал многопоточность (зачем спрашивается , библиотеку для работы с DBF, написал свой парсер отчетов, на котором в последствии и «набомбил» массу отчетов для банка. Замечательный образец полного игнорирования целей и возможностей организации. Я просто учился за счет банка, скажем честно. Причем, никто в банке не был против такой формы обучения, они просто не понимали. Руководители и менеджеры организации понимали, что от ИТ зависит их бизнес, но близко не понимали, какими критериям его измерять и оценивать (и сейчас ситуация не особенно лучше). Конечно, приложение умерло вместе с моим уходом через два года, так как новый программист аргументировано доказал, что это все "фигня" и принялся писать эту же "фигню" на Java (начинала входить в моду тогда).
Но в этом банке я уже усвоил один урок. Меня всегда интересовали SQL-ные базы данных и глобальные сети. Сделав парсер на C++, я сел изучать SQL. Но никакого SQL сервера под рукой не оказалось. И я взял Excel и через ODBC драйвер стал писать SQL запросы к DBF файлам базы данных банка. Нашлось и применение. Я за пару недель сделать полный комплект ЦБ-шной отчетности банка на Excel, причем такой красивой, по тем временам, ну просто жуть Сводные таблицы Excel - вещь выдающаяся. Инструмент и правда получился отличный, пользователь просто ставил даты и получал нужный отчет. Причем, я обнаружил забавный эффект: созданные мною отчеты стали использовать другие программисты, стали править их и делать на их базе свои модификации. Технология оказалась очень дешевой, яркой и эффективной в поддержке для банка. Даже после моего ухода отчеты и инструмент продолжали использовать. Но надо признаться, опять же, правильный эффект был совсем не запланирован. Это был случайный побочный результат изучения мной SQL технологий.
Следующим на моем рабочем пути был Инвестбанк. Вот там мне голову и вправили. Уже в те времена повального FoxPro, в этом банке уже работал Oracle, UNIX сервера… Все приложения были написаны на Oracle Forms и банковский день разработан был Форсом (первые реализации). Скажем прямо, визуально это не особенно привлекательные формы. И я, конечно, не мог не начать высказываться относительно того, что стоит все переписать на Win, что Oracle не лучшее решение, ну и массу других глупостей.
Пользуюсь случаем скажу спасибо Алексею Ежкову, директору по ИТ, Татьяне Кудиной, тогдашнему руководителю отдела Oracle разработки, Архипенко Сергею, моему руководителю. Они улыбались моей наивности и задавали на мои инициативы вопросы про стоимость владения, обучение специалистов, независимый ИТ-аудит для банка, сертификацию ПО и другие нормальные вопросы, которые мне самому почему-то в голову не приходили. Не могу сказать, что они учили меня как-то предметно. Они просто думали так, жили так и по-другому не понимали, как может быть. Они были профессионалами ИТ-бизнеса. Думаю, именно к ним применимо слово Профессионал. И это во многом изменило мой взгляд на вещи.
Может, обучение – это решение своих личных задач и карьерный рост? К сожалению нет. Обучение – это попытка приобрести уверенность, что ты что-то можешь. Но до тех пор, пока программист не нацеливается на решение бизнес-задачи организации, в которой он работает, все его усилия по обучению уходят бесследно, как вода в песок. Бесследно для него лично, так как уверенности он не приобретает, как и славы и денег. В резюме не появляется новых строк, которые были бы ценными для других компаний. Кстати, именно по этой причине многие резюме программистов очень часто выглядят как перечисление всех известных технологий. Мы часто такие получаем, и каждый раз это вызывает улыбку. Технологии меняются очень быстро, ты понимаешь, что со временем надоест без цели изучать новые языки, платформы, команды… да и возраст уже не студенческий. Обучение без цели не имеет большого значения. Но понимание приходит со временем. А как бы хотелось получать эти знания сразу и так убедительно, чтобы не сомневаться и не проверять на своей шкуре.
Да, наша система обучения программистов содержит системный дефект: программистов никогда не учат, что они приходят в компанию для того, чтобы реализовывать задачи компании. Нет у нас в программе обучения программиста тренингов по оптимальному решению задачи организации с использованием тех или иных инструментов, с учетом имеющихся возможностей компании. Кстати, я подобные курсы и вопросы видел в одной из программ сертификации Microsoft (конечно с учетом их решений). Но учить чему-то подобному стоит.
И все же, искусство или ремесло?
Я думаю, что ВСЕ профессии, в том числе и программирование, это и творчество, и ремесло, и искусство. И очень важно учиться, быть всегда на пике своей профессии. Но также важно понять, что такое "профессионализм" вашей профессии. Для программистов профессионализм - это не количество изученных технологий, а, как и для любой другой профессии, критерием профессионализма программиста является профессиональное выполнение поставленной задачи!
Компания ставит задачу, а профессионал выбирает для ее решения наиболее эффективные решения. Действительно, задачи ставят не всегда "правильно" с точки зрения специалиста и не всегда полно. "Хочу дом, 1000 м2 должна быть общая площадь, денег у меня столько, земли у меня столько..." Архитектор оценивает и делает ряд проектов, вписывать в архитектуру города, делает здание заметным, выбирает фасады... В том и состоит профессионализм архитектора, чтобы продумать за заказчика вопросы, в которых он не разбирается и не будет никогда разбираться. Выберет ли архитектор для работы новые материалы только потому, что он с ними никогда раньше не работал, и ему интересно построить такой дом? И не окажется ли потом, что в дом не удается внести ни один стандартный диван, потому что он не проходит в пролет лестницы? ... Как архитекторы, так программисты должны быть специалистами в своей области и не объяснять неудачи тем, что им неполно поставили задачу.
И независимо от профессии все люди делятся на тех, кто ЗНАЕТ как надо делать проекты, и тех, кто на самом деле ДЕЛАЕТ проекты.
Все, что вы знаете и изучали, все, что вы еще изучите, нужно вам не как самоцель, а как средство достижения результата! А все остальное приложится: деньги, слава, женщины, машины и квартиры. Компания сама вытащит вас наверх, потому, что любой компании, как воздух, нужны люди производящие результат. Даже если вы не гений, но делаете результат - вы уже гений!
Наверняка многие читают и кивают головами в знак согласия, узнавая себя в этой статье.
ЗЫ. Поскольку статью начнут копипастить и цитировать, я бы порекомендовал слегка "откорректировать падежов" - видимо в спешке правил текст и остались "ляпы"
Вспомнил вот статью из серии "Личный опыт":
Про "очкастого дядьку" и решение задач - шедевр.
P.S. Неужели нельзя совмещать приятное с полезным? Безусловно, не стоит гнаться за количеством изученных технологий. Но ведь без творчества программирование превратится в рутину, а никто не хочет заниматься скучным делом.
Я думаю, это мало вероятно. Спрос на ИТ специалистов ростет быстрее, чем их успевают учить, а зависимость бизнеса от ИТ только усиливается. Так что будут получать много, и работать много
Проектирование зданий - это творчество! Программирование и проектирование - это безусловно творчество! И это я старался подчеркнуть в статье. Но мы должны научиться заниматься творчеством для достижения цели или не обманывать себя и других и прямо говорить, что мы учимся.
А спрос действительно растет! Мне как фрилансеру это чувствуется.
+1
За меня автор изложил мои же мысли.
Спасибо Сергей
Сергей, еще раз спасибо. Вдохнул уверенность в перспективе
Так поднимем же кубки за то, чтобы рядом с хорошими программистами всегда находились не менее хорошие продавцы.
почти те же слова приходится каждый раз проговаривать клиентам, и собратьям-разработчикам, которые уверяют, что напишут свою собственную CMS и будет она гораздо лучше существующих))
как говорится, "вам шашечки или ехать?"
Ну это мы слышим чуть ли не каждый раз, когда встречаемся с крупными разработчиками. "У нас уже все есть, лучше, и написано на 95%, еще 1-2 месяца и все будет готов". Обычно через 3 месяца мы подписываем договор и начинаем успешно сотрудничать.
И во вторых, Сергей, если вы говорите о том, что глупо писать что - либо с нуля, нужно всего лишь выполнять бизнесс задачи компании, то почему у вас сейчас есть своя компания и свой монстр (Битрикс)? Почему вы не взялись дорабатывать уже существующие аналоги?
P.S.
Но статья действительно хорошая - заставляет задуматься... =)
спещке за месяц - два, и не понятно вообще как до сих пор оно
работает, то мне ажется оправданным переписать с нуля опираясь на то
что уже существует. Конечно никто не застрахован от получения
очередного не поворотливого монстра, но это уже отдельная проблемма.
Вот тут ошибка, я думаю. Реально на сегодняшний день очень мало уже
областей, для которых нет готового ПО или хорошего фундамента для
этого ПО. Переписать с нуля - это очень плохо и обычно очень дорого. А
риск получить тоже самое, т.е. получить аналогичный результат очень
велик.
Да, если все плохо. Надо оценивать ситуацию, выделять ключевые бизнес
процесс и потребности в первичной автоматизации и сроки. Выбирать
инструменты, продукты, и решать последовательно, не разрушая все, а
поэтапно исправляя ситуацию.
что - либо с нуля, нужно всего лишь выполнять бизнесс задачи компании,
то почему у вас сейчас есть своя компания и свой монстр (Битрикс)?
Почему вы не взялись дорабатывать уже существующие аналоги?
Почему, брались и дорабатывали. Но цель у нас была делать продукты,
мы для этого компанию создавали. Т.е. для нас производство сайтов в
начале - это был вопрос самоинвестирования. Но даже в при таком
подходе, когда мы одновременно делали сайты и писали продукты - мы
поступали неправильно и результат это доказал. Первые версии продуктов
были плохими, написанными от клиента к клиенту. Нам пришлось потратить
9 месяцев на разработку совершенного новой архитектуры, чтобы он стал
продуктом начиная с версии 3.0. А версии 1 и 2, Инфо-портал 1 и 2 и
Арендуемые магазины так и не пошли хорошо в тираж по причине ряда
непрофессиональных решений.
А совсем правильной стал ситуация, когда мы перестали делать сайты и
занялись только продуктами. Вот тут мы считаем, что завершили этап
самоинвестирования и добились поставленной бизнес задачи.
поступали неправильно и результат это доказал.
Select_full_join: 5,770 (значение не очень-то нормальное)
The number of joins that do not use indexes. If this value is not 0, you should carefully check the indexes of your tables.
Handler_read_rnd: 37 M
The number of requests to read a row based on a fixed position. This is high if you are doing a lot of queries that require sorting of the result. You probably have a lot of queries that require MySQL to scan whole tables or you have joins that don't use keys properly.
Handler_read_rnd_next: 1,369 M
The number of requests to read the next row in the data file. This is high if you are doing a lot of table scans. Generally this suggests that your tables are not properly indexed or that your queries are not written to take advantage of the indexes you have.
Поскольку в таблицы мы руками не лазим, все только через API, то... Не говоря уже о Table_locks_waited, Created_tmp_disk_tables (несмотря на километровые кэши) и еще паре приятностей.
Сервак: двухпроцессорный, 4 гига, nginx, мускул, акселератор -- все как полагается 8)
P. S. Решения особо не прошу, так как уже есть ТЗ на переработку ядра с учетом известных костылей (саппорт не пинаем по той же причине), это так, просто для информации.
Удивительно перекливается с рассказом, послужившим причиной этого обсуждения. Чувак просто как в жизни все расписал. Правда, чуть с другого бока, но -- отлично.
Я уже начал в n-ый раз перечитывать статью Сергея Рыжикова в поисках ответа на вопрос кто все-таки прав.
>>И независимо от профессии все люди делятся на тех, кто ЗНАЕТ как надо делать проекты, и тех, кто на самом деле ДЕЛАЕТ проекты. -> ЗОЛОТЫЕ СЛОВА[B]
>>Даже если вы не гений, но делаете результат - вы уже гений! -> это истина ))), а порой думаешь как мало всего знаешь....
Раздразнил, прямо захотелось ответную статью написать
Ну, ладно-ладно, лучше буду "решать бизнес-задачи компании". Программеру - программерово
Начал нанимать людей - ощутил на своей шкуре
На тему битрикса - да, мне лично проще сделать сайт на друпал чем на Вашей CMF. Причина - легче и быстрее разобраться в коде системы и в ядре - соответсвенно по числу человекочасов это дешевле. В том числе и клиенту.
Битрикс - хороший продукт. Не спорю. Удобный для пользователя. Но не для человека, который пишет под него модули. К сожалению.
И складывается простая ситуация: конфликт ценностей. Клиент - у которого в админке битрикса все легко и просто(в этом Вы преуспели и есть за что Вашу компанию уважать) и программист, который видит - что ему копать и копать. В итоге в глазах клиента исполнитель просто "ломит цену". Вот такая ситуация. Мы тоже не работаем "за интерес". Но если мы видим, что заказчик пришел с проектом не Битрикс - знаем, что в 95% случаев - проекта не будет.
Так что, с коммерческими продуктами все интересно. Но вопрос мотивации и "творчества" - вещь неоднозначная.
Хм, Илья, под Битрикс в основном пишут Компоненты, а не модули. Похоже ваши разработчики подошли со своей меркой к продукту. И не могу согласиться, наш продукт проще настроить. Да и другие высказывания очень спорные. Но не будем спорить и не в этой теме...
Это же нужно быть такием, как бы это мягче сказать... чудаком - агитировать переехать с серьезных платформ в песочницу для пионэров ))
Не отрицая всего философского смысла описанного в статье, и всего имеющегося уважения к Сергею Рыжикову, все же отмечу что примечательно: данная статья написана руководителем компании которая много лет откровенно развивала говнокод (не спорю, сейчас пытаются переписать на норм, но до конца без изменения архитектуры у них все равно это сделать врядли получится).
Но бывают и другие в жизни примеры, незнаю назвать ли их исключениями, или все таки правилами которые отрицают выводы статьи.
Когда многие студии работают на опережение, всегда едут на гребне волны, где применяются самые новые технологии и программистов в этом не ограничивают.
Взять тот же Яндекс. Цитата Бобука с РИФ 2013 (в секции где Сергей Рыжиков был куратором): "У нас в Яндексе каждый пишет на том на чем он хочет: хочешь написать новый сервис на новом языке - пожалуйста".
Или Взять одну из топовых веб-студий в России ( по последнему рейтингу вроде 13 место) - Сибирикс. У них принцип: "Те кто лучше всего работает, получает возможность работать с самыми передовыми технологиями". Они кстати интересно сделали - выпилили часть говнокода bitrix и пишут в итоге на смеси zend и bitrix.
И взять к примеру компанию в которой работаю я - мы всегда стараемся идти на передовой. И в итоге получается выбиваться по качеству в лидеры.
В общем программист способен творить шедевры, работать сутками только если ему нравится его задачи. Нравится то над чем он работает. А если его заставляют писать тучу кода для legacy систем - то продуктивности от сотрудника не жди.
Вот я помню как то удивлялся почему отдел bitrix разрабатывает гораздо медленнее чем отдел который работает с laravel или YII.
2. На счет примеров когда "лучше работать на старой технологии, ибо велики потери перехода на новую".
С 2007 когда писалась статья много поменялось. Сейчас технологии меняются и летят еще быстрее чем тогда. Сейчас имхо в ИТ сфере это норма - когда приходится брать и переходить и выкидывать сайт, интерфейс, технологию через 2-3 года.
Стабильность в нашей сфере - это застой =)
В книге "Совершенный код" С. Макконелла описывается одна из профессиональных метафор: вроде называется "Художественная" или как то так. Суть - будь готов выкинуть первый вариант своего кода.
Пожелаем же команде bitrix все таки переделать архитектуру так чтобы она была наименее похожа на то что есть сейчас.
Итого: граждане программисты! Не отказывайте себе в удовольствии работать там где вам нравится и над тем что вам нравится. Программируйте для души) Благо, если находитесь в достаточно большом городе или есть возможность работать удаленно - вариантов всегда много. Не идите в компанию в bitrix или им подобные, где есть хорошие бизнесмены вроде Сергея Рыжикова (считаю его действительно хорошим бизнесменом). В них вы можете годами писать и поддерживать гавнокод, хотя за те же деньги через дорогу можете писать свежий стартап на laravel =)
Делайте то что вам нравится и