15 распространённых мифов о программировании

    Привет, хабр. Недавно обсуждал с коллегой распространенные стереотипы и мифы, которыми успела обрасти сфера программирования. Эта идея показалась мне стоящей того, чтобы написать пост сюда, несмотря на уже существующие материалы по этой теме. Всем желающим – добро пожаловать под кат.




    Казалось бы, такая рациональная и основанная на логике профессия вряд ли будет восприимчива ко всевозможным выдумкам, однако сообщество разработчиков по-прежнему сталкивается с мифами настолько распространенными, что они начинают проникать в реальность. Будь все эти мифы правдой, мир программирования напоминал бы когорту 20 летних гиков, использующих свои высокие математические навыки для того, чтобы кодить в любое время дня и ночи. Если вы работаете в этой сфере, вы вероятнее всего знаете, что это вовсе не так. Однако, даже сами разработчики склонны верить некоторым предрассудкам. Давайте разбираться.

    1. Хорошие разработчики работают круглосуточно


    Вопреки нежеланию поддаваться стереотипному мышлению, в голове сразу же возникает образ парня с заспанными глазами и энергетиком в руках, как неизменным атрибутом любого программиста. Да, доля правды в этом есть – иногда приближающийся дедлайн требует жертвовать сном, особенно если речь идет о стартапах. Тем не менее, это не всегда так.

    К тому же, всем давно известно, что нехватка сна не увеличивает производительность, а затормаживает процесс. Мало кого устраивает такое положение вещей, ведь у многих разработчиков есть семья, друзья и их личные дела, которым они с большей вероятностью посвящают свое свободное время. Вместо культивирования этой идеи, сообществу программистов стоит поискать другие пути улучшения рабочего процесса и сосредоточиться на постановке целей, следуя Agile методологии. Мало кого устраивает работа «на износ», и это касается не только программистов.

    2. Чем больше людей проверит код, тем меньше багов


    Придуманный Эриком С. Реймондом афоризм «при достаточном количестве глаз, все ошибки лежат на поверхности» подразумевает наличие преимущества у открытого исходного кода, поскольку любой разработчик может просмотреть его и исправить допущенные ошибки. В реальности все не совсем так, потому что у программ с открытым кодом больше пользователей, неспособных исправить ошибки в коде, нежели людей, готовых внести свой вклад. Проще говоря, у семи нянек дитя без глазу. Лучшим решением в такой ситуации будет задействовать сконцентрированную на проблеме команду с хорошим ПО для отслеживания ошибок.

    3. Математические навыки определяют навыки разработки


    И да, и нет, поскольку нельзя сказать однозначно, какие способности станут определяющим фактором в вашем профессиональном росте. Склонность к математике не дает гарантий стопроцентного успеха, как и ее отсутствие не ведет к провалу. За исключением гейминга, большинство разработчиков используют только базовую алгебру и статистику, с целью выяснить эффективность кода, но и здесь задействованы именно фундаментальные знания.

    4. Разработчики – гении


    Не нужно быть гением, чтобы быть программистом, достаточно иметь мотивацию и способность учиться. Ошибки – неотъемлемая составляющая профессионального развития, их допускают даже гениальные разработчики. Важно лишь уметь трансформировать их в полезные уроки, которые позволят вам усовершенствовать свои навыки.

    5. Достаточно освоить что-то одно


    Мир программирования меняется со скоростью света, а значит, вам всегда будет что изучить. Овладев только одним языком, рано или поздно вы застрянете в тупиковой ситуации, которая потребует гибких решений. Прекратив образовываться, вы придете к стагнации и перестанете быть конкурентоспособным, поэтому будьте готовы, что самосовершенствоваться вам придется на протяжении всей вашей карьеры.

    6. Язык Х лучше


    Правда в том, что не существует одного всемогущего языка для всего разработки. Каждый язык заполняет особую нишу в этой среде и предназначен для определенных целей. Для разработки интерактивного ПО разработчик с большей вероятностью использует JavaScript, а для чего-то, ориентированного на скорость выполнения задачи — С++. Споры о превосходстве одного языка над другим просто напросто неуместны, потому что каждый из них ориентирован на конкретные задачи, которые не имеют ничего общего с личными предубеждениями.

    7. Овладеть языком можно за несколько недель


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

    Проведите параллель между работой программиста и работой врача: неопытный хирург не сможет провести успешную операцию без хорошей практики за плечами, как и программист не напишет сложный код без потраченного времени на изучение всех аспектов. Другими словами, хороший разработчик нуждается в наработке мышечной памяти так же сильно, как и хирург.

    8. Выход продукта в продакшн = конец работы над проектом


    В реальности работа над программным обеспечением редко бывает окончательно завершена. Конечно, руководству и разработчикам хочется верить, что созданное ими большое, многоуровневое ПО будет работать исправно очень долгие годы. Однако, с течением времени могут появляться новые неполадки, которые необходимо будет исправлять, а приложения изменятся и потребуют добавления новых функций, так что этот процесс бесконечен. Нужно помнить о затратах на поддержку и обслуживание, а также вкладываться в развитие инноваций для сохранения конкурентоспособности.

    9. Программирование — это просто написание кода


    Многие ошибочно полагают, что разработчики просто трансформируют идеи в код, без понимания сути решений, принимаемых в процессе его написания. Это большое заблуждение, потому что на каждом этапе разработчикам приходится формировать абстрактные решения проблемы и предугадывать возможные баги еще до их возникновения, а это требует глубоких познаний и понимания задачи. Помимо прочего, им приходится сталкиваться с множеством нефункциональных требований и провальных дизайнерских решений, и только хорошие разработчики могут отслеживать их и доходчиво доносить до команды, самостоятельно принимая более мелкие решения.

    10. Программирование – не творческое занятие


    Такой стереотип чаще всего основан на поверхностных представлениях людей, далеких от этой сферы, ведь написание кода, алгоритмы и прочие моменты из мира программирования кажутся простому обывателю чем-то чуждым творческой деятельности. Да, фундаментом программирования без сомнений можно назвать логику и научно-техническую область знаний, но это не отменяет его творческую сторону. В какой-то степени это можно назвать формой искусства, потому что многие разработчики стараются оформить код красиво, структурировать и сделать его чище. Это ни что иное, как творческий процесс.

    11. Разработчики обладают низкими социальными навыками


    По мнению многих людей, программисты — это одиночки, готовые провести все свободное время наедине со своим компьютером, и как только дело доходит до социальной коммуникации, они теряют свою сообразительность и стремятся закрыться от внешнего мира. Этот миф можно связать с самым первым пунктом.

    Однако, должность программиста, впрочем, как и любая другая, не сделает вас нелюдимым социофобом и вряд ли скажется на чертах характера. Поддаваясь этому стереотипу, многие менеджеры взаимодействуют с разработчиками таким образом, что их коммуникативный вклад недооценивается. Каждый разработчик – отдельная личность со своими внутренними особенностями, а тот факт, что им нравится писать код, не означает, что они боятся людей.

    12. Молодые разработчики считают себя лучшими специалистами


    Может быть, все дело в возрасте, но в начале карьеры многие разработчики склонны думать, что они лучше своих опытных коллег. Они освоили новые технологии, которые, по их мнению, более продуктивны и, в свою очередь, более ценны, чем использование старых платформ. На самом деле, многие разработчики изучают новые технологии даже когда взрослеют (а иначе трудно выдерживать конкуренцию и оставаться востребованным специалистом). А недавно получившие образование выпускники часто упускают из виду важный фактор: глубину и широту опыта, который приходит только со временем.

    13. Программирование – это скучно


    Стали бы вы посвящать свою жизнь тому, что кажется вам скучным? Ответ очевиден, каждый сам определяет сферу своих интересов. Программирование может быть не менее увлекательным, чем любые другие занятия, ведь это смесь архитектуры, математики и языка. Люди, считающие разработку скучным, не понимают всех тонкостей. Но разработчикам известно, что разработка – это непрекращающееся обучение, поиск эффективных решений и возможность ощутить себя создателем чего-то важного и полезного. Разве это может быть скучным?

    14. После 35 карьера разработчика заканчивается


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

    Это не значит, что разработчики полностью уходят из программирования после 35. Многие переходят на руководящие должности или создают собственные компании. Другие продолжают учиться и развиваться с любовью к своему делу на протяжении всей своей карьеры, это лишь вопрос желания получать актуальную информацию и следить за происходящими изменениями.

    15. Разработчики — это товар


    Часто люди думают, что чем больше строк кода пишет разработчик, тем он продуктивнее, но разработка — это не укладывание кирпича. Глупо нанимать более дешевых программистов и ожидать, что работа будет сделана так же хорошо. Разработчики — это прежде всего люди. У каждого из них свои особые навыки, личностные особенности и багаж знаний. Как и в случае с языками, в некоторых проектах программисты могут проявить себя лучше, чем в других, что в свою очередь будет влиять на эффективность процесса разработки.

    Заключение


    Мне будет интересно услышать о нелепых стереотипах, с которыми вам доводилось столкнуться за время своей практики (а их, я уверен, было не мало). Оставляйте свои варианты в комментариях.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 21

      +3

      Любят шерстяные свитеры, хотя это может больше к системным администраторам относится.


      Любители новых трендовых технологий (rust, go, electron, фреймворки модные и т.п.) обязательно пьют смузи.

        +2
        … и катаются на гироскутерах/самокатах :)
          +1
          Любят шерстяные свитеры, хотя это может больше к системным администраторам относится
          Можно подумать, многие знают разницу
          0

          Я предпочитаю керосин.

          0

          "Чем больше людей проверит код, тем меньше багов"
          Но ведь такая формулировка корректна, разве нет?


          Правда далее в тексте по этому пункту почему то обсуждается открытый исходный код, что не совсем относится к озвученному 'мифу' (хотя, бы потому, что 'проверит код' != 'может посмотреть код')

            0

            Я думаю, речь о том, что если ошибка зарыта в глубине, то эффективность проверки кода будет явно зависит не от количества, а качества проверяющего. А если же ошибка на поверхности — да, с наибольшей вероятностью ее обнаружит каждый из проверяющих.

            +1
            Как-то сильно смешались всё в абстрактных разработчиков. Существует множество разных разработчиков. Например, devops — это разработчик или кто? Нужны ли ему математические навыки или языки программирования?

            Овладеть языком можно за несколько недель.
            Не хотелось бы убить энтузиазм новичков, но пары недель будет недостаточно.

            В действительности, простенький язык вроде си, шарпа, паскаля, лиспа или ассемблера можно выучить за 2 дня. Первый день — выучить спецификацию и закрепить её на примерах, второй день — повторить закреплённый материал.

            Другое дело, что новички, как правило, не разбираются в алгоритмах, структурах данных, паттернах проектирование и т.д. и т.п. Но это всё не относится к языку. Например, можно освоить управление автомобилем за 10 минут, однако для успешной езды необходимо выучить пдд и местную дорожную этику.
              0

              Простенький язык типа C# ну да ну да

                0

                После десятка уже выученных языков C# уже может показаться достаточно простым.

                  0

                  Десяток выученных языков? Ну-ну
                  C# лаконичный и «комфортный» язык, но спецификации у него к 8 версии весьма обширные и освоить их быстро не выйдет.

                    +1

                    Спецификация может быть обширная, но в реальности используется понятный сходу сабсет без лишней магии

                      0

                      Ну да, ага.

                        0
                        Да причем тут синтаксис? Его вообще можно не учить и копипастить с готовых исходников. А вот инфораструктуру фиг вы и за полгода выучите.

                        Я помнится так патч для чего-то опенсорсного на Perl делал. Не заня синтаксиса Perl.
                  0

                  Спеки мало, чтобы синтаксис проник в подкорку еще пару недель надо, а уж всякие особенности и баги намного больше времени жрут.

                    0

                    Для новичка выучить синтаксис — это ещё не значит стать программистом.
                    А как же основы? Алгоритмы, структуры, ООП, паттерны?
                    И это только чтобы начать писать код, по хорошему ещё и опыт нужен, чтобы понимать, когда и где какие косяки могут вылезти, и как лучше сделать, а как лучше вообще не делать, чтобы не отхватить проблем потом.


                    Основы за 2 недели, при всем желании, не освоить. А это значит либо у новичка уже должен быть какой-то бекграунд, либо для него это будет боль.
                    В любом случае мозг не сможет всё это понять и структурировать за 2 недели и без какой-либо реальной практики. Придется возвращаться к этому раз за разом, потихоньку штурмуя этот массив знаний, потихоньку продвигаясь дальше, понимая всё больше и больше.


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

                      0
                      А как же основы? Алгоритмы, структуры, ООП, паттерны?

                      Другое дело, что новички, как правило, не разбираются в алгоритмах, структурах данных, паттернах проектирование и т.д. и т.п. Но это всё не относится к языку.

                      Читайте до конца… Речь не о программировании, а о языке программирования — так написал автор статьи, а не я.

                      Многие из тех, кто утверждают, что программирование это просто и быстро, ошибаются, воспринимая требуемые усилия через призму собственной профдеформации

                      Ещё раз, я пишу про язык, а не программирование. Касательно последнего вы правы: геймдевам очень тяжело играть в игры, зная 5-10 паттернов на победу.
                    +3
                    16. Каждый программист/сисадмин/любой, кто работе сидит перед компьютером, может починить чайник, велотренажер и телевизор.
                      0

                      Разве это не так?

                      +1
                      Каждый программист знает обо всех языках и технологиях на свете, а если нет, то он плохой программист
                        +1

                        Когда доходит дело до знакомства и заходит речь о роде деятельности, все как в один голос повторяют одни и теже стереотипы "не похож на программиста, мол программисты с очками должны быть и социофобами" на деле все в точности наоборот и очень много знакомых по эту сторону барикад так же не соответствуют и близко этим мифам)
                        Больше от человека это зависит
                        Тем более рабочие мониторы уже дай бог менее вредные для глаз, чем их "толстые" прадеды

                          0
                          10) Программирование – не творческое занятие

                          Программирование давно достигло того уровня развития, когда в нем есть и ремесло (совершенно не творческая рутина) и искусство (то самое творчество).
                          И большинство программистов в наше время занимается исключительно ремеслом.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое