Программирование искусство программисты творцы


Содержание

Библиотека Интернет Индустрии I2R.ru

Малобюджетные сайты.

Продвижение веб-сайта.

Контент и авторское право.

Программирование как высшая форма творчества

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

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

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

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

Путь к программированию

Чем руководствуется человек, выбирая для себя профессию?

Во-первых, личными предпочтениями. Для программирования нужен определенный склад ума, а если уж мы говорим о программистах-разработчиках программного обеспечения, а не об «упертых в науку» зашоренных теоретиках, сформулировать личные предпочтения само по себе является довольно интересной и нетривиальной задачей. Знаете ли вы, что программисты чаще обладают техническим складом ума, а не абстрактным, как, например, математики, физики и прочие? И что технический склад ума встречается чаще у писателей, музыкантов, переводчиков, а вовсе не у механиков, как это следует из названия?

Так мы приходим к пониманию того факта, что слово «программист» вовсе не является синонимом определения «прикладной математик», хотя многие и не чувствуют разницы между этими понятиями. Например, Пол Хольцер (Paul Holtser — прим пер.), мой хороший приятель, говорит буквально следующее: «Я не использую в своей работе практически ничего из изученного в университете. Математический анализ и прочая абстрактная математика не дают мне способов написания элегантного и компактного кода программ. Возможно, для людей, поставленных перед необходимостью программирования узкоспециальных задач в области математики, эти знания могли бы пригодиться, но мы всё-таки работаем не над отображением трехмерных графических сцен, а занимаемся задачами другого уровня. Могу честно признаться, что занимаюсь программированием не с точки зрения практикующего математика. Напротив, я выполняю работу лингвиста — переводчика с повседневного языка на компьютерный, объясняя компьютеру, что и как нужно выполнить, чтобы прийти к желаемому результату».

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

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

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

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

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

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

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

Заниматься программированием сейчас прибыльно и престижно — и это не пустые слова.

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

Если бы программирование не носило в себе черт творчества, заниматься им было бы скучно. Представьте себе: восемь часов в день у вас перед глазами монитор, заполненный бесконечной чередой символов. Вам бы это наскучило, не правда ли? И речь здесь идет не о деньгах, а о той отдаче, которая помогает нам заниматься своей работой от отпуска до отпуска. Если бы программисты не чувствовали морального удовлетворения от своей деятельности, они бы просто вымерли.

Итак, почему я могу с уверенностью заявить, что программирование является творчеством? Потому, что в программировании мы используем стратегии, очень схожие со стратегиями литераторов (писателей, переводчиков). Известные НЛП-практики (могу привести в пример книгу «Applications of NLP» by Dilts, в которой есть статья «Creative writing») учат тому, как правильно формировать художественный текст и как оптимизировать (улучшить, упростить) сам процесс написания. Вы задумывались о том, что читающий книгу человек невольно уподобляется компьютеру, последовательно отслеживая мысль автора через все главы и параграфы? И о том, что, написав программный код, вы обеспечиваете на некоторое время компилятор (а чуть позже — и систему) занятным чтивом? Во всяком случае, ваш мозг давно знает и активно использует эту схожесть программирования и писательства.

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

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

Второе отличие я сформулировал следующим образом: «Программирование не направлено на душу потребителя». Программные продукты могут помочь вам в вашей работе, развлечь вас, связать с другими людьми, но они никак не скажутся на вашем душевном состоянии. (Если не говорить о курьезах вроде «психотерапевта» в редакторе Emacs и оставить в стороне случаи, когда программы работают некачественно, повергая вас в уныние.) Одним словом, программист творит как художник, а спрашивают с него как с ремесленника. По-моему, это золотая середина. А по-вашему?

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

И, главное, в программировании практически отсутствует плагиат. Смотрите сами: программист волен использовать многие библиотеки, которые есть «в открытом доступе». Он может работать с исходниками, написанными другими людьми. Он реализует свой продукт, базирующийся на чужих наработках (будь то наработки его коллег или плод труда программистов проекта GNU из Европы). Представьте себе художника, использующего чужие работы. Максимум, на что тот способен претендовать, — звание коллажиста, ремесленника от живописи. Программист, использующий стандартные библиотеки, пародией на такого «художника» отнюдь не является. Его работа самостоятельна и вполне значима и достойна.

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

Итак, путем сравнения программирования и других видов творчества мы пришли к тому, что означено в названии статьи: ПРОГРАММИРОВАНИЕ — ЛУЧШАЯ ТВОРЧЕСКАЯ СПЕЦИАЛЬНОСТЬ. (Тем не менее, в русском переводе статья называется несколько иначе. Но, думаю, автор мне простит. — прим. пер.)

Что же из этого следует?

Вернемся еще раз к проекту GNU. Разработка программных продуктов на основе чужих библиотек и программ, поставленная на поток — это ли не пример общности творчества программистов? Из их сотрудничества родилось несколько операционных систем и огромное количество прикладных программ, которые, кстати, и распространяются бесплатно. Последний факт я склонен считать своеобразным проявлением этики хакеров старой школы, которые подводили солидную морально-философскую базу под свой лозунг, требующий доступности любой информации для всех. Они отвергали модный в наши дни способ, когда команда разработчиков делает исходные тексты своих программ закрытой информацией, чтобы конкуренты не смогли воспользоваться алгоритмами и методиками, используемыми в этих исходниках. И, как следствие, качество программ было вполне приемлемым — даже на простеньких по нынешним меркам микрокомпьютерах с объемом ОЗУ не более 64 Кб (на PDF10, например, отлично работала UNIX).

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

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

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

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

Я надеюсь, что вопросы Хиллела послужат еще нескольким поколениям программистов. Я надеюсь, что к людям, двигающим вперед проект GNU присоединятся и другие. Я надеюсь, что настигший наше общество психологический кризис программистов-практиков разрешится Эпохой Возрождения.

Создатели параллельной реальности: что ждет программистов в мире, построенном программистами

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

Все мы — программисты?

Настоящий бум переживают сейчас сервисы обучения программированию — такие как Сodecademy. Они дают возможность учить множество языков с самых азов — вроде «Hello world!» — до нужных профессионалам тонкостей. Идея всеобщей программистской грамотности захватывает мир. Вплоть до того, что президент Обама призывает всех программировать, причем на собственном примере — буквально в декабре 2014 написал свою первую строчку кода на JavaScript. «Не просто играйте в игру, а создайте ее. Не просто скачивайте приложение, а помогите его разработать. Не просто играйте на телефоне, а запрограммируйте его», — воодушевляет американский президент. Еще больше, чем слова президента, мир вдохновил пример бездомного по имени Лео, который выучился программированию и запустил собственное приложение благодаря помощи 23-летнего разработчика, который просто хотел провести эксперимент.

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

Но есть несколько «но». Во-первых, никакая Сodecademy не научит программированию на действительно высоком уровне и решению по-настоящему практических задач. А чем дальше, тем сложнее становятся задачи. Во-вторых, как отмечают многие, превращение всех в программистов похоже на возврат назад во времени, когда экран компьютера выглядел как темная область с мигающим курсором, а не как эффектная и удобная область для виртуальной работы. Тогда — в 1980-х — каждый должен был быть немного программистом. Также как почти каждый советский автолюбитель должен был быть немного автомехаником. Но вот пришла пора более качественных машин — и желающих развивать навыки механика сразу поубавилось. Так что куда пойдет программирование — «в народ» или все дальше от него — пока сказать невозможно, но это важнейшая развилка, от которой сильно зависит, как будет выглядеть наш мир.

Облачное программирование

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

Сейчас с каждым годом возможности облачных технологий для программистов расширяются. Когда-то это были лишь стандартные сервисы вроде Amazon Web Services. Сейчас появляются полноценные платформы для кодинга в режиме реального времени прямо в облаке — даже в четыре и более руки одновременно. Такие как Cloud9, например. Это не просто удобный инструмент. Теоретически это идеальная учебная среда и почти полная замена работе в одном офисе.

Программирование девайсов

Сейчас львиная часть программистов работают с компьютерными программами и вэб-страницами. Очень быстро растет доля тех, кто программирует для мобильных устройств. И пока очень мало тех, кто работает с другими девайсами. Но рынки необычных гаджетов на подъеме, и есть ощущение, что в обозримом будущем наступит настоящий бум. Сейчас производители только нащупывают ниши — прежде всего в носимой электронике. Даже если там установлен Android, то сделать приложение для браслета или очков — совсем не то же самое, что для смартфона. А как насчет программного обеспечения для квадракоптера? Ведь эти устройства сейчас в начале своего золотого века — крупнейшие производители наперебой заявляют о планах производства винотокрылых дронов. Это значит, что их вовлечение в экосистему приложений — всего лишь вопрос времени.

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

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

Почему программирование — это творчество?

«Что стоит за каждым интернет ресурсом?», «А кто это накодил?», #тыжпрограммист и многое по теме — разбираемся, можно ли программирование называть творчеством

Почему программирование можно считать творчеством?

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

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

Решение самих задач зачастую имеет несколько вариантов, часть из которых в силу различных обстоятельств приходится отметать. Порой главным фактором, который давит на разработчика, становится время — ведь все обязательно должно быть молниеносно и качественно («и хотелось бы подешевле!» — ирония редакции). Как правило, в не самых благоприятных условиях приходится трудиться в поте лица, часами не отрываясь от экрана. Так почему же под всеми этими, казалось бы, ужасными предысториями скрывается истинное творчество?
Главный секрет — энтузиазм и умение просчитывать варианты. Вкупе со знаниями это позволяет действительно творить. Загораясь идеей, #тыжпрограммист способен без отрыва подолгу кропотливо сидеть над проектом. Опытные разработчики имеют свой стиль, свои фишечки, которые облегчают им работу, в то же время внося эффект уникальности, новизны — своего рода «вишенка на торте». Именно решение сложнейших задач одновременно самое прекрасное и самое ужасное в работе программиста. Порой невыполнимые, на первый взгляд, требования становятся настоящим вызовом, который побуждает на создание. А что это если не творчество? Важно разграничивать понятие «создание из-под палки» и чистоту полета мысли: в работе программиста эта грань бывает очень тонкой. Тем не менее, настоящие фанаты дела ловят кайф от своей работы, привнося в нее элемент творчества.

Ломаем стереотипы: 46 мифов о программировании

За время своего существования технологическая индустрия буквально обросла стереотипами. Сфера информационных технологий не осталась в стороне: программирование “стало” исключительно мужским занятием, причем отсутствие навыков взлома аккаунтов социальных сетей стало поводом для насмешек со стороны людей, далеких от IT. Новички окружены стереотипами и из-за этого им бывает сложно начать карьеру в сфере информационных технологий и, в частности, в области создания ПО. Чтобы им было легче, мы собрали самые распространенные мифы о программировании, мешающие развиваться в правильном направлении. Попробуем разобраться: где правда, а где ложь.

Оглавление

  1. Общие мифы о программировании (15).
  2. Мифы об обучении программированию (12).
  3. Мифы об ограничениях (3).
  4. Мифы о возможностях программистов (2).
  5. Мифы об инструментах разработчика (8).
  6. Мифы о карьере программиста (6).

Общие мифы о программировании

1. Надо быть очень умным

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

Илон Маск рекомендует:  Установка Drupal

2. Нужно хорошо знать математику

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

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

3. Программирование не для творческих людей

Хотя многие люди не подозревают об этом, программирование — это своего рода искусство. Программисты погружаются в создание сайтов, игр и приложений, как писатели погружаются в написание романов, эссе и рассказов. Программирование позволяет выразить свою творческую идею, мысль, акцентировать внимание на интересных вам вещах, подобно живописи или музыке. К тому же, технические навыки позволяют творческим людям расширить собственные возможности. Так, профессиональный дизайнер Антон Любушкин, уставший от несовершенства Photoshop, создал для него линейку расширений на языке JavaScript, которые сделали его работу более эффективной. В общем, программирование — творческая деятельность, способная значительно расширить возможности человека практически в любой сфере его деятельности.

4. Программирование для “ботаников”

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

Многие люди опасаются, что станут такими же, если начнут программировать. Особенно этот страх распространен среди женщин, которым трудно найти образец для подражания в технических областях. Однако, мужчина-“ботаник” — это стереотип. Программисты не обязательно ведут затворнический образ жизни: они бывают общительны и часто имеют увлечения, не связанные с программированием. Среди них есть музыканты, танцоры и спортсмены, так что нет оснований полагать, что программисты чем-то отличаются от работников других профессий.

Программист Вячеслав Бахмутов после занятий тайским боксом. Разработчик в Dropbox. Ранее работал в Яндексе.

5. Нужно иметь особый талант

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

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

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

7. Вы перестанете общаться с людьми


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

8. Нужно много запоминать

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

Подсказки в IDE PyCharm от JetBrains

9. Нужно знать все алгоритмы

Алгоритмы — основа программирования. Некоторые из них простые, другие для понимания требуют особых знаний. Тем не менее вы не должны знать их наизусть. Когда я учился программированию, я мог записать алгоритм сортировки 5-6 способами и указать различия, преимущества и недостатки каждого. Сегодня я вспомню от силы 2-3 названия алгоритмов сортировки, не говоря уже о реализации, но это не значит, что я стал хуже программировать: без практики материал быстро забывается.

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

10. Мне не хватит усидчивости, чтобы писать столько кода

Профессиональные программы содержат десятки тысяч строк кода, что пугает начинающих программистов. Тем не менее для написания программ разработчики используют одни и те же языковые конструкции. Это как в иностранном языке: для понимания 80% происходящего, достаточно знать 2000 слов (а не 50 000, которые есть в языке). Комбинируя различные слова и фразы, вы сможете разговаривать с любым человеком. В программировании похожий принцип, поэтому программы, будучи составленными из одного множества управляющих конструкций, могут решать широкий класс задач.

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

11. Программирование – это не серьезно

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

12. Мне нужен мощный компьютер

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

Гилфойл и его 7 мониторов. Комедийный сериал «Кремниевая долина».

13. Компьютерный код слишком сложный для понимания

На первый взгляд, компьютерные программы кажутся слишком сложными и непонятными. Ок, тогда взгляните на китайские иероглифы. Неподготовленный человек увидит в них лишь набор каракуль, тем не менее, около 1,3 млрд жителей планеты могут спокойно читать, писать и понимать китайское письмо. Компьютерный код гораздо проще иероглифов или других естественных языков. Его не нужно произносить или понимать на слух, а набор базовых инструкций составляет 50-100 для одного языка программирования.

14. Я создал веб-сайт, значит, я программист

На самом деле, нет. Создание сайтов зачастую не требует знания ни HTML и CSS, ни основ программирования вообще. Профессиональные веб-разработчики владеют множеством технологий и языков программирования. Вопреки слоганам веб-курсов, получить такие знания не удастся за один месяц, не говоря уже о прочих мифических сроках. HTML, CSS, PHP, JavaScript, клиентская оптимизация, базы данных, клиент-серверная технология, SQL, Apache, системы контроля версий — это лишь небольшая часть технологий, с которыми веб-разработчики сталкиваются ежедневно. Однако, не нужно пугаться: стоит только приложить к этому усилия. Свой первый сайт я создал в 2002 году на HTML и CSS, когда учился в 11 классе. И это было захватывающе. Если и вы имеете азарт к созданию красивых и удобных веб-сайтов, то статья о цвете в веб-разработке поможет сделать это занятие более интересным.

15. Программисты все пишут с нуля

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

Мифы об обучении программированию

16. Обучение заканчивается после прохождения курсов

Учеба не заканчивается после освоения языка. К тому же, выучить базовый синтаксис языка не так сложно, сложно научиться применять его на практике. Обучение никогда не останавливается: если вы прекратите учиться, то через некоторое время вы потеряете полученный навык. Чтобы не допустить этого, знания изученного материала полезно подкреплять практическими занятиями. Как и при изучении иностранных языков, долгие перерывы в обучении могут так же негативно сказаться на результате обучения.

17. Чтобы стать программистом, нужно закончить университет или техникум

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

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

18. Сначала нужно выучить весь синтаксис

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

19. Я смогу научиться программированию, посмотрев несколько уроков

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

20. Стать программистом легко

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

21. Это слишком долго

Написать первую программу вы сможете уже через 2-3 дня после начала обучения. Конечно, эта программа будет иметь мало пользы, и вы не сможете на ней заработать, но, возможно, она решит какую-то вашу простейшую проблему. Это уже что-то. Очевидно, писать осмысленные программы вы начнете не сразу, но это время исчисляется месяцами, а не годами. Если уделять программированию много времени и сил, то можно начать зарабатывать гораздо раньше чем через 5 лет, как это принято в вузах.

22. Я никогда не догоню крутых программистов

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

23. Есть лучший курс или сайт для обучения программированию

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

24. Я научусь программированию, быстро сделаю приложение и разбогатею

Стать миллионером — отличная цель. И программирование сможет помочь, но не стоит обольщаться. Билл Гейтс, Марк Цукерберг, Павел Дуров или Сергей Брин — все они не стали миллиардерами за один день. Им потребовались годы учебы и упорного труда. Если вы ожидаете через 2 недели обучения написать свою MMORPG, крутой сайт и мобильное приложение, то вынужден вас разочаровать: так это не работает. Программирование не место для быстрых и легких денег. Тем не менее программирование открывает огромные возможности как для карьерного роста, так и в создании собственного бизнеса.

25. Начинать лучше со сложных языков

Когда вы приходите в первый класс, никому в голову не придет сразу начинать с интегралов, даже умножение вы изучите только во втором классе. Так же и с программированием: хотите сохранить мотивацию и быстрей получить результат — начинайте с простых языков, как Python. Как только вы освоите основы программирования, вы легко перейдете на более сложные технологии и языки программирования вроде C++ или Objective-C.

26. Все курсы по программированию одинаковы, можно выбрать любой

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

27. Чтобы стать программистом, необходимо тратить 30 минут в день

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

«На пике своего обучения я проводил за компьютером по 16 часов в день. Для этого приходилось прогуливать институт и на время забросить спорт. Но это того стоило», — Никита Шультайс

Мифы об ограничениях

28. Я слишком стар для программирования

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

29. Он слишком молод для программирования

Часто родители используют возраст ребенка как сдерживающий фактор для начала обучения программированию. Конечно, существует разница в модели обучения детей и взрослых, но сам по себе возраст не должен быть помехой для начала занятий программированием, как он не является помехой, чтобы отдать своего ребенка на хоккей или гимнастику. Уже с 8-9 лет дети отлично понимают базовые концепции программирования и создают свои первые программы, например на языке Scratch. Кстати, о языках и средах программирования для детей вы можете узнать здесь поподробнее.

Школа детского программирования на Scratch

30. Женщинам не место в программировании

Конечно, мужчин-разработчиков гораздо больше, чем женщин, но это не означает, что женщины не могут или не должны программировать, особенно при наличии интереса. Есть много успешных женщин-разработчиков. Интересный факт: первым программистом в мире была как раз женщина — Ада Лавлейс. А Марисса Майер одной из первых присоединилась к команде программистов Google. Однако, многих женщин не привлекает программирование, как мужчин не привлекает парфюмерная промышленность. Тем не менее это связно не со сложностью профессии, а, скорее, с социально-экономическим давлением и личными интересами женщин. Нет никаких объективных причин женщине не становиться программистом. У мужчин и женщин варианты и пути развития карьеры одинаковы.

Мифы о возможностях программистов

31. Все программисты — хакеры

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

32. Все программисты обязаны уметь чинить технику

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

Мифы об инструментах разработчика

33. Один язык лучше, чем другие

Программисты любят хвалить язык, на котором программируют. Часто можно услышать о том, что тот или иной язык лучше остальных. Но правда в том, что каждый язык служит определенной цели, и нельзя однозначно сказать, что один язык лучше другого. Это все равно что спросить какой язык лучше: итальянский или французский? Зависит от страны, в которой вы находитесь. Тем не менее есть языки, которые лучше подходят для начинающих — например Python. Но вы можете начать и с Java, C# или даже C++. Некоторые языки лучше подходят для математических расчетов, для управления ресурсами компьютера. Исходя из этого, пользу конкретного языка программирования можно определить лишь в рамках определенной задачи. И часто задачи требуют знания нескольких языков. Поэтому языки работают вместе, а не друг против друга.

34. Все языки программирования одинаковые

Часто считают, что все языки программирования — это лишь вариации решения одной и той же задачи. Но это не всегда так. Разные языки программирования используются для решения разных задач. Python хорош для обучения, создания сайтов и обработки данных, JavaScript используется для создания динамических веб-сайтов, на C++ пишут сложный софт, для которого важна производительность, PHP — самый популярный язык для разработки сайтов, на Swift создают приложения под iPhone. Как видите, разные языки подходят для решения разных задач, и профессиональные программисты часто владеют сразу несколькими из них.

35. Крутые инструменты тормозят процесс обучения

Программисты пишут классные и полезные программы не только для других, но и для себя. Одной из таких программ может являться конкретная IDE, интегрированная среда разработки, которая предоставляет пользователю (программисту) удобный интерфейс для работы с кодом. Они сами завершают синтаксические конструкции, а также помогают отслеживать ошибки и опечатки. Может сложиться впечатление, что эти программы пишут код за вас, но это не так. То, что вы управляете автомобилем с усилителем руля, не означает, что автомобиль сам поворачивает. Так и с редактором кода: он лишь помогает, а основную работу делает программист. Иногда профессиональные программисты будут пытаться склонить вас к использованию “жестких” редакторов, вроде блокнота или даже Vim. Однако, использование блокнота или Vim не сделает из вас хорошего разработчика, так же как и использование IDE не сделает из вас плохого программиста.

36. Нужно изучать молодые языки

Python появился в 1991 году, а С++ в 1983, но это не значит, что они устарели, и нужно изучать новые или модные языки. Языки программирования постоянно обновляются, в них добавляют новые синтаксические конструкции, расширяются библиотеки. Это как автомобили: первый Mercedes создали более 100 лет назад, но новые модели выпускают каждый год. Изучайте тот язык, который будет решать поставленные задачи. Хотите начать программировать, то посмотрите на Python; хотите делать сайты — то PHP или JavaScript; интересует мобильная разработка — Swift (iPhone) или Java (Android).

37. Настоящие программисты пишут на C++

А настоящие водители пользуются только механикой и раз в неделю перебирают двигатель автомобиля в гараже. «Элитные» программисты считают некоторые языки программирования отстойными. Например, долгое время так относились к PHP, а сейчас то же самое говорят JavaScript при попытке использовать его на стороне сервера. Тем не менее PHP мощный и популярный язык, на котором был написан Facebook, Вконтакте и миллионы других сайтов. Нет крутых или отстойных языков, есть языки, которые решают конкретные задачи. Всё остальное — это вкусовщина и предубеждения. Выбор языка программирования не должен навешивать на программиста ярлык “недокодера” или какой-либо другой.

38. Я программист, так как освоил HTML И СSS

К сожалению, HTML и CSS это не языки программирования. Этот факт не может оспорить ни их важность в веб-разработке, ни широкое распространение. Но знать HTML и CSS абсолютно необходимо всем веб-разработчикам, и зачастую именно с этого нужно начинать свою карьеру. HTML и CSS желательно так же знать тем, кто хоть как-то связан с интернетом.

39. Веб-программист не напишет ничего серьезного

Посмотрите на Facebook, Вконтакте и тысячи других сайтов. Их создали веб-разработчики.

Веб-разработчик и предприниматель Марк Цукерберг. Создал самую популярную в мире социальную сеть.

40. Чтобы стать профессионалом, достаточно освоить один язык

Профессиональные программисты владеют несколькими языками и множеством вспомогательных технологий. Ведь программирование это не только написание программ (кодирование), это и социальные навыки, и умение писать документацию и тесты, и навык разделения крупной задачи на мелкие, и многое другое. Даже чтобы разработать небольшой сайт, необходимо знать HTML, CSS, JavaScript, PHP или другой серверный язык. С одной стороны, огорчает, что профессионалу мало знать один язык. С другой стороны, после освоение одного языка другие языки изучаются значительно быстрее.

Мифы о карьере программистов

41. Я быстро смогу заработать много денег

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

42. Я еще не скоро начну зарабатывать

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

Илон Маск рекомендует:  Php руководство по рнр 3 0 функции imap


43. Я быстро найду работу, так как на программистов большой спрос

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

44. Работодатель сам меня найдет

Многие выпускники вузов и курсов считают, что раз на программистов большой спрос, то работодатели сами их найдут и предложат лучшие условия, поэтому они сидят сложа руки и ждут. И пока они ждут, другие разработчики активно рекламируют себя, отправляют резюме в интересующие их компании, создают личные сайты, заполняют профиль с социальных сетях, подключаются к проектам на GitHub. GitHub — это социальная сеть для программистов, где каждый разработчик может опубликовать свой исходный код, чтобы его видели другие люди. Вы можете присоединиться в любому проекту и улучшить его. Работодатели очень ценят такую работу.
Не важно, какой крутой ВУЗ или курсы вы закончили, нужно быть очень активным в поиске работы.

45. Все программы уже написаны

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

46. Навыки программирования нужны только программистам

Навыки программирования полезны не только разработчикам программ, но и специалистам в других областях: биологам, политологам, экономистам, статистам, физикам. Освоив основы программирования и несколько популярных библиотек, они могут расширить свои возможности в обработке информации и автоматизации рутинных задач. Так, известный SEO-специалист Алексей Трудов освоил основы PHP и JQuery и начал писать небольшие скрипты для автоматизации своей работы.

27 книг для программиста по версии Acronis

Представители компании Acronis, ведущего поставщика решений для резервного копирования, специально для пользователей GeekBrains подготовили список книг, полезных для разработчика. Здесь каждый сможет найти что-нибудь для общего развития, пополнения базовых и специализированных знаний. Программистам, которые в дальнейшем видят себя предпринимателями, будет интересна тематическая подборка от Сергея Белоусова, сооснователя Runa Capital и компаний Parallels и Acronis.

Гайдар Магдануров, Вице-президент компании Acronis:

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

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

Чтобы быть успешным программистом, востребованным на рынке труда, важно понимать, для чего и как создается программный код. Конечная цель — продукт, и достигается она работой большого количества людей: разработчиков, тестировщиков, архитекторов и менеджеров продукта. Люди, умеющие создавать продукты, а не только «ставить скобки и точки с запятыми», всегда в цене. Классические книги Брукса «Мифический человеко-месяц», Купера «Психбольница в руках пациентов» и Рейнвотера «Как пасти котов» весьма полезны к прочтению.

Весьма увлекательным и полезным чтением для разработчиком будут еще и книги Кристенсена «Дилемма инноватора» и «Showstopper!» Закери — с реальными примерами того, как известные компании создают и решают сложности во время разработки программных продуктов.

Базовые знания:

  • Алгоритмы на C++, Роберт Седжвик — Современное и исчерпывающее описание важных алгоритмов и структур данных на C++;
  • Алгоритмы на Java, Роберт Седжвик, Кевин Уэйн — Необходимый объем знаний для программиста в области алгоритмов на Java;
  • Защищенный код, Майкл Ховард, Дэвид Лебланк — Практические советы и рекомендации по защите создаваемых приложений на всех этапах процесса создания ПО.

Специализация по менеджменту:

Специализация по Product management:

Антон Енакиев, вице-президент Acronis по разработке:

Базовые знания:

  • Внутреннее устройство Microsoft Windows, Марк Руссинович, Дэвид Соломон — Руководство по внутреннему устройству и алгоритмам работы основных компонентов Windows;
  • Programming Applications for Microsoft Windows, Jeffrey Richter — Руководство по написанию приложений для Windows;
  • Программирование серверных приложений для Microsoft Windows 2000, Джеффри Рихтер, Джейсон Кларк — Руководство по созданию высокопроизводительных и надежных серверные приложения для Windows 2000;
  • Язык программирования С++, Бьерн Страуструп — Основы программирования на C++ от создателя C++;
  • Искусство программирования, Дональд Эрвин Кнут — «Библия программиста» в четырех томах.

Специализация по Windows (Specific for Windows kernel developers):

  • Windows NT File System Internals, Rajeev Nagar — Руководство по файловым системам на Windows NT;
  • Справочник по базовым функциям API Windows NT/2000, Гэри Неббет — О том, как писать приложения для Windows NT/2000;
  • Windows NT Device Driver Development, Peter G. Viscarola, W. Anthony Mason — Руководство по разработке драйверов на Windows NT;
  • Использование Microsoft Windows Driver Model, Уолтер Они — Все необходимое для понимания процесса написания драйверов;
  • Undocumented Windows NT, Prasad Dabak, Sandeep Phadke — О недосказанном в Windows NT.

Кирилл Коротаев, вице-президент Acronis по инжинирингу, Acronis Backup и Системам Хранения Данных:

Книги обязательные для прочтения системными программистами:

  • Что каждый программист должен знать о памяти, Ульрих Дреппер — Что нужно знать о hardware чтобы заниматься software;
  • Алгоритмы: построение и анализ, Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн — Все что нужно знать об алгоритмах;
  • Теория синтаксического анализа, перевода и компиляции (в 2-х томах), Ахо А., Ульман Дж. — Если вы хотите знать как работают компиляторы и что же на самом деле скрывается за регулярными выражениями.

Для общего развития:

  • Сила мгновенных решений, Малкольм Гладуэлл — Все что нужно знать о том, как работает мозг и что такое интуиция;
  • Outliers: The Story of Success, Malcolm Gladwell — Для понимания причин успехов и неудачи;
  • Серьезный разговор об ответственности. Что делать с обманутыми ожиданиями, нарушенными обещаниями и некорректным поведением, Кэрри Паттерсон, Джозеф Гренни — Эта книга поможет вам развить навыки, необходимые для выхода из сложных ситуаций;
  • Marketing High Technology, William H. Davidow — Книга о маркетинге высокотехнологичных продуктов;
  • Эмоциональный интеллект 2.0, Тревис Бредберри, Джин Гривз — Книга о развитии эмоционального интеллекта;
  • «Квантовая психология», Артур Уилсон — Об аналогиях и параллелях между психологией и физикой. А так же как научиться говорить так, чтобы устанавливать общий контекст и избегать недопонимания.

Для всего остального есть мы: профессия «Веб-разработчик».

Представители компании Acronis, ведущего поставщика решений для резервного копирования, специально для пользователей GeekBrains подготовили список книг, полезных для разработчика. Здесь каждый сможет найти что-нибудь для общего развития, пополнения базовых и специализированных знаний. Программистам, которые в дальнейшем видят себя предпринимателями, будет интересна тематическая подборка от Сергея Белоусова, сооснователя Runa Capital и компаний Parallels и Acronis.

Гайдар Магдануров, Вице-президент компании Acronis:

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

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

Чтобы быть успешным программистом, востребованным на рынке труда, важно понимать, для чего и как создается программный код. Конечная цель — продукт, и достигается она работой большого количества людей: разработчиков, тестировщиков, архитекторов и менеджеров продукта. Люди, умеющие создавать продукты, а не только «ставить скобки и точки с запятыми», всегда в цене. Классические книги Брукса «Мифический человеко-месяц», Купера «Психбольница в руках пациентов» и Рейнвотера «Как пасти котов» весьма полезны к прочтению.

Весьма увлекательным и полезным чтением для разработчиком будут еще и книги Кристенсена «Дилемма инноватора» и «Showstopper!» Закери — с реальными примерами того, как известные компании создают и решают сложности во время разработки программных продуктов.

Базовые знания:

  • Алгоритмы на C++, Роберт Седжвик — Современное и исчерпывающее описание важных алгоритмов и структур данных на C++;
  • Алгоритмы на Java, Роберт Седжвик, Кевин Уэйн — Необходимый объем знаний для программиста в области алгоритмов на Java;
  • Защищенный код, Майкл Ховард, Дэвид Лебланк — Практические советы и рекомендации по защите создаваемых приложений на всех этапах процесса создания ПО.

Специализация по менеджменту:

Специализация по Product management:

Антон Енакиев, вице-президент Acronis по разработке:

Базовые знания:

  • Внутреннее устройство Microsoft Windows, Марк Руссинович, Дэвид Соломон — Руководство по внутреннему устройству и алгоритмам работы основных компонентов Windows;
  • Programming Applications for Microsoft Windows, Jeffrey Richter — Руководство по написанию приложений для Windows;
  • Программирование серверных приложений для Microsoft Windows 2000, Джеффри Рихтер, Джейсон Кларк — Руководство по созданию высокопроизводительных и надежных серверные приложения для Windows 2000;
  • Язык программирования С++, Бьерн Страуструп — Основы программирования на C++ от создателя C++;
  • Искусство программирования, Дональд Эрвин Кнут — «Библия программиста» в четырех томах.

Специализация по Windows (Specific for Windows kernel developers):

  • Windows NT File System Internals, Rajeev Nagar — Руководство по файловым системам на Windows NT;
  • Справочник по базовым функциям API Windows NT/2000, Гэри Неббет — О том, как писать приложения для Windows NT/2000;
  • Windows NT Device Driver Development, Peter G. Viscarola, W. Anthony Mason — Руководство по разработке драйверов на Windows NT;
  • Использование Microsoft Windows Driver Model, Уолтер Они — Все необходимое для понимания процесса написания драйверов;
  • Undocumented Windows NT, Prasad Dabak, Sandeep Phadke — О недосказанном в Windows NT.

Кирилл Коротаев, вице-президент Acronis по инжинирингу, Acronis Backup и Системам Хранения Данных:

Книги обязательные для прочтения системными программистами:

  • Что каждый программист должен знать о памяти, Ульрих Дреппер — Что нужно знать о hardware чтобы заниматься software;
  • Алгоритмы: построение и анализ, Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн — Все что нужно знать об алгоритмах;
  • Теория синтаксического анализа, перевода и компиляции (в 2-х томах), Ахо А., Ульман Дж. — Если вы хотите знать как работают компиляторы и что же на самом деле скрывается за регулярными выражениями.

Для общего развития:

  • Сила мгновенных решений, Малкольм Гладуэлл — Все что нужно знать о том, как работает мозг и что такое интуиция;
  • Outliers: The Story of Success, Malcolm Gladwell — Для понимания причин успехов и неудачи;
  • Серьезный разговор об ответственности. Что делать с обманутыми ожиданиями, нарушенными обещаниями и некорректным поведением, Кэрри Паттерсон, Джозеф Гренни — Эта книга поможет вам развить навыки, необходимые для выхода из сложных ситуаций;
  • Marketing High Technology, William H. Davidow — Книга о маркетинге высокотехнологичных продуктов;
  • Эмоциональный интеллект 2.0, Тревис Бредберри, Джин Гривз — Книга о развитии эмоционального интеллекта;
  • «Квантовая психология», Артур Уилсон — Об аналогиях и параллелях между психологией и физикой. А так же как научиться говорить так, чтобы устанавливать общий контекст и избегать недопонимания.

Для всего остального есть мы: профессия «Веб-разработчик».

Программирование как изобразительное искусство

Акварель — чистый С

Акварель проста и доступна каждому. Бумага, несколько кисточек, вода и набор красок — это все, что нужно для начала работы.

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

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

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

Масляные краски — Java

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

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

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

Настоящий художник может творить с чем угодно, и не стоит осуждать тех, кто находит здесь своё вдохновение.

Простой карандаш — Assembler

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

«Написано пером — не вырубишь топором» — главная здесь мудрость и философия. Другая отличительная особенность — рисунок ручкой имеет свой неповторимый и запоминающийся запах.

Где-то поговаривают, что существуют настоящие мастера жанра:

Мелки на асфальте — PHP

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

Относительно новое изобретение в живописи. Людей привлекает здесь яркость красок и простота использования. При использовании раскрасок достигается невероятная скорость рисования. Кто-то может сказать, что этим

убивается творчество и исчезает грань между любителем и профессионалом, а сами фломастеры перестают быть

видом серъёзного искусства, но на самом деле всё это слишком субъективно, чтобы разводить какие-либо споры на эту тему.

Яркие цвета. Чем больше ты используешь мелков из готового набора, тем быстрее творчество; легче взять дополнительный набор мелков разных оттенков, чем смешивать цвета самому.

Водорастворимые карандаши — C#

Попытка достичь легкости акварели через использование водорастворимых карандашей. К сожалению производителей водорастворимых карандашей не так много, а сами карандаши не везде можно достать.

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


Нестандартные техники акварели — C++

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

В основном причина этих отклонений заключается в недостатке мастерства владения акварелью; и следует предостеречь начинающих художников от следования этому скользкому пути.

Граффити — новое, ещё не всеми признанное, веяние в искусстве. При должном умении выходит

красиво и со вкусом. В руках непрофессионала прекращает быть искусством.

Граффити на бумаге — Haskell

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

Японский кроссворд — Lua

Ограничена фантазия для творчества; правила просты, сам кроссворд — скорее головоломка, чем искусство.

Найдены возможные дубликаты

Надо-же, хоть где-то джаву и жабоскрипт не засрали. Спасибо и на том! :)

А вообще, сравнения достаточно точные.

Писал на всем перечисленном, кроме питона, луа и c#. Не вполне согласен с фразой про C++ : «В основном причина этих отклонений заключается в недостатке мастерства владения акварелью; и следует предостеречь начинающих художников от следования этому скользкому пути.»

Все-таки инструменты в С++ — это не от недостатка мастерства владения чистым Си

Я писал вообще на всём, кроме питона, руби и перла, но до сколь-нибудь вменяемого результата не дотянул у половины.

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

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

Плюсы мне не понравились тем, что это неструктурированная свалка. Не в обиду плюсистам, но, блять, 6 типов строк — это уже эребор. Плюс этот ваш «язык в языке» (я о директивах компилятора) — это пять.

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

Па Паскале (и дальше на его продолжателе — Дельфи) я писал долгих пять лет, я обожал этот язык, я вытворял на нем потрясающей сложности вещи (один только сплайсинг функции в чужом приложении, защищенном Фемидой чего только стоил). Я обожал его ассемблерные вставки. Но в статье правильно написано — его время прошло, и я скорблю. Паскаль остался языком, упрощающим понимание алгоритмизаций и основ программирования, наряду с бейсиком. Он останется в сердцах.

На бейсике я писал с 5го класса школы. Классе в 9 пробовал визуал бейсик, но не вставило, некрасивый язык.

Знакомство моё с перлом началось и закончилось в один день, когда я пытался исправить чужой скрипт. Тут я слукавил, на ём я не писал, и не буду. Это, блять, ад. И если его сравнивать с рисунком ручкой — то только с рисунком ручкой пятиклассника, рисующего карикатуру на девочку и мальчика с соседней парты. Ну вы понели.

С питоном я сталкивался однажды — когда правил какую-то древнюю игру, написанную на нем. Мой мозг его не осилил. Это ад перфекциониста.

Обджектив-Си. На нем мне «посчастливилось» только однажды работать — когда я портировал его код на джаву, причем задняя морковка была всё ближе и ближе, и вникать мне не было времени.

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

Жабоскрипт — с ним всё было не так тривиально. Я прошел все 5 стадий отрицания, но не остановился. После того, как я понял модель памяти, замыкания и прочие ништяки — он стал одним из моих любимых языков. Минусов у него только два — типизация и линковка (их нет).

Ну и Джава, Шарп — мои любимчики. Я не просто так написал о них вместе. Для меня это один язык — ManagedCode. Пишу на них уже порядка 5 лет, и, думаю, уже не слезу. Потрясающие языки, с одним НО — виртуальная машина. У неё есть и плюсы, по сравнению с обычной архитектурой процессорных команд, но они невелируются долгим временем разгона. О плюсах и минусах этих языков я могу разговаривать часами, и нет задачи, которую нельзя было бы решить одним из них.

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

Блин, хотел написать по паре слов о языках, а очнулся только через 5 минут.

Программирование — искусство. Программисты — творцы

Скрыть объявление Подружись с AutoCAD за 40 минут! 2020.autocad-prosto.ru Пройди базовый курс по правильной работе в AutoCAD от Максима Фартусова 18+ Базовый курс бесплатно Простым языком Учимся правильно Получить Адрес и телефон

Скрыть объявление

Оставить комментарий

Комментарии

1. Поддерживаю Евгения в плане того, что программист творец. Думаю, что программист — тот же поэт, только написанное программистом чаще всего никто не видит, только он сам.

2.Не согласен с утверждением, что сейчас не нужна оптимизация, кодирование и т.п. премудрости. Ребята, не нужно рассматривать компьютер только в разрезе Майкрософта или Юникса. Есть огромное число задача, для которых требуется нормальное творчество. Малюсенький пример — системы реального времени, искусственный интелект, обработка гидро, метео, астро информации и т.п. Надеюсь помните, что американская школа программирования так и не смогла повторить создание алгоритма автоматического полёта корабля многоразового использования. Ошибка в точке приземления нашего «Бурана» составила 2 (. ) метра. Это торжество программистов!
3. Хотелоcm бы поправить автора или высказать свою точку зрения. «Си (язык программирования) стал первым кирпичом в фундаменте быстрых средств проектирования, на котором сегодня построены такие чисто визуальные системы как Visual Basic и Delphi». Евгений, это не так. Первый структурный язык всё-таки Паскаль, а первый язык, который более-менее подходил для проектирования систем был Алгол — язык с очень прозрачной для того времени логикой. Си казался очень тяжёлым языком, позволяющим проложить мост между высоким и низким программированием. Ни VB, ни Delphi не базируются на Си.

2tasmanian_devil: Человек все более превращается из творца в потребителя. Рынок безжалостно отшибает руки тем, кто в него не вписался или не «приручил» его, не смог на него повлиять.

Что до оптимизациии. Оптимизация под железо, как мне кажется, — вещь не особо творческая и весьма рутинная, и если делать уж совсем уникальную вещь, можно заодно и железо подоптимизировать. Оптимизировать лучше под повторное использование кода;-). Хотя и тут есть вопросы — если через 5 лет систему выкинут и прошлый код никому не потребуется, то и такая оптимизация не нужна.

Есть еще неприятный для РФ момент — отсутствие отечественных субъектов политики и законодателей моды в области ИТ. У Sun и MS есть большие исследовательские позразделения, в РФ ничего подобного нет, негде заниматься всякими декларативными языками типа пролога и лиспа и прочей програмистской элитарщиной. Все новинки приходят с Запада, русским остается только их применение и тиражирование, нет способа сказать новое слово, это очевидно для тех, кто хочет его сказать, кто любит творить.

Ну что до гениев — они и сейчас есть, их просто не видно за общей массой. Давайте просто будем разделять понятия рынка массового и разработки на переднем фронте технологий. В 60-х массового рынка практически не было, все разработки были университетскими и «гениальными», наукоемкими. С другой стороны инженеры всегда были, есть и будут, не взирая на развитие и количество технологий. Так и программисты-гении всегда будут, например, в сфере встраиваемых технологий (поробуй в 1 Мб памяти впинуть мощную ОС с кучей ПО), робототехники, архитектурного проектирования и прочих, прочих, прочих.

Чего действительно жаль, так это гаражной культеры, которая умерла в начале 90-х, когда в домашних условиях создавались те же Макинтоши, PL/1, ФИДО и другие знаковые творения эпохи компьютеров.

Na samom dele stat’ia dovol’no zanudnaia.

Esli podrobnee, to tak.
Optimizatsia — A est’ li v nei smisl? Mozhno napisat’ ne sil’no optimizirovanni kod no o4en’ poleznii, zhelezo obo vsem pozabotitsia :)
Commercheskii trud — nevozmozhno rabotat’ programmerom v firme, i dolgo reshat’ zadachi, potomu chto vse dvizhetsia tak bistro, chto esli ne ti to kto to drugoi. A firma ot etogo tol’ko teriaet.
Ne commercheskii trud — redko komu prigozhdaetsia, zachastuu to chto pishetsia odnim krutim programmerom, kotorii pihtit nad svoei progoi, v kontse ostaetsia libo ne dobipanim, po tem ili inim prichinam, libo dopisannim no v predelah ego zhe HDD ili nebol’shoi gruppi ego druzei.

Илон Маск рекомендует:  Обновления курсов по JavaScript

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

И summery:
широкое распространение знания ведёт к неизбежному ухудшению его качества «в среднем», но профессионалы остаются, есть даже гении (всегда и независимо от эпохи).
И если в старые добрые времена профессионал владел большИм, но ограниченным числом Алгоритмов (возможно специфических), то теперь перед ним значительно более трудная задача: освоить абстрактные механизмы Взаимодействия сложных структур.
ИМХО эти категории похожи на начала Математики и на Математический анализ. Специалист обязан владеть и тем и тем в совершенстве. Однако мат анализом пользуются и те, кто не помнит всех фундаментальных аксиом — и, не исключено, именно он совершит новое открытие.
Необходимый уровень и характер знаний определяется поставленными задачами — проф-алгоритмик не всегда хороший современный программист, по крайней мере, не во всех сферах.

Если говорить о задачах оптимизации — испокон веков (ну, годов с 60-х, если судить по статье) — считалось что оптимизация — это оптимизация работы компьютера. Сегодня этот вопрос активно пересматривается (как справедливо заметил автор, в связи с сильно возросшими мощностями). Оптимизация будущего — оптимизация человеческих усилий! как наиболее дорогого и важного ресурса. Звучит, конечно, пафосно, но мысль определяет.

ПС: оч интересно узнать мнение и других уважаемых читателей.

Создатели параллельной реальности: что ждет программистов в мире, построенном программистами

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

Все мы — программисты?

Настоящий бум переживают сейчас сервисы обучения программированию — такие как Сodecademy. Они дают возможность учить множество языков с самых азов — вроде «Hello world!» — до нужных профессионалам тонкостей. Идея всеобщей программистской грамотности захватывает мир. Вплоть до того, что президент Обама призывает всех программировать, причем на собственном примере — буквально в декабре 2014 написал свою первую строчку кода на JavaScript. «Не просто играйте в игру, а создайте ее. Не просто скачивайте приложение, а помогите его разработать. Не просто играйте на телефоне, а запрограммируйте его», — воодушевляет американский президент. Еще больше, чем слова президента, мир вдохновил пример бездомного по имени Лео, который выучился программированию и запустил собственное приложение благодаря помощи 23-летнего разработчика, который просто хотел провести эксперимент.

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

Но есть несколько «но». Во-первых, никакая Сodecademy не научит программированию на действительно высоком уровне и решению по-настоящему практических задач. А чем дальше, тем сложнее становятся задачи. Во-вторых, как отмечают многие, превращение всех в программистов похоже на возврат назад во времени, когда экран компьютера выглядел как темная область с мигающим курсором, а не как эффектная и удобная область для виртуальной работы. Тогда — в 1980-х — каждый должен был быть немного программистом. Также как почти каждый советский автолюбитель должен был быть немного автомехаником. Но вот пришла пора более качественных машин — и желающих развивать навыки механика сразу поубавилось. Так что куда пойдет программирование — «в народ» или все дальше от него — пока сказать невозможно, но это важнейшая развилка, от которой сильно зависит, как будет выглядеть наш мир.

Облачное программирование

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

Сейчас с каждым годом возможности облачных технологий для программистов расширяются. Когда-то это были лишь стандартные сервисы вроде Amazon Web Services. Сейчас появляются полноценные платформы для кодинга в режиме реального времени прямо в облаке — даже в четыре и более руки одновременно. Такие как Cloud9, например. Это не просто удобный инструмент. Теоретически это идеальная учебная среда и почти полная замена работе в одном офисе.

Программирование девайсов

Сейчас львиная часть программистов работают с компьютерными программами и вэб-страницами. Очень быстро растет доля тех, кто программирует для мобильных устройств. И пока очень мало тех, кто работает с другими девайсами. Но рынки необычных гаджетов на подъеме, и есть ощущение, что в обозримом будущем наступит настоящий бум. Сейчас производители только нащупывают ниши — прежде всего в носимой электронике. Даже если там установлен Android, то сделать приложение для браслета или очков — совсем не то же самое, что для смартфона. А как насчет программного обеспечения для квадракоптера? Ведь эти устройства сейчас в начале своего золотого века — крупнейшие производители наперебой заявляют о планах производства винотокрылых дронов. Это значит, что их вовлечение в экосистему приложений — всего лишь вопрос времени.

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

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

Программирование искусство программисты творцы

Сколько в этом форуме интерестных тем было. Давайте поговорим и об этом. Как Вы к этому относитесь. Ваше мнение. Свое я уже сказал в subj.

Программирование — это и ремесло, и искусство. Смотря что и как программировать.

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

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

А вот признаться я и не помню не одной, чтобы в душе осталась.

Ну почему. Вот видел код, который выглядел как рисунок. А компилировался в симпатишную прогу. Искусство, наверное =)

То, о чем Вы говорите — да.
А я не раз видел код, который. молчу, молчу!
Да и просто обычный, нормальный код.
Это что?

Я думаю программирование(грамотное) — это не просто искусство, а уподобление программера богам.

Создал программу, ну скажем Shell, и она живет сама, общается с юзверем, помогает, обучает не лениться и ухаживать за памятью и винтом. Вирусы тоже живут и множатся. Чем не искусственная и цифровая(разумная?) жизнь. А создать подобную(качественную) жизнь, тоесть программу — это искусство.

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

Прочел. Это не шутка. Все правда.
Получил огромное удовольствие. Спасибо.

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

Очередная дискуссия на тему «Ах, какие мы, программисты, особенные». Главное, поскорее зачислить себя в эти самые программисты :)))

Был как-то у меня случай в универе. Писали с друганом прогу и было в ней одно сложное место, связанное со случайными числами. Мы к препу (супер-пупер математик-информатик): «как сделать?» А он: «Да никак. В принципе.» Ну мы приуныли, вечером взяли водки, выпили, и давай чего-то писать, не помню абсолютно. На следующий день приходим — все работает как надо, смотрю код- раз в 10 короче чем все наши предыдущие попытки, но не понимаю как он работает. (обычный ТР). В общем математика нашего уткнули :))

Программирование — это искусство!
Об этом много написано в моей книге (ставшей бестселлером) «Анатолий Подгородецкий — легенда рока». Впрочем, пусть лучше сам ветеран форумов по програмированию выскажется по данному вопросу.

Биограф Анатолия Подгородецкого (29.07.02 09:52)
На вознаграждение не расчитывай
Для меня в первую очередь это техническая профессия, с вариантами от Юрий Зотов © (28.07.02 21:13) полностью с ним солидарен.

Я всегда сравниваю компьютер с лопатой, когда речь идет о его возможностях или вреде. Так что суть программирования зависит от землекопа, то бишь программера. Любое дело можно довести до уровня искусства. А можно любое благородное дело опошлить до уровня попсы.
Во всяком случае программирование как явление содержит потенциал стать искусством.

Программирование — техническое ремесло. Как и в всяком инженерном деле, в нем присутствует элемент творчества. Не более, чем в других профессиях.
Внук © (29.07.02 09:19) прав.
Наша работа не большее искусство, чем работа конструктора, технолога. любого инженера. Я не говорю об ученых, там дело другое. Но мы — не ученые, мы высококвалифицированные ремесленники.

А подобный флейм — просто способ самоутверждения: «Мы не такие как все, мы творим, им не понять этого».

Lord Warlock © (29.07.02 09:29)
Сомнительная история. По моему опыту, в пьяном виде написать ничего путного нельзя.

Программирование-это не искусство!

kull © (29.07.02 13:35)

Угу. Только вот некоторые спрашивают на этом форуме (да и не только на этом), а некоторые отвечают. К чему бы это ?


Я тоже так раньше думал, но факт остается фактом.


> Игорь Шевченко © (29.07.02 14:04)

Что-то я не уловил мысль.

Что можно сказать о человеке, который говорит «Программирование-это не искусство!».
Что он стоит на земле, или ему некуда больше расти?
Что у него богатый жизненный опыт, или он ничего не сотворил?
И кто он программист, или любитель?

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

Программирование — это то, чем оно становится в твоих руках.

kull © (29.07.02 14:36)


> Что-то я не уловил мысль.

А чего там улавливать ? Есть спрашивающие — есть мастера. Не было бы программирование искусством — не было бы мастеров. Даже название сайта о чем-то ведь говорит.

Что есть искусство?

ИСКУССТВО: 1) художественное творчество в целом — литература, архитектура, скульптура, живопись, графика, декоративно-прикладное искусство, музыка, танец, театр, кино и другие разновидности человеческой деятельности, объединяемые в качестве художественно-образных форм освоения мира. В истории эстетики сущность искусства истолковывалась как подражание (мимезис), чувственное выражение сверхчувственного и т. п. 2) В узком смысле — изобразительное искусство. 3) Высокая степень умения, мастерства в любой сфере деятельности
(c) БСЭ
Согласно п.3 все, в чем можно достичь высокого мастерства — искусство :)
В чем тогда вопрос?
PS
Конечно, энциклопедия не авторитет.


> Игорь Шевченко © (29.07.02 15:47)

Что ж, от иллюзий в конце концов каждый избавляется.
А что до названия сайта, то на заборе тоже . написано, но там этого нет, я проверял.


> Что можно сказать о человеке, который говорит «Программирование-это
> не искусство!».

Тоже что и о человеке, который говорит: «Программирование — это искусство!»


> Программирование — это то, чем оно становится в твоих руках.

Сравни: Убийство — это то, чем оно становится в твоих руках.
Или: Дермочерпательство — это то, чем оно становится в твоих руках.

В данный момент, имхо, это искусство поставленное на конвеер. По большей части.

kull © (29.07.02 16:10)

Ну что я могу сказать — не за тем забором, очевидно, проверяли.

VuDZ © (29.07.02 16:14)

На конвейер, IMHO, поставлено ремесло :-)

Alx2 © (29.07.02 15:56)
Я и не знал о существовании п.3.
То есть высокая степень мастерства, виртуозное владение и есть искусство? Если да, то беру свое суждение назад.
Следствие из п.3:
Любой род деятельности человека, в том числе и программирование — может быть искусством при условии «высокой степени умения».

Как быть с kull © (29.07.02 16:10):
убийство, дермочерпательство, собирательство бутылок, трамвайное хамство, плевание на дальность и точность . — искусство? Ведь во всем можно добиться мастерства? Не согласен с БСЭ.
Впрочем на коммунистов это похоже. Помню был лозунг типа: «В любой работе есть место для творчества».

>Praco © (29.07.02 16:50)
>убийство, дермочерпательство, собирательство бутылок,
>трамвайное хамство, плевание на дальность и точность . —
>искусство?
А почему бы и нет? Никто же не сказал, что искусство должно быть только «белым и пушистым»? Искусство палача, искусство допроса, искусство убийства, искусство интриги etc.. Мало ли у кого куда мозги повернуты.
>Следствие из п.3:
Про это я уже написал.

Постановка задачи(правильная!), определение структур данных, разработка алгоритма, определение входных и выходных данных, связывание все это вместе — вот это исскуство, а кодирование, это все мелочи, просто машинально набираешь то, что тока что придумал(обдумал).

[NIKEL] © (29.07.02 17:15)
Ну, если кодирование — это просто стучание по клавишам, тогда пожалуй так.

Хотя, согласно п.3, стучать по клавишам тоже искусство :)


> Praco © (29.07.02 16:50)

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

Хорошо, сдаюсь. Программирование — искусство. Все в мире искусство при условии мастерского владения.

[NIKEL] © (29.07.02 17:15)
Кодирование — искусство, однозначно. Даже простое набивание.

NIKEL меня немного опередил :)

Искуство это:
— найти потенциального заказчика
— сделать так что ему прийдет в голову заказать нам программу
— поставить себя на место заказчика и поставить самому себе техническое задание, но так чтобы потом заказчик был доволен на 100%
— создать в голове ПРОГРАММУ
— по пути всего этого плодотворно и искусно вести беседу со всеми кто может помочь и просто так под ноги попал. В конце этого этапа программа из головы должна постепенно перекочевать на бумагу, с кучей изменений конечно. А вы сами должны стать астральным продолжением заказчика, и знать что ему надо лучше его cамого.
— понимать что эта программа нужна в первую очередь нам, для того чтобы легче было найти следующего заказчика, а еще лучше чтобы следующий сам нас нашел.

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

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

после того как программа будет написано, можно будет определить — а было ли тут искуство вообще :) Лучше всего об этом спросить тестировщиков. Хуже если они — это сам заказчик.

ps: высшее искуство — это когда заказчика нет, но программа все равно есть :)

Вообще-то вы о разных вещах спорите. Есть два определения
искусства:
1) Достижение вершин мастерства в каком-либо деле (искуссный
мастер). Причем дело не обязано быть хорошим.
2) Творческий процесс создания чего-либо нового, не виданного
ранее, кстати тоже не всегда хорошего с точки зрения
традиционных вкусов и морали.

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


> anpsoft (29.07.02 19:52)

Отлично сказано !


> Игорь Шевченко © (29.07.02 16:14)
> kull © (29.07.02 16:10)
>
> Ну что я могу сказать — не за тем забором, очевидно, проверяли.

Обалдеть. Супер ! В самую точку!

Программирование — это не искусство.
Рисование — это не искусство.
Пение — это не искусство.
Беседа — это не искусство.
.
.
.
Еще раз повторю: Хорошо, даже мастерски выполняя все эти (и другие) дела, вы их еще не возводите в ранг искусства.

Все приведенные выше примеры от anpsoft и другие это лишь примеры хорошего выполнения своей работы, с искусством это никак не связано.

Искусство — это то что потрясает, душу а не разум.

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

Мне кажется вопрос некорректен. Искуство — категория слишком общая, близкая к философским, поэтому чтобы выяснить что же к нему относить придется написать многотомное исследование. Можно поставить вопрос уже и тогда все встанет на свои места.
Программирование — это творческая деятельность? Да, до некоторой степени. Программирование, как и любой другой вид деятельности, включает всебя творческую составляющую, и так сказать «ремесленную». Изначально программрование было в высокой степени творческой деятельностью, постепенно оно все больше превращается в техническую профессию, но, очевидно, элемент творчесва не исчезнет никогда, как не исчез он из любого вида инженерной деятельности вообще.
Любую ли творческую деятельность можно назвать искусством? Очевидно, нет. Для того чтобы называться искусством эта деятельность должна осуществляться на определенном уровне.
Так что программирование можно назвать искусством в той степени, в которой оно содержит в себе элементы творчества и в которой эти элементы достигают определенного уровня. Чем этот уровень измерить — вопрос, вероятно могут быть разные системы отсчета.
Ко всему прочему нельзя забывать, что программирование к тому же имеет еще и научную составляющую, так как базируется на ряде серьезных научных теорий и само является источником для создания новых.

Программист — творческая профессия?

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

Зависит от тематики решаемых задач. Как правило, нет, профессия не творческая.

Имхо, наука более творческий процесс чем музыка или рисование.

наука и есть творчество.

Однако в свете этого хочется задуматься о более глубоких вещах. Когда речь идёт о ремесле, можно ли назвать творческой работу дизайнера? Инженера? Асфальтоукладчика? Музыканта?

Когда разговор поднимается о сроках и требованиях, некоторые вещи могут внезапно стать творческими. И наоборот: какие-то вещи могут быть ими перестать.

Даже если взять и условие того, что программист практически равно «математик», то он остается сугубо творческим человеком. Ибо математика — сущее творчество.

Gordy — тупой троль?

Мне кажется да. То он утверждает, что матан ненужен. Теперь программирование — точная наука.
Ты уныл.

> Имхо, наука более творческий процесс чем музыка или рисование.

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

> То он утверждает, что матан ненужен
Я этого не говорил.

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

Программист пишет, опираясь на свои знания и инструменты, которые использует при написании программ. И результат настолько хорош, насколько грамотен программист.

> Не всё программирование основано на науке.

Имею в виду: макакам с Тьюринг-полным шаблонизатором не нужна никакая наука. Современная IT-индустрия требует всё больше и больше именно таких специалистов.

А то, что он ничего не изобретает.

Имею в виду: макакам с Тьюринг-полным шаблонизатором не нужна никакая наука. Современная IT-индустрия требует всё больше и больше именно таких специалистов.

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

> Я довольно скептически отношусь к таким вот творческим людям — музыкантам, поэтам, писателям. Перестал их воспринимать. По-моему, они просто лоботрясы и бездельники.

Хотя, когда был помоложе, рисовал, и неплохо.

Да, уж ты-то крут. Освоил искусство, стал художником, всё понял, превзошёл, стал выше. Теперь ты сильный. И умный.

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

по разному же, если писать ынтерпрайз на Java — то нет, а если что-то «для души», то да

Станешь еще старше и умнее, подумаешь еще раз.

Помоложе чего, школьничек?

Когда в школе учился и немного института захватил.

>когда был помоложе, рисовал, и неплохо

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

скептически отношусь к таким вот творческим людям — музыкантам, поэтам, писателям

Ты ещё с психологами незнаком :-D

Как тебе удалось остаться на школьном уровне, не смотря на образование в институте?

Смотря какие задачи. Порой очень даже творчество выходит :)

Я думаю, в основной массе это инженерная профессия. Считать ли это творчеством?

Это если есть научный поиск, а не переписывание чужих мыслей.

Не порть пейзаж своей толстой жопой.

> Считать ли это творчеством?
Нет.

>скептически отношусь к таким вот творческим людям — музыкантам, поэтам, писателям

они просто лоботрясы и бездельники

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

ТруЪ творческие люди творят не ради денег, а немалые профиты — только приятный бонус.

Программист — нифига не творческая рутинная унылая профессия, а вот архитектор — творческая.

Если верить Википедии,

Инженер (фр. ingénieur, от лат. ingenium — способность, изобретательность) — специалист с высшим техническим образованием, создатель информации об архитектуре материального средства достижения цели или способа изготовления этого средства (продукта) и осуществляющего руководство и контроль за изготовлением продукта.

Так что элемент творчества есть.

Тогда у тебя слишком ограниченное понятие творчества.

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

Исходя из определеня выше, ИМХО чем меньше творчества в программировании тем лучше. Код должен быть понятен другим людям и соответствовать стандартам.

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

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

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL