программирование это легко в чем проблема

Программирование — это сложно

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

Программирование легкодоступно

Когда глупые люди говорят, что программировать просто, что им может заниматься каждый, они на самом деле имеют ввиду доступность сферы программирования. Если у вас есть простейшее средство доступа к Интернету, то достаточно легко получить доступ к ресурсам для изучения. Ни одна из наук не доступна настолько, как компьютерная наука, и большинство работ по ней выложено в открытый доступ — компьютерная наука процветает в Интернете, и хотя отдельные её ветви закрыты, большинство контента доступно свободно и процветает благодаря этой доступности. Вы можете скачивать компиляторы, редакторы, IDE, даже получить доступ к документации, обсуждать с другими людьми свои проблемы, и так далее. Это огромное сообщество, уровень гостеприимности и открытости которого несравним с любой другой наукой в истории человечества.

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

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

Программирование — это любопытное сочетание творчества и точных наук; но никто и никогда не говорил, что творчество — это «просто». Некоторые вещи легко осваиваются некоторыми людьми, другие сложны для понимания.

Некоторые аспекты программирования просты

Да, в этом можно не сомневаться: отдельные аспекты просты. Существуют вещи, которые вы можете сделать, в конечном итоге получив, например, скелет приложения для блога. Любой (под опытным руководством) может сделать профессионально выглядящую веб-страницу за первые часы изучения HTML. Можно легко задать вопрос и найти решение на StackOverflow, можно запросто скопипастить решение на свои веб-страницы.

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

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

Большинство аспектов программирования сложно

Такова правда: если человек начинает делать нечто более сложное, чем простая веб-страница или простая демо-программа, всё становится сложным, и чем больше вещей соединяется воедино, тем более сложной и утомительной становится задача. И именно этого вам не скажет лжец, уверяющий, что «программирование — это просто». Решать программные головоломки сложно, особенно, когда они не задумывались как головоломки.

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

Самозванство и мошенническое позитивное мышление

Как часто вы слышали о синдроме самозванца? Если вы слушаете выступление на тему «программирование — это просто», то, вероятно, слышали о нём, и часто на эти темы говорят одни и те же люди. Синдром самозванца — это когда человек чувствует себя недостаточно компетентным для работы, за которую ему платят, и ощущает, что он не заслужил свой успех; но слышали ли вы о случаях, когда люди на самом деле сталкивались с кажущимся непродуктивным топтанием на месте, при котором им приходится исправлять или совершенствовать результаты собственной работы, или когда они не могут быстро найти ответ на Stack Overflow. Чаще всего я слышу о самозванцах в программировании, когда их терпение лопается, когда они больше не могут соответствовать нереалистичным стандартам, которые они создали для себя, когда они не могут двигаться вперёд со скоростью, к которой привыкли. (У меня есть собственные претензии к синдрому самозванца, но об этом в другой раз.)

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

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

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

И чтобы создавать ложный имидж в этой сфере, даже не нужно быть абсолютным лжецом. Достаточно играть с чувствами людей. Например, говорить им нечто ошибочное, что люди хотят слышать. Нужно подобрать ключевые слова, которые будут льстить большинству аудитории; «программирование» — это одно из них, потому что программирование — крайне размытое понятие, а получить звание «программист» желают многие, так же, как и звание «сениор», к которому стремятся люди, мечтающие стать сениорами в свои двадцать с небольшим лет. Нужно найти ярлык, лестный вашей аудитории, и применить его к ней. Именно так мы получаем лозунг «программирование — это просто» (это не так), или «HTML — это язык программирования» (это не так), или «программирование — это мастерское пользование поиском в Google/StackOverflow».

Чтобы подчеркнуть своё утверждение, затем вы демонстрируете врага. «Не позволяйте никому говорить, что это неправда» — простой, но эффективный способ внушить аудитории образ мышления «вы против враждебного мира». Неплохо также использовать словечко «гейткиперы», ведь рассуждения о привилегиях и людях, охраняющих их от аудитории, привлекательны. Они не дают вам подняться, они несправедливы, они лгут о трудностях, они заставляют вас заниматься сложной, скучной работой. Такая методика применима не только к программированию, это простая техника манипуляции толпой — если есть враги, то это простой способ сплотить аудиторию против них. Но какой бы ни была эта методика, основная задача манипулятора — размытость содержимого сообщения, чтобы было сложно его опровергнуть.

Давайте обсудим мои примеры. На объяснение лозунга «программирование — это просто» мне уже понадобилось 1385 слов, а статья ещё не закончена. Объяснить «HTML — это язык программирования» в чём-то сложнее из-за нечёткого значения термина «программирование». Строго говоря, HTML не является реальным программированием, это язык представления разметки. Он является неполным описанием того, как выглядит и что содержит веб-страница. HTML — обязательный для любого связанного с вебом проекта инструмент, но он не используется изолированно, программирование происходит не на нём. Но если кто-то говорит вам, что HTML — это язык программирования, то обычно защищает своё заявление тем, что гейткиперы ограничивают значение слова «программирование». При этом говорящие это редко заинтересованы в изучении истинного значения собственных слов. Как я говорил, «программист» — это звание, и подобно другим почётным званиям, оно заставляет людей, особенно некомпетентных, защищать его.

Иллюзия «я могу сделать то же, что и ты»

С заявлением «программирование — это мастерское пользование поиском в Google/StackOverflow» всё сложнее. Потому что это и правда, и ложь одновременно. Мастерское владение поиском в вебе — очень важный навык современного разработчика. Я учился в мире, где этого ещё не было, где не существовало Google, где человеку нужно было изучать документацию и иногда читать сотни страниц, чтобы понять, как всё работает. И это если документация была; в противном случае приходилось только пробовать, терпеть неудачу и пробовать снова. Однако сегодня пробовать не нужно, существуют готовые тулкиты, библиотеки или языки программирования (и даже их коммерческие версии), чётко заточенные на поиск ответа. Документация теперь предназначается не для чтения пользователями, а для индексации поисковыми движками и для того, чтобы люди работали с ней при помощи поисковых движков. Однако больше всего современные инструменты полагаются на сайт ответов Stack Overflow.

На самом деле, зависимость людей от Stack Overflow — это, вероятно, самое пугающее, что произошло с сообществом программистов за последние 10 лет. Stack Overflow — это мощный костыль, мешающий вам двигаться самостоятельно, потому что слишком легко искать ответы на нём. А когда люди перестают мыслить самостоятельно, то начинают писать неразумные вещи.

Если вы, как новичок, смотрите, что делают опытные разработчики, то это выглядит простым. Кажется, то, что делают они, может сделать каждый. Это выглядит совершенно посредственно. Существует миф о суперпрограммистах, делающих всё по-своему. Голливуд представляет их как людей, вводящих код со скоростью света, потому что единственный способ продемонстрировать высокий навык персонажа в своём деле — показать, что он справляется с работой быстрее, чем кто-либо другой (Голливуд показал бы человека, лучше всего отсчитывающего десять секунд, как того, кто справляется за пять). Смысл в том, что это выглядит просто, но на самом деле это не так. Потому что опыту новичка не хватает кругозора, сосредоточенности на действительно важном. Новичку научиться считать до десяти мешает только незнание синтаксиса цикла, для опытного разработчика синтаксис — это то, что замедляет его реализацию выполнения операций с коллекцией отфильтрованных данных.

Утверждение «программирование — это просто» не даёт людям развиваться

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

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

— Я понимаю задачу этого поста и знаю, что он был написан не из злого умысла, однако учиться кодить сложно и это утверждение «писать код может каждый»/«кодинг — это не так уж сложно» заставляло меня чувствовать себя тупой, когда я была новичком.

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

Автор первого твита сказала что-то в духе «люди считают меня умной, потому что я программист» и «главное в гуглении и исправлении своих ошибок». Но на самом деле программирование не об этом, и такой преувеличенный, ограниченный взгляд говорит мне, что её опыт в разработке ПО достаточно мал. И знаете, что пугает? Она работает над сайтом под названием «thecodinginterview.com», то есть является популярным источником советов для начинающих. И я даже не хочу начинать тему того, насколько аморально это мошенничество с «coding interview».

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

Установка «программирование — это сложно» не должна быть пугающей

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

Я знаю, что у многих есть одержимость «достигаторством», они хотят овладеть программированием, стать сениором в 22 года. Я удержался от преследования столь глупой затеи. Я знал, что программирование сложно и что достижение моей цели может быть невозможным. В каком-то смысле, так и есть: я изучал программирование, чтобы уметь писать собственные игры, и спустя более полувека я так и не создал ни одной. Но это дало мне чёткое понимание масштаба моего дела.

Я говорю это не для того, чтобы демотивировать начинающих. Статья всего лишь должна подготовить их к тому, что ждёт их впереди. Так что если вы хотите сказать что-то новичку, то скажите следующее: «В программировании есть простые и сложные вещи. Если ты будешь достаточно терпелив, то со временем сложные вещи станут интересными, а простые станут сложнее».

Но не говорите ему, что программирование — это просто. Это не так.

На правах рекламы

Заказать у нас сервер очень просто! Воплощайте любые идеи и проекты с помощью наших VDS с мгновенной активацией на Linux или Windows. Сервер готов к работе через минуту после оплаты!

Источник

Почему научиться программировать не так трудно, как вы думаете, или Разрушители мифов об изучении программирования

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

Программирование — это сложно?

Самый распространённый миф о программировании — программирование требует огромных интеллектуальных возможностей. Чтобы начать писать код, не нужно быть семи пядей во лбу: достаточно иметь мотивацию, интерес и дисциплину. Если вы открыты для нового и готовы применять приобретенные навыки на практике, то вы научитесь программировать. Поможет вам, например, интенсив «Основы программирования», который за 2 часа даст вам базовую теорию, необходимую для понимания основных современных языков программирования, и первый опыт написания программы. Но для сложных задач также может потребоваться знание из специфических отраслей.

Но у меня не очень хорошо с математикой, а её во всех вузах полно…

Следующее заблуждение заключается в том, что знание математики — предмет первой необходимости для программистов. На самом же деле для программирования достаточно знать базовые понятия из курса школьной математики. Но только на первых порах: дальнейшее усложнение задач может потребовать знания тонкостей в определенной предметной области. Например, для верстки сайтов или написания мобильных приложений вам хватит и тех простых знаний, которые вы получили в школе. Однако для Data Science и научного программирования требуются знания из статистики, теории вероятности и матанализа, которые постигнуть в одиночку уже сложнее — но и тут следует помнить, что большую часть сложных вещей уже реализовали, а вам понадобится только использовать их.

Но мне ещё / уже X лет, наверно, рано / поздно начинать?

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

А ещё я девушка…

Странно слышать, что женщинам не место в программировании, в то время, как первым программистом была женщина, Ада Лавлейс, которая составила набор инструкций для вычисления чисел Бернулли на машине Беббиджа. Конечно, женщина, желающая посвятить себя программированию, должна быть готова к усмешкам со стороны коллег-мужчин и общества в целом, мол, «не женское это дело». Но в то же время нет никаких объективных причин женщине не становиться программистом — все зависит только от ее желания.

Видел я этих ваших программистов: сидят дома за компьютерами, раз в месяц за бичпакетами в магазин выходят…

Вспомните программистов из фильмов прошлого: сутулый человек непонятного пола в очках, неопрятной одежде, ведет странный образ жизни, да еще и питается чем-попало. Это далеко от истины: программисты ничем не отличаются от специалистов в других технических отраслях в этом отношении. Сюда же можно отнести миф об асоциальности программистов: программисты часто работают в командах, а в команде навык общения с людьми необходим. А ещё в команде необходимо знание полезных инструментов, например, Git — познакомиться с ним можно, посмотрев бесплатный видеокурс «Git. Быстрый старт».

Сидеть и писать код каждый день — жутко скучно, не так ли?

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

Ладно, убедили. Но как лучше учиться?

Образовательные интернет-площадки сделали получение знаний значительно проще, но вместе с тем и исказили мировоззрения новичков. Начинающие часто думают, что после прохождения курсов по той или иной технологии они могут закончить свое обучение. Такие мысли очень опасны. При любых обстоятельствах нужно быть в курсе событий. Рынок не стоит на месте: сегодня ты востребован, завтра твои знания уже никому не нужны.

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

И как же быть?

К счастью, есть компромиссы. Многие университеты позволяют удалённо изучать программирование, математику и прочие необходимые программисту дисциплины на онлайн-площадках вроде Coursera и Udacity. Нельзя не отметить и Geek University, платный онлайн-университет от Mail.Ru Group, за год обучения в котором вы изучите все тонкости Android- или веб-разработки на специальных факультетах и получите не только теоретические, но и практические навыки.

Вообще онлайн-курсы программирования — относительно новое веяние, но оно уже успело стать популярным. Теперь вы стоите перед выбором курса. Но какой выбрать? Не стоит полагаться только на рекламу и советы: выберите курс с тем преподавателем, который, на ваш взгляд, хорошо объясняет материал. Попробуйте несколько вариантов. Курсов много, все они разные, для разных аудиторий: вам остается только выбрать.

Посоветуете что-то конкретное?

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

Те, кто с детства хотел разрабатывать игры, тоже найдут себе курс по душе. Для разработки игр отлично подходит язык C#, на котором написан популярный движок Unity. Начать можно с C#, а потом перейти к более плотному изучению самого движка. Однако любой вопрос лучше изучать структурированно, поэтому мы советуем обратить внимание на курс «Разработчик игр», в рамках которого вы за 4 месяца изучите все тонкости этой профессии, а потом ещё и поучаствуете в командной стажировке.

Чтобы стать гитаристом, достаточно тратить 30 минут в день? Чтобы стать спортсменом, достаточно просто поотжиматься полчаса? Нет и нет. Забудьте о том, что C# можно выучить за 15 минут, JavaScript — за 3 минуты, а HTML — за наносекунду. Если у вас есть желание сделать программирование своей профессией, не думайте, что малая отдача даст вам большой результат. Знакомьтесь с разными направлениями разработки и не бойтесь изучать что-то новое.

Источник

Почему программировать легко

Прочитал я тут на Хабре отличную статью «Почему программировать так тяжело?» и сразу проникся к ней симпатией. «Боже мой!» — подумал я. Наконец-то можно показать толковый и взвешенный текст некоторым моим знакомым, считающим меня высокооплачиваемым бездельником, объяснить родственникам, что это за работа такая — «кнопки целый день тыкать» и предоставить защитившим кандидатские диссертации друзьям доказательства того, что и я тут тоже не коровам хвосты кручу в рабочее время. «Какая прекрасная статья!» — думал я. Наконец-то кто-то понял всю суть работы программиста и объяснил её сложность понятным языком!

И лишь одной малюсенькой детали в этой статье не хватало. Правды.


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

Для начала разгромим все аргументы изначальной статьи. Это не очень интересно, поскольку все они проистекают из одной неправильной предпосылки и опровергаются её же правильной формулировкой, но нужно же с чего-то начать. Вот эта предпосылка, на которой построена вся та статья: «Мечта программиста — вообще не думать головой, лучше всего — ничего не делать«.

Блин! Автор той статьи действительно так думает! Он считает нас ленивыми (это ладно), но при этом ещё и нелюбознательными (а вот это уже непростительно!). Из этого он делает вывод, что нам не нравится думать, не нравится творить, не нравится экспериментировать, делать окружающий мир лучше! Вы только послушайте!

С этими дополнительными условиями программирование становится крайне сложным.

Данный текст смахивает на жалобы сапожника на то, что каблуки на ботинках стаптываются и их приходится менять или на жалобы дантиста на то, что у людей болят зубы и их приходится лечить. Блин, всё выше описанное — это наша работа, это наш хлеб, это то, для чего мы нужны человечеству, это добавленная стоимость, которую мы производим, польза от нас, то, на что мы учились. Я не знаю даже как ещё точнее это описать. Работа программиста — делать мир лучше, проще, безопаснее, быстрее, надежнее. Решать проблемы других людей. Да, написать «превосходную программу» — наша работа! И да, её нужно «превосходно протестировать» и да, ей нужно предоставить правильные исходные данные, и если для их получения нужно написать ещё одну программу — конечно же, нужно взять и написать её!

«Программы нужно поддерживать» — говорит исходная статья. Ну конечно, нужно! Но в чём здесь сложность? Наоборот, это счастье! Я тут вычитал одну цитату: «Hardware eventually fails. Software eventually works«. И ведь правда: большинство произведённых товаров и услуг с течением времени становятся хуже (увядают, стареют, ржавеют, портятся) и только наша программа день ото дня становится только лучше — тут поправить один баг, тут второй, здесь добавим фичу, а тут перекрасим кнопку. Наши творения живут! Мы вдыхаем в них жизнь, растим их, поддерживаем. Никто ведь не считает, что поддерживать, к примеру, ребёнка, когда он учится ходить — это плохо? Мы ведь хотим, чтобы он научился, помогаем ему. Так почему поддержка программ воспринимается как что-то плохое?

«Нам приходится исправлять проблемы, которых вообще не должно быть» — говорит та статья. Бр-р-р-р, постойте. А что, бывают проблемы, которые вот прямо обязаны быть? Все проблемы нежелательны, а то, что эти проблемы приходится исправлять нам — спасает от них пользователя (см. выше пункт о смысле работы программистов). Более того, неожиданные проблемы не дают заскучать, тренируют мозги. Кому нравится решать каждый день одни и те же предсказуемые проблемы — может идти в дворники или землекопы.

«Решение проблем без получения новых знаний» — пеняет нам публикация. Я себе представить не могу, как можно решить проблему без получения новых знаний. Как минимум по ходу решения такой проблемы мы получили знания о том, как решать такие проблемы без получения новых знания — а это уже новые знания и вполне себе полезные (да здравствуют взаимоисключающие параграфы, да!). Кроме того, никто не мешает разбираться в интересующих проблемах действительно глубоко. Да, на это не всегда есть время на работе, но вы что думаете, братья Райт разбирались в нюансах аэродинамики строго 8 часов в день в рабочее время, или Люмьеры пилили свой кинопроектор за казённую зарплату? Нет! Хочешь быть профи, мастером, хочешь чего-то добиться — работай над собой!

Больше ничего в той статье не написано, поэтому забудем про неё. Перейдём к чистым преимуществам программирования.

Программированию легко учиться
Чего только сегодня нет! Есть ВУЗы с профильными профессиями, есть информатика в школах, есть книги, есть онлайн-курсы, есть интернет со всей его массой информации, есть специалисты, у которых можно спросить совета, есть фирмы, куда можно устроиться на практику. Дети в младших классах могут изучать Scratch, бухгалтера могут осваивать макросы экселя и дебри одинэски. Да в конце-концов самоучители «что-то там за 24 часа» продаются в каждом гастрономе! Да, много чуши и да, это всё нужно брать, читать и пробовать, но если сравнить ситуацию с той, которая была 20 лет назад, когда отсутствие нормального ПО гармонично дополнялось отсутствием книг, железа, преподавателей и интернета — да мы живём в раю! Кривая обучения программированию невероятно плавная, тут нет никакого «как нарисовать сову» за 2 шага. Любой учебник начинается с print(«Hello, world») и ведёт нас за ручку через все эти операторы условий, циклы, функции, классы и т.д. На каждом шаге мы можем что-то запустить, что-то проверить, поставить брейкпоинт, модифицировать код в экспериментальных целях и т.д.

Программирование — логично и предсказуемо
2 + 2 = 4. Операция OR имеет вот такую таблицу истинности. Цикл for выполнится столько раз, сколько задано вот в этом условии. И это работает всегда! Нет никаких исключений вроде «а по субботам это не работает», если только мы не создадим эти исключения сами. Условный оператор if будет работать одинаково на всех платформах, во всех языках и на любом железе, если только мы не создадим специально такие обстоятельства, когда это будет иначе. Не нужно ничего брать на веру — всё можно доказать, проверить. Узнав что-то — можно быть уверенным в своих знаниях. Нет никакой магии, нет никаких эмоций, всё работает «честно».

Программисту не нужно глубоко знать математику
Мы любим с умным видом заливать о важности изучения математики, дискретки, теорвера, статистики, квантовой механики и теории струн. Хватит городить эту чушь! 95% программистов из математики используют 4 арифметических действия, проценты\корни\степени да чуть-чуть помнят что такое логарифмы и матрицы. Всё! Оставшиеся 5% — разработчики научного софта, а значит математику можно считать не необходимым знанием, а их предметной областью (так же как разработчику софта для обсерватории пришлось бы изучать астрономию). В общем, среднего образования на уровне шестого класса достаточно с головой.

Программисту не нужно знать все виды программирования
Уже давно не бывает «универсальных программистов». Нам не нужно знать всего. Есть фронтэнд разработчики, бэкэнд разработчики, есть сетевые программисты, Android и iOS девелоперы, есть спецы по геймдеву и по базам данных, есть разработчики встраиваемых систем, да куча всего есть! Не нужно тратить жизнь на изучение всех языков, операционок, фреймворков и паттернов. Просто выбери то, что нравится!

Программисту можно учиться всю жизнь
Когда-то в детстве, отдыхая в деревне у бабушки, я помогал местным ребятам пасти коров. Был среди них и «профессиональный пастух» из местного колхоза. Он пас коров уже 40 лет. Помнится, мне очень понравилась эта профессия — она изучается до уровня Junior за 2 часа, и даже уровень Senior (тренировка собаки-пастуха, основы ветеринарии) берётся за год-два. А дальше всё, следующие 38 лет можно делать одно и то же. Сейчас я вспоминаю это и прихожу в ужас. Люди попадали в ситуацию, когда им всю жизнь вообще не нужно было использовать мозг.

У программистов всё иначе — мы можем учиться каждый день. Нам платят, за то, что мы учимся каждый день! Весь потрясающий процесс получения новых знаний, экспериментов, решения учебных, а затем и практических задачек — это наша работа, наша жизнь. Что может быть прекраснее?

Мы сами создаём свои инструменты
Люди мало каких профессий создают свои рабочие инструменты сами. Чаще всего они пользуются чем-то, созданным другими людьми согласно их представлениям о том, как эти инструменты должны выглядеть и работать. Программисты могут сделать софт для себя, и реально делают это. Вся история развития Linux, многие opensource инструменты тому доказательство. Даже проприетарные средства разработки создаются людьми, которые реально понимают о чём идёт речь и сами каждый день пользуются тем, что производят. Мы летим вперёд на поезде, который перестраивается на ходу, причём людьми, которые сами едут на этом же поезде и стремятся делать это быстро и комфортно.

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

А теперь о том, почему программировать не только легко, но и чертовски приятно!

Мы меняем этот мир
Более того, мы меняем его больше, чем кто бы то ни было другой. Всё, буквально всё нынче зависит от компьютеров, разрабатывается на компьютерах, контролируется компьютерами. Некоторые профессии полностью вытесняются компьютерными программами, другие — гармонично ими дополняются, третьи полностью переходят в виртуальный мир. И это всё делаем мы, программисты! Я нажимаю несколько кнопок — и что-то происходит. Что-то, казавшееся фантастической сказкой ещё пару десятилетий назад. А теперь это работает. И это сделал (ну по крайней мере частично) я!

Мы создаём новые миры
Обычные люди живут в обычном мире, в нашей реальности. Программисты живут в той же вселенной чистого творчества, где и художники, поэты, писатели, режиссёры. Наш мир в нашей голове и он прекрасен! Вещи в нём работают просто и логично, воздушные замки слоёв архитектуры и абстракций строятся без всяких усилий, и так же перестраиваются (а иногда и рушатся). Более того, всё это, в отличии от результата тех же поэтов с писателями, превращается не только в слова на бумаге, но и в реально работающие в настоящем мире программы и железо. Я не только могу представить себе танцующего робота, я могу написать для него программу и получить этого робота в реальности! Творение в самом чистом виде!

Мы любим нашу работу
Не знаю как вы, а я свою работу люблю. Сложная она, вы говорите? Да ладно! У нас всегда есть и простые задачи. У нас всегда есть возможность решить сложные задачи путём разбиения на более мелкие простые. У нас есть лень, помогающая решать задачи наименее затратным способом. У нас есть тестировщики, поправляющие нас, когда мы ошибаемся. У нас иногда есть благодарные пользователи. У нас всегда есть неблагодарные пользователи, не дающие нам превратиться в бездельников и лежебок. У нас часто есть работодатели, старающиеся сделать нашу работу комфортнее. У нас есть наши победы и свершения. У нас есть ещё столько интересного впереди!

P.S. При написании этой статьи меня не покидало ощущение дежавю. Ну вот крутилось что-то на задворках сознания, какая-то неуловимая мысль. И только по написанию я осознал… что уже писал такую статью 3 года назад! «Это катастрофа!» — подумал я. «Надо рассказать об этом народу на Хабре, пусть поржут с меня дурака» — подумал я.

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

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • программирование это какой факультет
  • Программирование эбу автомобиля с нуля
  • Программирование эбу автомобиля обучение
  • Программирование что это такое простыми словами
  • Программирование что это такое и для чего нужно

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии