Когда о человеке можно сказать, что он стал программистом? / Хабр
ProductivityInsideВремя на прочтение 2 мин
Количество просмотров42K
Блог компании Productivity Inside Учебный процесс в IT Карьера в IT-индустрии
Перевод
Автор оригинала: Josef Cruz
Я не согласен с утверждением, что программистом становишься, когда впервые напишешь код. Мне в это не верится. На мой взгляд, это предполагает, что любого, кто написал хоть какой-то фрагмент кода, уже нужно считать программистом, даже если у него нет никакого стремления заниматься этим делом профессионально или в качестве увлечения.
И когда я стал задавать этот вопрос джуниорам, то ожидал услышать самый распространенный ответ, однако, к моему удивлению, вышло иначе.
Мой вопрос звучал так:
Когда о человеке можно сказать, что он стал программистом?
- «Когда он способен абстрагироваться от инструментов. То есть может понять, что является ключевым для решения задачи вычислительными методами, независимо от того, какую технологию он использует».
- «Когда он задумывается о других разработчиках, создает код для людей, а не для машин. Соответственно, документация и читабельный код – обязательные условия».
- «Когда он начинает избегать споров по пустякам. Разговоры в духе „этот инструмент лучше, чем тот“ — это занятие, которое человек, разбирающийся в программировании, оставил в прошлом: он понимает, что оба инструмента могут быть полезны для выполнения определенных задач».
- «Он делится знаниями и принимает участие в жизни сообщества. Взять, допустим, программиста, который выучился в основном по бесплатным материалам из интернета. Исходя из своего опыта, он понимает, что единственный способ поддержать эту область знания – внести свою крупицу на благо окружающих. Он ведь и сам в прошлом извлекал пользу из чужих».
- «Когда он может браться за новые задачи и, должным образом в них разобравшись, писать рабочий код, поэтапно доводя дело до завершения. Решение при этом ориентировано на будущее, его не придется реализовывать заново ради выживания продукта. Такой человек – хороший программист».
- «Когда он понимает принцип действия операторов if, then, else в сочетании с циклами for и так далее. Говорить о том, что человек стал программистом, можно только тогда, когда он всё это освоит и научится применять. Разумеется, под применением понимается не просто вывод слов
- «Когда он создает программные решения для проблем. Необязательно даже пользоваться при этом языкам программирования (HTML, CSS, SQL или Excel). Достаточно просто прописывать алгоритмы в записной книжке – с этого момента уже можно говорить о создании программного обеспечения».
- «Когда к нему приходит понимание, что каждый язык служит своей цели, имеет свои плюсы и минусы и что его применимость нужно определять исходя из того, к какой области относится проблема».
Я с радостью выслушивал эти ответы – от них у меня появилось ощущение, что новое поколение программистов, возможно, сумеет стать еще лучше, чем те гуру программирования, за которыми тянулись мы сами. Надеюсь только, что они не решат сменить карьеру, после того как столкнутся с реалиями мира разработки.
Теги:
- обучение программированию
- профессиональные стандарты
Хабы:
- Блог компании Productivity Inside
- Учебный процесс в IT
- Карьера в IT-индустрии
Всего голосов 35: ↑28 и ↓7 +21
Комментарии 168
Сайт
Productivity Inside @ProductivityInside
Пользователь
Программист | Профориентир
Родственные профессии— Веб-дизайн
— Системный администратор
— Администратор баз данных
— Специалист по тестированию в области информационных технологий
— Специалист по информационным системам, Специалист по информационным ресурсам
Сфера профессиональной деятельности
- Обслуживание (оказание услуг населению)
- Производство
Классификация профессии
- Может быть отнесена к типам профессии:
- «Человек – Техника» (работает с компьютером, техническими устройствами),
- «Человек – Знак» (работает с шифрами, кодами).
- Класс профессии: алгоритмический, творческий.
- Тип профессии по условиям труда: микроклимат бытового типа (работа в помещениях).
Описание профессии
Программист на основе математических кодов и вычислений разрабатывает различные компьютерные программы, тестирует их, устраняет недостатки. Обучает коллег работе в новой программе. В обязанности программиста входит создание электронного варианта баз и каталогов, обеспечение безопасности информационных технологий (пароли, степени защиты, антивирусы).
Требования к индивидуальным особенностям специалиста
Программисту необходим высокий уровень абстрактного и логического мышления, аналитический склад ума, хорошая память, умение излагать информацию на понятном языке. Программист должен обладать такими качествами, как наблюдательность, терпение, аккуратность, организованность, усидчивость, уметь принимать нестандартные решения, вести сложные математические расчёты.
Медицинские противопоказания
Медицинскими противопоказаниями для программиста являются:
- Заболевания центральной нервной системы различной этиологии с двигательными и чувствительными нарушениями, расстройствами координации, когнитивными и интеллектуальными нарушениями.
- Заболевания центральной нервной системы с двигательными и чувствительными нарушениями, расстройствами координации и статики, когнитивными и мнестико-интеллектуальными нарушениями.
- Психические заболевания с тяжелыми, частыми болезненными проявлениями.
- Заболевания, сопровождающиеся расстройствами сознания.
- Психические заболевания с тяжелыми, стойкими или часто обостряющимися болезненными проявлениями.
- Активные формы туберкулеза любой локализации.
- Миопия высокой степени или осложненная близорукость.
- Катаракта осложненная.
- Дегенеративно-дистрофические заболевания сетчатки глаз.
Требования к профессиональной подготовке
Программист должен знать:
- языки программирования, технологии и инструменты разработки программного продукта, стандарты качества программного продукта и процессов его обеспечения;
- основные стандарты информационно-коммуникационных систем и технологий;
- методы и средства обеспечения информационной безопасности программных систем.
Он должен отлично разбираться в устройстве компьютеров, знать принципы его работы. Программист должен владеть английским языком на уровне чтения технической документации. Для работы над проектами ему не обойтись без инициативности и умения работать в коллективе.
Программист должен уметь:
- инсталлировать, тестировать и использовать программные средства;
- конструировать программное обеспечение;
- настраивать конкретные конфигурации операционных систем;
- разрабатывать схемы баз данных;
- разрабатывать основные программные документы;
- работать с современными системами программирования;
- работать в среде различных операционных систем и администрировать их, обладать техникой быстрой печати на клавиатуре вслепую.
Область применения
Программист может найти применение своим профессиональным навыкам в научно-исследовательских институтах, вычислительных центрах, IT-компаниях, web-студиях, учебных заведениях, предприятиях и в организациях любой формы собственности, где требуется обслуживание компьютерной техники, а также в специализированных компьютерных фирмах по разработке и продаже программных продуктов.
Условия труда
Программисты часто имеют свободный график. Нанимают и удаленных специалистов и в штат для работы в офисе. Весь день программист проводит в помещении сидя за компьютером.
Профессиональные риски
Во время работы программист находится в положении сидя, перед монитором компьютера, поэтому есть риск получить проблемы со зрением, опорно-двигательным аппаратом, заболевания кистей рук. Деятельность программистов связана с частыми нервными и психическими заболеваниями. Потеря важной информации, сбои в работе компьютера расшатывают нервную систему, что приводит к психическим расстройствам.
Требуемое профессиональное образования
Профессию программист можно получить в профессиональных образовательных организациях среднего профессионального образования (специальность Программирование в компьютерных системах, Прикладная информатика, Информатика и вычислительная техника. Информационные системы, Компьютерные сети, Компьютерные системы и комплексы, Мастер по обработке цифровой информации)
Образовательные учреждения
Карьерный рост
Карьера зависит от навыков и стремлений. В крупных компаниях специалист может стать начальником IT-отдела, ведущим менеджером проекта. Многие программисты открывают собственный бизнес в сфере создания программного обеспечения. Весьма популярна работа на себя с самостоятельным поиском заказов – фриланс. Для карьерного роста важно постоянно получать новые знания, идти в ногу с развитием технологий. Предпочтение отдается тем, кто разбирается в самых современных течениях программирования.
Human Programming — University of Minnesota Press
2016
•
Автор:
Скотт Селискер
Первая культурная история идеи программируемого разума в культуре США, от холодной войны до войны с терроризмом
Скотт Селискер демонстрирует, как американские представления о свободе и человечности менялись в тандеме с развитием науки и техники.
Он утверждает, что литературные, кинематографические и научные представления о запрограммированном разуме долгое время формировали разговоры в политической культуре США о свободе и несвободе, а также о демократии и ее врагах, начиная с холодной войны и заканчивая войной с террором.Human Programming — это творческий и проницательный отчет о том, как американская культура — на протяжении десятилетий, средств массовой информации и институтов — придавала форму антиутопическим страхам перед контролем над разумом как способом укрепить ощущение американского «я», которое еще более диковинно. в своих претензиях на автономию. От политики холодной войны до постчеловеческих технологий Селискер пересматривает то, кем мы себя считаем, внимательно изучая силы, которые говорят нам, что делать.
—
Марк Гобл, Калифорнийский университет, Беркли
Имеют ли наши способы говорить о современном терроризме историю в науке, технике и культуре времен холодной войны? Human Programming исследует эту историю в новаторской работе, которая устанавливает связи между десятилетиями и всей американской культурой, высокой и низкой. Скотт Селискер утверждает, что литературные, кинематографические и научные представления о запрограммированном разуме уже давно сформировали разговоры в политической культуре США о свободе и несвободе, а также о демократии и ее врагах.
Селискер демонстрирует, как американские представления о свободе и человечности изменились в тандеме с развитием науки и технологий, включая медиатехнологии, кибернетику, бихевиористскую психологию и социологию. Со времен Второй мировой войны пропагандисты, ученые и художники адаптировали свои представления о программируемости человека, стремясь представить психологические манипуляции и институциональный контроль, которые могли бы породить непостижимые субъекты тоталитарных государств, культов и террористических ячеек. В то же время писатели всего политического спектра переосмыслили идеалы американской свободы, демократии и многообразия, противопоставив этим постчеловеческим призракам ментальной несвободы. Образы таких «человеческих автоматов» циркулировали в популярных фильмах, судебных процессах, рассказах о путешествиях и средствах массовой информации, придавая форму туманным врагам послевоенных и современных Соединенных Штатов: тоталитаризму, коммунизму, тотальным институтам, культовому экстремизму и фундаменталистскому терроризму.
Начиная от обсуждений Маньчжурский кандидат и научной фантастики о киберпанке до дел Пэтти Херст и «американского Талибана» Джона Уокера Линда,
Бумажный ISBN за 26 долларов США 978-0-8166-9988-9
ISBN ткани 91,00 $ 978-0-8166-9987-2
272 страницы, 12 ч/б фотографий, 5 1/2 x 8 1/2, 2016 г.
Скотт Селискер — доцент кафедры английского языка Аризонского университета.
Программирование человека — это творческий и проницательный отчет о том, как американская культура — на протяжении десятилетий, средств массовой информации и институтов — придавала форму антиутопическим страхам перед контролем над разумом как способом укрепить чувство американского «я», которое еще более странным в своих претензиях на автономию. От политики холодной войны до постчеловеческих технологий Селискер пересматривает то, кем мы себя считаем, внимательно изучая силы, которые говорят нам, что делать.
—
Марк Гобл, Калифорнийский университет, Беркли
Ясный и убедительно задуманный, Человеческое программирование вносит большой вклад в растущий объем исследований послевоенных опасений американцев по поводу человеческой деятельности и социального влияния.
—
Тимоти Мелли, Университет Майами
Американская риторика вокруг «промывания мозгов», как показывает Селискер, непоследовательна на самом базовом уровне: считается само собой разумеющимся, что запрограммированное «я» не является подлинным, а настоящее «я» спонтанно и необученно.
—
Los Angeles Review of Books
Содержание
Благодарности
Введение: враги свободы
1. Уникальные американские симптомы: «промывание мозгов» времен холодной войны и американская исключительность
2. Антиинституциональные автоматы: новые левые повторные присвоения автоматизма
3. Человеческое программирование: вычисления, эмоции и постчеловеческое «другое»
4. Программирование культов: экстремизм, повествование и социальная наука о культах
5. Фундаменталистские автоматы: представление террористического сознания в войне с террором
Заключение: автоматизм и действие
Примечания
Индекс
DeepMind заявляет, что их новый кодирующий движок ИИ не уступает среднему программисту-человеку
Перейти к основному содержанию
The VergeЛоготип Verge.Домашняя страница The Verge
The VergeЛоготип Verge.- Технологии/
- Искусственный интеллект/
- Наука
/
AlphaCode хорош, но не идеален — пока нет
Поделиться этой историей
Иллюстрация Алекса Кастро / The Verge
Компания DeepMind создала систему искусственного интеллекта под названием AlphaCode, которая, по ее словам, «пишет компьютерные программы на конкурентоспособном уровне». Дочерняя компания Alphabet проверила свою систему на соответствие задачам кодирования, используемым в соревнованиях среди людей, и обнаружила, что ее программа достигла «приблизительного рейтинга», поместив ее в число 54% лучших программистов-людей. Результатом стал значительный шаг вперед для автономного кодирования, говорит DeepMind, хотя навыки AlphaCode не обязательно репрезентативны для задач программирования, с которыми сталкивается средний кодер.
Ориол Виньялс, главный научный сотрудник DeepMind, сообщил The Verge по электронной почте, что исследование все еще находится на ранней стадии, но его результаты приблизили компанию к созданию гибкого искусственного интеллекта для решения проблем — программы, которая может автономно решать проблемы кодирования, которые в настоящее время являются прерогативой только людей. «В долгосрочной перспективе нас воодушевляет потенциал [AlphaCode] для помощи программистам и непрограммистам в написании кода, повышении производительности или создании новых способов создания программного обеспечения», — сказал Виньялс.
AlphaCode можно использовать для создания помощников по кодированию, а однажды он напишет свое собственное программное обеспечение. шахматы. Эти проблемы отличаются от задач, с которыми может столкнуться программист при создании, скажем, коммерческого приложения. Они более автономны и требуют более широких знаний как алгоритмов, так и теоретических концепций информатики. Думайте о них как об очень специализированных головоломках, которые сочетают в себе логику, математику и навыки кодирования.
В одном примере испытания, на котором тестировался AlphaCode, участникам предлагается найти способ преобразовать одну строку случайных повторяющихся букв s и t в другую строку таких же букв, используя ограниченный набор входных данных. Конкуренты, например, не могут просто вводить новые буквы, а вместо этого должны использовать команду «возврат», которая удаляет несколько букв в исходной строке. Вы можете прочитать полное описание задачи ниже:
Пример задачи под названием «Backspace», которая использовалась для оценки программы DeepMind. Задача средней сложности, с левой стороны — описание проблемы, а с правой — примеры тестов. Изображение: DeepMind / Codeforces
Десять из этих задач были загружены в AlphaCode точно в том же формате, что и людям. Затем AlphaCode сгенерировал большее количество возможных ответов и отсеял их, запустив код и проверив вывод, как это сделал бы человек-конкурент. «Весь процесс автоматический, без отбора лучших образцов человеком», — рассказали Юцзя Ли и Дэвид Чой, соруководители газеты AlphaCode, The Verge по электронной почте.
AlphaCode был протестирован на 10 задачах, которые были решены 5000 пользователями на сайте Codeforces. В среднем он входит в число 54,3% лучших ответов, и, по оценкам DeepMind, это дает системе Codeforces Elo 1238, что ставит ее в число 28% лучших пользователей, которые соревновались на сайте за последние шесть месяцев.
«Я могу с уверенностью сказать, что результаты AlphaCode превзошли мои ожидания», — сказал основатель Codeforces Майк Мирзаянов в заявлении, распространенном DeepMind. «Я был настроен скептически [sic], потому что даже в простых соревновательных задачах часто требуется не только реализовать алгоритм, но и (и это самое сложное) его изобрести. AlphaCode удалось выступить на уровне перспективного нового конкурента».
Пример интерфейса AlphaCode для решения задачи кодирования. Ввод дается людям слева, а результат генерируется справа. Изображение: DeepMind
DeepMind отмечает, что текущий набор навыков AlphaCode в настоящее время применим только в области конкурентного программирования, но его возможности открывают дверь для создания будущих инструментов, которые сделают программирование более доступным и однажды полностью автоматизированным.
Многие другие компании работают над аналогичными приложениями. Например, Microsoft и лаборатория искусственного интеллекта OpenAI адаптировали последнюю программу генерации языка GPT-3 для работы в качестве программы автозаполнения, завершающей строки кода. (Как и GPT-3, AlphaCode также основан на архитектуре ИИ, известной как преобразователь, которая особенно хорошо справляется с анализом последовательного текста, как естественного языка, так и кода). Для конечного пользователя эти системы работают так же, как функция Smart Compose в Gmail, предлагая способы закончить то, что вы пишете.
Системы искусственного интеллекта подвергались критике за создание ошибочного и уязвимого кода.
В последние годы был достигнут значительный прогресс в разработке систем кодирования искусственного интеллекта, но эти системы далеки от того, чтобы просто взять на себя работу программистов-людей. Код, который они производят, часто содержит ошибки, а поскольку системы обычно обучаются на библиотеках общедоступного кода, они иногда воспроизводят материалы, защищенные авторским правом.
В ходе одного исследования инструмента программирования ИИ под названием Copilot, разработанного репозиторием кода GitHub, исследователи обнаружили, что около 40 процентов его выходных данных содержат уязвимости в системе безопасности. Аналитики безопасности даже предположили, что злоумышленники могут преднамеренно писать и делиться кодом со скрытыми бэкдорами в Интернете, который затем может использоваться для обучения программ ИИ, которые будут вставлять эти ошибки в будущие программы.