Программист лучший – В какой отрасли программирования можно добиться большего успеха и лучше зарабатывать на жизнь?

Содержание

10 лучших программистов мира: легендарные личности в IT

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

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

Линус Торвальдс

Линус ТорвальдсBy Alex Dawson — originally posted to Flickr as Linus Torvalds, CC BY-SA 2.0, Link

Финно-американский программист, создатель операционной системы Linux, на которой работают дата-центры и множество компьютеров во всем мире.

Благодаря Торвальдсу, убежденному стороннику freeware (свободно распространяемого софта), в индустрии, где крутятся огромные деньги и все пропитано коммерцией и паранойей, появилась полностью бесплатная операционная система с открытым кодом.  Сегодня в разработке и обновлениях Линукс участвуют тысячи программистов.

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

Дональд Кнут

Автор монографии "Искусство программирования"By vonguard from Oakland, Nmibia — DSC_0079Uploaded by YMS, CC BY-SA 2.0, Link

Автор уникальной монографии «Искусство программирования», которая стала учебником и настольной книгой программистов во всем мире. Почетный профессор в Стенфорде.

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

Ведущие разработчики Google, Facebook других крупных проектов не единожды выражали благодарность Дональду Кнуту за уникальный учебник. О Кнуте говорил и Билл Гейтс: «Если вы называете себя программистом, попробуйте прочесть Кнута И если сумеете прочитать эту книгу полностью, отправьте мне свое резюме».

Работа над этим монументальным трудом ведется с 1962 года. На сегодняшний день вышло 4 тома. К 2020 году профессор обещает публикацию пятого.  Кроме того, Дональд Кнут известен как создатель системы компьютерной верстки TeX и языка METAFONT для работы с векторными шрифтами.

Сэр Тим Бернерс-Ли

Топ-12 самых влиятельных программистов мира | Статья

Линус Торвальдс, Дональд Кнут, Ричард Столлман, Джон Кармак — что не имя, то легенда. Интернет-издание VentureBeat составило список самых авторитетных программистов в мировом ИT-сообществе.

Читать далее

Создал Linux, свободную операционную систему, в комнате общежития университета Хельсинки. Сегодня на Linux работают дата-центры и суперкомпьютеры, а её разработкой занимается орда фанатов open-source по всему миру.

Фото: Linux Foundation

Торвальдс известен, в частности, тем, что за словом в карман не лезет и не пытается нравиться публике. На одном из недавних выступлений, когда его спросили из зала, не отпугивает ли он своей манерой общения членов Linux-сообщества, он ответил: «Мне на вас наплевать». Про Торвальдса в среде разработчиков ходят такие же шутки, как среди обывателей про Чака Норриса. Например, Торвальдс может делить на ноль и играть в 3D-игры, исполняя их исходный код в мыслях в реальном времени.

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

Фото: Campus Party Brasil/Flickr CC

Сейчас он возглавляет Альянс за доступный интернет, общественную организацию, которую поддерживают Google, Facebook и Microsoft, и которая задалась целью сделать широкополосный интернет доступным людям по всему миру.

Фото: Knuth

Академические работы по компьютерным наукам принесли ему титул «отца анализа алгоритмов». Всё в сети, от алгоритма отбора в ленту Facebook до алгоритма подбора похожих товаров на Amazon, чем-то ему обязано. В свои 77 он пишет книгу под названием «Искусство компьютерного программирования». Кнут также является почётным профессором в Стенфорде.

Фото: YouTube

Создатель языка программирования JavaScript, который по факту является стандартом для веб-программирования. Участвовал в создании Mozilla, компании, которая разрабатывает браузер Firefox. Ушёл с поста CEO, когда стало известно о его материальной поддержке проекта по запрету гей-браков в Калифорнии.

Фото: Docker

Создатель Docker, технологии, которую обожают разработчики, ведь она пакует приложение со всем его окружением в контейнеры и доставляет его на серверы. Работает, как виртуальная машина, но намного быстрее. Docker начинался как side-project в компании dotCloud, но когда оказалось, что продукт популярен, компания пережила пивот и вскоре превратилась в «единорога».

Фото: facebook.com/zuck

Создатель Facebook. Считает, что чем меньше и гибче команда, тем успешнее она будет работать. Миллиардную социальную сеть обслуживает «всего» 10 000 человек по всему миру.

Фото: Courtesy of David Heinemeier Hansson

Известен как DHH. Создатель Ruby on Rails, суперпопулярного фреймворка, принесшего ему титул и награду Google «Хакер года» в 2005-м.

Фото: webpointzero.com

Известен прежде всего борьбой за свободный софт, основатель GNU, автор идеи «копилефта» — в противовес копирайту. Очень принципиальный, не использует никаких проприетарных разработок.

Фото: Wikimedia Commons

Создатель протокола BitTorrent, подаривший пользователям возможность супербыстрой загрузки файлов. BitTorrent невероятно популярен: по скромным оценкам, его общая пользовательская база составляет 250 млн человек по всему миру. В прошлом году Том Йорк попробовал распространить альбом исключительно через BitTorrent. И всё же, возможности BitTorrent в первую очередь оценили интернет-пираты.

Фото: Wikimedia Commons

Создал язык программирования Java, работая в Sun Microsystems. После поглощения компании Oracle в 2010, Гослинг уволился, став одним из главных критиков Oracle. С тех пор поработал пять месяцев в Google, пока не присоедился к стартапу Liquid Robotics. Также входит в команду известного украинского стартапа Jelastic как независимый директор.

Фото: Wikimedia Commons

Датский программист в 1978 году создал язык программирования C++, улучшив C. Он до сих пор активно работает: преподает в Техасском университете A&M, Колумбийском университете, а ещё занят в Morgan Stanley. 

Фото: Flickr

Сооснователь id Software. Во всём мире его знают как создателя Doom. Кстати, сама идея игры родилась во время партии в D&D, которую команда проводила в штаб-квартире id Software регулярно на протяжении нескольких лет. Причем гейм-мастером всегда был Джон. Он первым опробовал те трюки 3D-графики, которые до сих пор используются.

Сейчас он занят в компании Oculus VR, которую Facebook купил за $2 млрд.

20 величайших программистов всех времен

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

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

20. Дэвид Паттерсон

Кто он: Дэвид Паттерсон — специалист по информатике и профессор Калифорнийского университета в Беркли.

Что он сделал: Паттерсон известен своим вкладом в разработку процессора RISC (компьютер с сокращенным набором команд) и своими исследованиями RAID (избыточные массивы независимых дисков) и NOW (сеть рабочих станций).

Достижения: он получил премию Эккерта-Мошли, выдающегося педагога Карла Карлстрома и награду за выдающиеся заслуги ACM.

19. Джон Кармак

Кто он: Джон Кармак — программист, соучредитель и бывший технический директор Id Software.

Что он сделал: он был ведущим программистом Id видеоигр Doom, Rage, Commander Keen и их продолжений. Он наиболее известен своими инновациями в 3D-графике, особенно благодаря алгоритму Reverse для теневых объемов. Кармак популяризировал использование нескольких методов в компьютерной графике, таких как адаптивное обновление мозаики, разбиение двоичного пространства, лучевое вещание, поверхностное кэширование и технология MegaTexture.

Достижения: он был удостоен Национальной академии телевизионных искусств и наук (дважды), премии «За достижения в области технологий и разработок» и конференции разработчиков игр Lifetime Achievement за свою новаторскую работу.

18. Дональд Эрвин Кнут

Кто он: Дональд Кнут — математик, ученый, автор книги «Искусство компьютерного программирования». Он был назван отцом анализа алгоритмов.

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

Достижения: премия Тьюринга, премия Грейс Мюррей Хоппер, национальная медаль науки, медаль Фарадея, приз Киото и медаль Джона фон Неймана.

17. Гидо ван Россум

Кто он: Гвидо ван Россум — программист, известный как автор языка программирования Python.

Что он сделал: В первые дни он писал подпрограмму glob () для BSD Unix и работал над языком программирования ABC. Он разработал Python, работая в Google и продолжает следить за процессом разработки Python, принимая важные решения, где это необходимо.

Достижения: Россум получил Премию NLUUG 2001 года за продвижение свободного программного обеспечения за свою работу над Python.

16. Джеймс Артур Гослинг

Кто он: Джеймс Гослинг — канадский ученый, известный как отец языка программирования Java.

Что он сделал: Джеймс разработал многопроцессорную версию Unix, несколько компиляторов и почтовых систем, прежде чем присоединиться к Sun Microsystems. Он изобрел язык программирования Java и внедрил оригинальный компилятор Java и виртуальную машину в 1994 году. Он также внес вклад в ряд других программных систем, включая Gosling Emacs и NeWS.

Основные достижения: Гослинг был награжден премией «Экономист за инновации», медалью IEEE Джона фон Неймана и был награжден орденом Канадского ордена в 2007 году.

15. Никлаус Вирт

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

Что он сделал: Вирт известен разработкой множества языков программирования, включая Паскаль, Модула, и созданием нескольких классических тем в области разработки программного обеспечения. Он был главным конструктором Алгола В., Эйлера, Модулы, Модулы-2, Паскаля, Оберона, Оберона-2 и Оберона-7. Он также работал над цифровой системой проектирования и моделирования Lola.

Достижения: он был удостоен премии Тьюринга, премии за достижения в области языков программирования SIGPLAN и премии Марселя Бенуа.

14. Алан Кертис Кей

Кто он: Алан Кертис Кей — ученый-компьютерщик, избранный членом Национальной инженерной академии, Американской академии искусств и наук и Королевского общества искусств.

Что он сделал: Алан наиболее известен своими ранними новаторскими работами по объектно-ориентированному программированию и созданию оконного графического интерфейса пользователя (GUI). Брайан также является участником фазы: лучший способ предсказать будущее — это изобрести его.

Основные достижения: Алан получил премию ACM Turing Award за свою работу над объектно-ориентированным программированием, UPE Abacus Award и UdK 01-Award за новаторский графический интерфейс.

13. Джон Маккарти

Кто он: Джон Маккарти был учёным и ученым, придумавшим термин «искусственный интеллект».

Что он сделал: Джон разработал семейство языков программирования Lisp, популяризировал разделение времени и работал над дизайном языка программирования ALGOL. Он был очень влиятельным в начале развития искусственного интеллекта. Он изобрел метод сбора мусора, чтобы решить проблему Lisp, который впоследствии стал языком программирования для приложений AI.

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

12. Томас Евгений Курц

Кто он: Томас Курц — ученый-компьютерщик и профессор Дартмута в отставке, который реализовал концепцию разделения времени.

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

Основные достижения: Курц был удостоен награды AFIPS Pioneer Award и IEEE Computer Science Pioneer Award.

11. Джон Джордж Кемени

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

Что он сделал: Кемени был пионером в использовании компьютеров для простых людей. Он изобрел язык программирования BASIC (универсальный символьный код для начинающих) в 1964 году после экспериментов с LGP-30. Он также разработал DTSS (систему разделения времени по Дартмуту), которая является одной из первых в мире систем разделения времени.

Основные достижения: он получил награду Computer Pioneer Award в 1985 году.

10. Грейс Хоппер

Кто она: Грейс Хоппер была контр-адмиралом ВМС США и ученым-компьютерщиком. Она была одним из первых программистов компьютера Гарварда Марка I.

Что она сделала: Хоппер изобрела первый компилятор для языка программирования. Она популяризировала методологию машинно-независимого языка программирования, что привело к развитию COBOL. Ей также приписывают популярность термина отладка для исправления машинных сбоев.

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

9. Джон Бэкус

Кто он: Джон Бэкус был ученым-компьютерщиком, наиболее известным как разработчик FORTRAN. Он получил степень магистра математики в 1950 году в Колумбийском университете.

Что он сделал: Бакус руководил командой, которая изобрела FORTRAN, первый широко используемый язык программирования высокого уровня. Он изобрел BNF (форму Бэкуса-Наура), обозначение для определения синтаксиса формального языка. Он также популяризировал термин «язык функционального программирования».

Основные достижения: Бэкус получил премию имени В.В. Макдауэлла, Национальную медаль науки, премию ACM Turing, премию Дрейпера и получил звание стипендиата IBM.

8. Билл Гейтс

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

Что он сделал: В течение первых 5 лет работы в Microsoft Гейтс лично следил за каждой строкой кода, которую компания отправляла, часто исправляя те, которые он считал ошибочными или неправильными. В первые дни он и Пол Аллен написали полный интерпретатор языка BASIC на ассемблере для компьютера, к которому у них даже не было доступа, и который имел только 4 Кбайт памяти. Они написали это на PDP-10, работающем на эмуляторе Intel 8080.

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

7. Брайан Керниган

Кто он: Брайан Керниган — ученый, работавший в Bell Labs. В начале своей карьеры он был редактором программного обеспечения для Prentice Hall International.

Что он сделал: он разработал ОС Unix с Деннисом Ричи и Кеном Томпсоном. Он написал множество Unix-программ, включая cron и ditroff для Версии 7. Керниган является соавтором языка программирования AMPL и AWK. Он также разработал эвристику проблемы коммивояжера и разбиения графа (обе проблемы являются NP-полными).
Брайан также является автором известного выражения «То, что ты видишь, это все, что ты получаешь» (WYSIAYG).

Основные достижения: он выиграл премию INFORMS Computing Society в 1993 году и получил множество наград учителя за свою карьеру.

6. Кен Томпсон

Кто он: Кен Томпсон — пионер компьютерного сообщества и сообщества хакеров. Он наиболее известен разработкой и внедрением операционной системы Unix.

Что он сделал: Томпсон разработал оригинальную ОС Unix с Ричи. Он изобрел язык программирования B и был одним из первых разработчиков операционной системы Plan 9. Он также изобрел язык программирования Go, работая на Google. Кроме того, Томпсон работал над кодировкой UTF-8, таблицами конечных игр и регулярными выражениями.

Основные достижения: он был удостоен премии Тьюринга, премии Японии, премии IEEE им. Эмануэля Р. Пьоре, премии компьютерных пионеров и национальной технологической медали.

5. Тим Бернерс-Ли

Кто он: Тим Бернерс-Ли — ученый-компьютерщик, наиболее известный как изобретатель Всемирной паутины. Он является директором W3C, Инициативы Web Science Research, а также старшим научным сотрудником и заведующим кафедрой основателей (MIT).

Что он сделал: В 1989 году Тим сделал предложение по системе управления информацией, и он успешно реализовал связь между HTTP-клиентом и сервером через Интернет. Он также является ключевой фигурой в data.gov.uk, правительственном проекте Великобритании по открытию всех данных, полученных для официальной работы, для свободного повторного использования.

Основные достижения: Тим был посвящен в рыцари королевой Елизаветой II за выдающуюся работу, удостоен награды Software System Award, Гордости Британии и Молодого новатора года (1995).

4. Бьярне Страуструп

Кто он: Бьярн Страуструп — специалист по информатике, профессор, работает в Morgan Stanley. Он был руководителем отдела исследований крупномасштабных программ Bell Labs.

Что он сделал: Бьярн Страуструп работал вместе с Деннисом Ричи, совместно разрабатывая язык Си. В 1978 году он начал разрабатывать язык C ++ (позже названный C с классами). Он написал его определение, произвел первую реализацию и спроектировал все ее основные средства. Страуструп также написал учебник для языка, который он разработал, язык программирования C ++.

Основные достижения: он был награжден премией Уильяма Проктера за научные достижения, премией Грейс Мюррей Хоппер, и он стал научным сотрудником Музея истории компьютеров за свое изобретение C ++.

3. Линус Торвальдс

Кто он: Линус Торвальдс, инженер-программист, координатор проекта и хакер. Он человек, стоящий за операционной системой Linux.

Что он сделал: он написал код ядра Linux (около 2%) и систему контроля версий Git. Многие популярные ОС, включая Ubuntu, Fedora и Android, основаны на Linux. Торвальдс владеет торговой маркой «Linux» и следит за ее использованием.

Основные достижения: он был удостоен премии «Технология тысячелетия» вместе с Шинья Яманака за создание операционной системы с открытым исходным кодом. Он также получил премию EFF Pioneer Award, медаль Ловеласа от Британского компьютерного общества и премию Vollum от Reed College.

2. Деннис Ричи

Кто он: Деннис Ритчи был революционным ученым-компьютерщиком, который сыграл ключевую роль в разработке языка программирования «С» и операционной системы Unix. Он работал в Lucent Technologies & Bell Labs и защитил кандидатскую диссертацию на тему «Структура программы и вычислительная сложность». Тем не менее, он никогда официально не получил докторскую степень.

Что он сделал: Он разработал язык программирования «C», на котором основаны многие используемые в настоящее время машинный язык и технологии, включая ваш PS4 / Xbox. Ричи создал многопользовательскую операционную систему под названием Unix. Он также известен разработкой ALTRAN, B, BCPL и Multics.

Основные достижения: Ричи был удостоен премии Тьюринга, медали Хэмминга от IEEE, премии компьютерных пионеров, стипендиата Музея истории компьютеров и премии Гарольда Пендера.

1. Алан Матисон Тьюринг

Кто он: Алан Тьюринг — ученый, математик, криптоаналитик и логик. Его называют отцом теоретической информатики и искусственного интеллекта.

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

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

самые лучшие программисты — в Китае, России и Польше / Habr

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

Рейтинг HackerRank учитывает задания по 15 наиболее популярным дициплинам. Самые популярные задачи касаются различных алгоритмов, связанных с динамическим программированием, анализом больших данных и другими темами. Для решения таких заданий пользователь может работать с любым языком программирования. Кроме алгоритмов в топ-3 популярных заданий входят задачи по структуре данных и программировании на Java. Такие задания выполняются 9,1% и 9,3% пользователей соответственно. Все баллы специалистов по разным странам анализируются, после чего выводится общий балл для каждой страны из участвующих в рейтинге. Максимальное количество баллов, которое может получить страна — 100.


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

Отчеты HackerRank показывают, что лучшие программисты живут отнюдь не США. И не в Индии, хотя здесь число разработчиков постоянно увеличивается. Лучшие из лучших живут в Китае и России. Китайские специалисты традиционно сильны в математике, функциональном программировании и работе с данными. Китайцы получили максимальное количество баллов — 100. Русские программисты, получившие 99,9% баллов, доминируют в сфере алгоритмов (в решении заданий из этой сферы пробуют силы около 40% пользователей платформы HackerRank). А вот Индия и США размещаются только на 31-м и 28-м местах соответственно. В тоже время с заданиями по Java и структуре данных работает по 10% пользователей. Наименее популярными являются задания по безопасности и распределенным системам. Кроме Китая и России в топ-10 стран с наиболее талантливыми разработчиками оказались Польша, Швейцария, Венгрия, Япония, Тайвань, Франция, Чехия, Италия.

Китай и Россия доминируют далеко не во всех сферах. Например, задания по SQL и Shell лучше всех решают разработчики из Дании и Чехии.

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

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

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

По данным HackerRank, наиболее популярными среди пользователей этой платформы (из разных стран) являются задачи по Java. Исключение — программисты из Малайзии и Пакистана, которые предпочитают С++.

Чаще других успешно решают свои задачи пользователи из Швейцарии. Когда пользователь сдается, не решив задачу, он получает 0 баллов. Процент таких разработчиков максимален в таких странах, как Пакистан, Малайзия и Нигерия. И минимален в Швейцарии, Венгрии и Польше.

Представители HackerRank считают, что если бы сейчас проводилась Олимпиада по программированию, то команда китайцев получила бы золото, россияне стали бы вторыми, завоевав серебро, а поляки — третьими, получив бронзу. А вот Индии и США предстоит изрядно потрудиться, чтобы войти хотя бы в топ-25 олимпийских команд.

Почему российские программисты сильнее всех

Студенты Университета ИТМО — шестикратные абсолютные чемпионы мира по программированию 2015 года/Фото Википедия
.

Университеты

Большой вклад в подготовку сильнейших IT-кадров в России делают университеты: МФТИ, СПбГУ, Университет ИТМО, МГУ им. Ломоносова, Саратовский государственный университет, Уральский федеральный университет. Вузы проводят соревнования по программированию. В Москве Центр развития ИТ-образования МФТИ проводит Международный фестиваль MosCode Festival. Ежегодно проводится чемпионат Урала по спортивному программированию, регулярные соревнования проходят в Санкт-Петербурге, а также в маленьких городах вроде Коврова.

В России и странах бывшего СССР с начала 2000-х проводятся регулярные тренировочные соревнования: учебные сборы в Петрозаводске, Открытый кубок имени Е. В. Панкратьева по программированию. А с 2012 года сначала на кампусе МФТИ, а сейчас во Владивостоке, Гродно, Барселоне и Колламе (Индия) начали проходить сборы Moscow Workshops ICPC, куда со всего мира съезжаются студенческие команды для подготовки к Олимпийским играм по программированию ICPC. На сегодняшний день в них уже приняли участие 167 вузов из 50 стран. Результаты тренировок на буткэмпах впечатляют — 10 из 13 победителей финального чемпионата ICPC 2018 проходили подготовку в Moscow Workshops ICPC. Локальная история российских буткэмпов переросла в глобальную сеть и не имеет похожих по масштабу аналогов в других странах.

Базовые программы у нас и за рубежом в целом похожи, но важен еще и уровень студентов. У нас во многих университетах настолько строгий отбор, что там собираются уникальные по уровню группы. Например, в МФТИ проходной балл по ЕГЭ уже много лет — 94, что наравне с МГИМО делает его самым сложным вузом для поступления в России. Прошедшие отбор ребята получают углубленное образование и много работают в командах. Умение работать в коллективе, хорошо закрепленное физтехами, — это важный навык в бизнесе. Сейчас ведущие вузы России, среди которых, например, НИУ ВШЭ и университет ИТМО, активно развивают предпринимательские компетенции студентов. МФТИ движется в сторону технологического предпринимательства, и многие ребята продолжают после учебы работать в сложившихся во время учебы командах. Это важно, потому что на этапе поиска инвесторов одни из ключевых вопросов — это «кто ваша команда» и «как в ней происходит взаимодействие».

Яркий пример — компания Looksery Inc, основанная Виктором Шабуровым, команда которой разработала популярное приложение, добавляющее маски на лица людей в режиме видео. Ядром компании были участники одной команды по олимпиадному программированию. Спустя всего три года с момента создания, в 2015 году, они продали ее Snapchat за $150 млн. Шабуров сейчас активно поддерживает программы обучения для школьников и студентов. Недавно он организовал фонд Botan Investments и открыл грантовую программу для преподавателей в области машинного обучения.

В московской компании — разработчике алгоритмов трейдинга AIM Tech, которую основал Илья Седошкин, тоже работают медалисты World Finals ICPC из МФТИ: Ренат Гимадеев, Александр Останин, Константин Семенов и другие. Это область, где ценится скорость проведения сделок. А скорость и алгоритмы — это то, что особенно хорошо нарабатывается в спортивном программировании.

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

IT-корпорации и их подопечные

Скоординированная работа вузов и поддержка со стороны IT-компаний сформировали культуру программирования в нашей стране. Бизнес совместно с вузами организует учебные программы, тем самым привносит новые компетенции и модели бизнес-процессов, которые университеты внедряют в образовательную деятельность. Среди компаний, поддерживающих IT-образование в стране: «Яндекс», JetBrains, Mail.Ru Group, «1C», Тинькофф Банк, Сбербанк и другие.

Например, компания JetBrains развивает программу бакалавриата на кафедре математических и информационных технологий в СПбАУ, а также совместно с компанией Acronis — магистратуру в МФТИ. Mail.Ru Group организовал пять образовательных программ по web- и мобильной разработке, искусственному интеллекту и высоконагруженным проектам: «Технопарк» с МГТУ им. Н. Э. Баумана, «Техносфера» с факультетом вычислительной математики и кибернетики МГУ им. Ломоносова, «Технотрек» с МФТИ, «Технополис» с СПбПУ и «Техноатом» с МИФИ.

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

Компании черпают кадры из студенческой среды. Разработка «ВКонтакте» очень близка к олимпиадному подходу в решении задач, потому что его создатели со школы были в этой системе. Например, программной разработкой социальной сети «ВКонтакте» занимался Николай Дуров, двукратный победитель чемпионата мира по программированию ICPC от СПбГУ, и его соратник по команде Андрей Лопатин, тренер Moscow Workshops ICPC, который тренировал победоносные команды СПбГУ. И сейчас во «ВКонтакте» работают чемпионы ICPC Дмитрий Егоров и Павел Кунявский.

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

10 признаков того, что хороший программист из вас не получится / Habr

Привет, Хабр! Представляю вашему вниманию перевод статьи «10 Signs You Will Suck at Programming» автора Jonathan Bluks.

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

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

Будучи преподавателем на курсе «Full-stack Web-development», я работал со многими программистами-новичками. Хорошая новость в том, что мне редко встречались студенты, которые вообще не могли научиться программировать. Я считаю, что умение программировать — такой же базовый навык, как умение читать, писать и считать. Это под силу любому, так как это одна из способностей человека, но этому действительно надо учиться.

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

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

1 | Вам не хватает любознательности


Если вам не очень любопытно как работает компьютер и технологии в целом, вам ни за что не стать успешным программистом.

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

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

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

2 | Вам не хватает самостоятельности и находчивости


Если вы не разовьете в себе умение решать проблемы самостоятельно, вам ни за что не стать успешным программистом.

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

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

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

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

3 | Вам не хватает упорства перед лицом проблемы


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

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

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

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

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

4 | Вы не ощущаете радости от успеха в решении проблем


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

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

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

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

5  | Вам не хватает терпения в учебе


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

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

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

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

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

6 | Вы чувствуете скуку или усталость от долгих размышлений


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

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

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

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

7 | Вы не способны думать самостоятельно


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

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

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

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

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

8 | Ваше мышление негибкое, узкое и/или неорганизованное


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

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

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

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

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

Самокритика: Всегда следует сделать шаг назад, чтобы увидеть целиком всю картину того, как вы подходите к задачам. Как можно сделать это лучше? Есть ли что-то, что могло бы облегчить вашу жизнь? Чего вам не хватает и что могло бы вам помочь?

9 | Вы хотите знать один «правильный» ответ вместо признания спектра «хороших» и «плохих» ответов.


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

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

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

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

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

10 | Вы не уделяете достаточно внимания деталям


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

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

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

Как говорится, дьявол кроется в деталях. И в программировании это действительно так.

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

Бонус: Вы сосредоточены на бизнесе


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

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

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

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

Заключение


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

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

Дисклеймер: все сказанное выше — мое собственное мнение, основанное на профессиональном опыте преподавания веб-разработки. Оно может отличаться от мнения BrainStation.

Где живут лучшие программисты мира?

Многие могли бы предположить, что в Соединенных Штатах. В конце концов, США является домом таких светил программирования, как Билл Гейтс, Кен Томпсон, Деннис Ритчи и Дональд Кнут. Но та же Индия славится своими университетами, например, Индийским институтом технологий (IIT), а хакеры из России считаются весьма эффективными. Есть ли способ определить, в какой стране программисты лучше?

Исследование HackerRank помогло ответить на этот вопрос.

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

По данным HackerRank, самые талантливые программисты живут в России и Китае. Китайские программисты обгоняют все остальные страны по математике, функциональному программированию, а также проблемам структур данных, в то время как русские доминируют в алгоритмах – самой популярной и самой конкурентной сфере. Хотя Соединенные Штаты и Индия обеспечивают наибольшее число участников соревнований, в рейтинге они занимают только 28 и 31 места соответственно.

Лучший язык программирования 2015 года

Какие области наиболее популярны?

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

Какие соревнования наиболее популярны? Процент тестов HackerRank

Самая популярная на сегодня область программирования – алгоритмы. В ней соревнуются около 40% всех разработчиков. Эта область включает сложные задачи по сортировке данных, динамическому программированию, поиску ключевых слов и другие основанные на логике задания. Для участия в таких соревнованиях разработчики могут использовать любой язык, но их выбор может частично объяснить, почему тот или иной язык так популярен. (Алгоритмы также имеет решающее значение для технических интервью, по результатам которых программисты могут быть приняты на работу). С большим отрывом в процентном соотношении, второе и третье место занимают задачи на Java и структуры данных, на которые приходится примерно по 10% участников. Распределенные системы и безопасность — наименее популярные области.

Итак, на основе результатов этих соревнований программисты каких стран показали наилучшие результаты?

Для ответа на этот вопрос был взят средний балл каждой страны во всех областях. Прежде чем найти среднее значение, оценки были стандартизированы для каждой области (путем вычитания среднего из каждого счета, а затем делением на стандартное отклонение), что дало так называемый показатель Z, или стандартный показатель. Это позволило сравнить схожие характеристики отдельных показателей в разных областях программирования, даже с учетом того, что некоторые области являются более сложными, чем другие. Затем Z- баллы представили в таблице от 1 до 100 для легкой интерпретации.

В таблице ниже представлены данные для 50 стран с наибольшим числом разработчиков на HackerRank. Люди из этих стран приняли участие в тысячах соревнований (минимум 2000).

В какой стране лучшие разработчики? Рейтинг составлен с учетом среднего показателя решения всех тестов HackerRank

Поскольку Китай набрал самый высокий балл, китайские разработчики занимают первую позицию списка со счетом 100. Но Китай выиграл с минимальным преимуществом. Россия набрала 99,9 из 100, в то время как Польша и Швейцария закрывают топ рейтинга с баллами в районе 98. Пакистан, расположившийся на 50 месте, набрал всего 57,4 балла из 100.

Две страны, от которых в соревнованиях принимает участие наибольшее число разработчиков, Индия и США, расположились даже не в верхней половине списка. Индия занимает 31 место с общим счетом 76, а Соединенные Штаты – 28-ое, со счетом 78.

Известный хакер о USB-шпионах, москитах, девушках на MySpace и многом другом

Какую страну представляют лучшие разработчики в конкретных областях?

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

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

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

С другой стороны, Россия доминирует в алгоритмах – самой популярной области. Здесь же Китай и Польша занимают второе и третье место соответственно.

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

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

Страны и их вероятность пройти тест в определенной области. Страны со значительно высоким или низким процентом выполнения задач в определенной области. Столбцы слева–направо: область программирования; высокая вероятность; низкая вероятность.

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

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

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

Какие языки программирования предпочитают разработчики разных стран?

Интересно также узнать, имеют ли определенные страны предпочтения в языках программирования? Правда ли, что C++ — наиболее популярный язык в Индии? Или что большинство мексиканцев выбирают Ruby?

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

Какие языки программирования предпочитают разработчики разных стран?

В целом, разработчики разных национальностей участвуют в Java-соревнованиях чаще, чем на любом другом языке программирования (с некоторыми исключениями, такими как Малайзия и Пакистан, где предпочитают C++, и Тайвань, где доминирует Python). Шри-Ланка занимает первое место среди стран, предпочитающих Java. Индия, которую представляет наибольшее число разработчиков на HackerRank, занимает 8 место.

Как научиться программированию с нуля. 5 онлайн-сервисов

Какая страна никогда не проигрывает?

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

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

Какая страна никогда не проигрывает? % разработчиков в нулевым показателем

Какая страна победит на Олимпийских играх по программированию?

Каждый день разработчики по всему миру конкурируют друг с другом, чтобы стать следующим Гейтсом или Кнутом. Если провести Олимпиаду среди разработчиков, на основании рассмотренных выше данных, можно предположить, что Китай возьмет золото, Россия – серебро, а Польша – бронзу. Хотя они, безусловно, заслуживают похвалу уже за те результаты, которые демонстрируют сейчас, в то время как США и Индия не входят даже в топ-25.

Высоких вам конверсий!

По материалам: priceonomics.com.

27-11-2016

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *