[Перевод] Какие технологии чаще всего используются на хакатонах?

c7dc89f2e3714fa191f3a0077416cecb.png

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

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

Как, например, на хакатоне.

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

О сообществе Devpost


Devpost (в прошлом — ChallengePost) — это сообщество, в котором разработчики могут делиться своими проектами, создавать свои портфолио и принимать участие в онлайн- и оффлайн-хакатонах.

В своем первом отчете Devpost составили рейтинг технологий, которые чаще всего использовали студенты в течение 2014–2015 учебного года. Новички и опытные программисты, студенты школ и колледжей — все они являются источником инноваций в области программного (а также аппаратного) обеспечения и демонстрируют одинаковую заинтересованность как в научных устремлениях, так и в создании ориентированных на пользователя продуктов.

Методика ранжирования


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

Авторы отчета изучили теги проектов каждого из участников (всего их оказалось 13 281 человек) 160 студенческих хакатонах, представивших в сумме 9 898 проектов либо на хакатонах, либо в своем портфолио на сайте Devpost.

Список технологий, используемых в рамках студенческих проектов, включал в себя языки программирования, коммуникационные API, API социальных сервисов, API платежных систем, API геолокации, музыкальные API, бэкенд- и фронтенд-фреймворки, базы данных, игровые движки, интегрированные среды разработки (IDE), библиотеки, модели «бэкенд как услуга» (BaaS), «платформа как услуга» (PaaS) и «инфраструктура как услуга (IaaS), протоколы, текстовые редакторы, аппаратное обеспечение и многое другое. Для каждой категории авторы отобрали по 5 самых популярных тегов.

Рейтинг технологий и API


Мобильные платформы:
Какие мобильные платформы интересуют программистов? 38,2% разработчиков выбирают Android, 22,7% — iOS, и лишь 4,9% используют Windows Phone. Оставшиеся 34,2%, судя по всему, с любимой платформой пока не определились.Языки программирования:

  1. HTML/CSS
  2. JavaScript
  3. Python
  4. Java
  5. C/C++
  6. PHP
  7. Objective-C
  8. C#
  9. Swift
  10. JSON
  11. Ruby
  12. XML
  13. Ajax
  14. Shell
  15. Processing
  16. Lua
  17. CoffeeScript
  18. Go
  19. MATLAB
  20. OpenGL
  21. R
  22. Groovy
  23. XAML
  24. Perl
  25. WebGL
  26. Applescript
  27. Scala
  28. GLSL
  29. JSP
  30. LaTeX


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

Примечание: HTML не является языком «программирования» в буквальном смысле: это язык разметки, то есть средство для форматирования частей документа. Но, так или иначе, это всё равно некий «язык», и им постоянно пользуются практически все веб-разработчики, так что такие семантические детали мы будем опускать.

Неожиданно видеть в этом списке Swift, так как Apple представила этот язык всего 13 месяцев назад.

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

Коммуникационные API:

  1. Twilio
  2. Yo
  3. SendGrid
  4. Moxtra
  5. Mailjet


API социальных сервисов:

  1. Facebook
  2. Twitter
  3. Reddit
  4. Instagram
  5. Google+


API платежных систем:

  1. Venmo
  2. Paypal
  3. Stripe
  4. Braintree
  5. Blockchain


Геолокационные API:

  1. Google Maps
  2. Yelp
  3. Google Places
  4. Esri ArcGIS
  5. Mapbox


Музыкальные API:

  1. Spotify
  2. Echo Nest
  3. SoundCloud
  4. Google Play
  5. Rdio


Какая коммуникационная API-платформа, согласно их данным, наиболее популярна? Twilio. Социальная? Facebook (ясное дело), затем Twitter (тоже ожидаемо). API платежных систем? Venmo, опередивший Paypal. Что удивительно, оба обогнали Stripe. Google Maps — единоличный лидер в категории геолокации, как многие могли предположить.

Лидерство Twilio в категории коммуникационных API более чем очевидно хотя бы потому, что разработчики очень часто пользуются Twilio на хакатонах. Такие разработчики встречаются чуть ли на каждом хакатоне, даже если это всего лишь один из евангелистов, действующих неофициально. Необходимым условием работы на Twilio является создание проекта на базе его API. Более того, один из ведущих разработчиков Twilio покинул компанию и основал Major League Hacking — компанию, которая занимается проведением хакатонов для студентов по всему миру.

Фреймворки для разработки приложений:

  1. Node.js
  2. Flask
  3. AngularJS
  4. Ruby on Rails
  5. Django


Базы данных:

  1. MongoDB
  2. MySQL
  3. SQLite
  4. PostgreSQL
  5. FoundationDB


Фреймворки для iOS:

  1. Core Location
  2. Mapkit
  3. UIkit
  4. Core Data
  5. AV Foundation


Игровые движки:

  1. Unity
  2. Pygame
  3. libGDX
  4. GameMaker
  5. Unreal Engine


Если говорить об игровых движках, то явным лидером является Unity с более чем 1000 представленных проектов. Следующий в списке — Pygame с менее чем 50 проектами.Интегрированные среды разработки:

  1. Android Studio
  2. Xcode
  3. Eclipse
  4. Visual Studio
  5. Jade


Библиотеки:

  1. jQuery
  2. Express.js
  3. Socket.io
  4. OpenCV
  5. D3.js


«Бэкенд как услуга» (BaaS):

  1. Parse
  2. Firebase
  3. Meteor.js
  4. MongoLab
  5. Amazon RDS


«Платформа как услуга» (PaaS) и «инфраструктура как услуга» (IaaS) (Топ-10):

  1. Azure
  2. Heroku
  3. Amazon Web Services
  4. DigitalOcean
  5. IBM Bluemix
  6. Google App Engine
  7. Linode
  8. Atlantic.Net
  9. OpenShift
  10. Rackspace


Утилиты командной строки:

  1. cURL
  2. Makefile
  3. Gradle
  4. Yeoman
  5. ngrok


Текстовые редакторы:

  1. Sublime Text
  2. Vim
  3. Notepad++
  4. Brackets
  5. Atom


Что же можно сказать о проектах, которые пробивают стены виртуального мира и вторгаются в мир физических технологий? Аппаратное обеспечение:

  1. Arduino
  2. Myo
  3. Pebble
  4. Leap Motion
  5. Oculus Rift
  6. Raspberry Pi
  7. Intel Edison
  8. Kinect
  9. Particle (formerly Spark)
  10. Google Cardboard
  11. GPS
  12. Servo
  13. 3D Printing
  14. Android Wear
  15. Meta (smart glasses)
  16. Google Glass
  17. Accelerometer
  18. Tessel
  19. Muse (headband)
  20. Intel Galileo


Ожидаемой королевой «железного» бала стала аппаратная платформа Arduino. Она достаточно гибкая и легко поддается изменениям, являясь «мозгами» практически каждого простого электронного проекта, и не слишком затратная, так что вы не сильно пострадаете, если сгорят две-три платы. Именно поэтому ее предпочитает большинство любителей электроники. За ней плотно идет не менее известное, но более узкоспециализированное «железо»: браслет-манипулятор Myo, умные часы Pebble, детектор движения Leap Motion и шлем виртуальной реальности Oculus Rift. Любопытно, что универсальный и недорогой компьютер Raspberry Pi оказался лишь на 6 месте.Другие API и технологии
Не все технологии, отмеченные студентами, входят в одну из категорий. Некоторые входят сразу в несколько. Ниже перечислены еще несколько технологий, попавших в разные категории:

  • AlchemyAPI
  • Autodesk
  • Bitcoin
  • Bloomberg
  • Canvas
  • Capital One
  • Docker
  • Dropbox
  • Eventbrite
  • Evernote
  • Face++
  • Giphy
  • IBM Watson
  • Indico
  • Kimono
  • Machine Learning
  • Maya
  • MetaMind
  • Mojio
  • Nginx
  • OCR
  • Ordr.in
  • Postmates
  • Priceline API
  • Qualcomm Vuforia
  • Rhine
  • Sabre
  • Selenium
  • SolidWorks
  • Tomcat
  • TripAdvisor
  • Uber
  • Weather Underground
  • Wit.ai
  • Wolfram Technologies
  • Ziggeo


Основные выводы


Большинство проектов, в которых принимала участие выборка студентов, сводилось к веб-разработке или мобильной разработке, и составленный нами рейтинг языков программирования отражает эту ситуацию. Имея в своем распоряжении 24–48 часов, студенты на хакатоне, как правило, занимались веб-разработкой с использованием API и разработкой мобильных приложений.

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

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

CSS, Objective-C, Swift, и Lua занимают высокие позиции на Devpost, учитывая их применение в веб-разработке, разработке приложений для iOS и создании игр соответственно. Такие языки, как C++, R, Perl, и Scala чаще используются в корпоративных системах, бэкенд-приложениях и при обработке статистических данных и гораздо реже используются на хакатонах и в студенческих проектах.

Разработка под конкретное аппаратное обеспечение пользовалась особой популярностью у судей в 2014–2015 годах. 10% проектов-победителей сопровождались тегом «hardware», 8,2% — разработки, использовавшие Arduino, 5,3% — проекты для Pebble, 4,8% — Leap Motion, 4,5% — Myo и 3,9% — Oculus. Те, кто занимался разработкой под одну из этих платформ, занимали призовые места чаще, чем непризовые.

Во время весеннего семестра популярность Pebble, Oculus, Leap Motion, Intel Edison, Raspberry Pi, Muse и Meta возросла, вероятнее всего, благодаря финансовой поддержке компаний.

Несмотря на недавний рост интереса к базам данных NoSQL (например, MongoDB и Redis), реляционные базы данных все еще остаются довольно популярными.

Bootstrap и другие подобные инструменты для фронтенд-разработки пользуются популярностью у новичков. Конкуренция в пространстве моделей PaaS/IaaS постоянно растет, и появляется еще больше возможностей для использования методологии DevOps. В связи с тем, что модель XaaS все в большей степени превращается из непосредственно услуги в товар, лидерам индустрии и новым игрокам придется предоставлять более персонализированную поддержку, чтобы выделиться на фоне остальных.

Среди технологий, показавших бурный рост во второй половине учебного года, можно выделить Unity, Intel Edison, Bootstrap, Meteor.js, Flask, OpenCV, Jade, DigitalOcean, Ionic, Wolfram Technologies, Linode, Postmates, Capital One, Blender, Swift, и SQLite.

Вместо заключения


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

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

© Habrahabr.ru