Если вы выбрали профессию программиста, учеба, как правило, становится вашим постоянным спутником, нравится вам это или нет. В этой области «выучить что-то раз и навсегда» маловероятно — постоянно появляются новые решения, новые фреймворки и, в конечном итоге, новые языки.
В сегодняшней статье мы расскажем, почему разработчикам важно оставаться «вечными студентами», что говорит статистика Stack Overflow об изучении новых языков и почему программирование постепенно превращается в метод обучения.
другие дисциплины.
Фото hackNY.org CC-BY
Из области очевидного
Привычка цепляться за старое и игнорировать новое (даже если новое для вас — Java или Python) рано или поздно может сыграть с разработчиком злую шутку.В этом, например, конечно Джон Грэм-Камминг, технический директор Cloudflare. Рассказывая о том, чему его научили годы программирования, он отмечает: «Некоторые люди чрезмерно интересуются тем или иным языком и пишут только на нем.
Это ошибка.
Не существует единого языка, который идеально подходил бы для решения всех проблем».
Джон рекомендует всем, кто участвует в разработке, изучить как можно больше различных решений, языков и библиотек.
Его поддерживает разработчик Джош Брэггер в своем выбор «антирекомендации» о том, как наиболее быстро и эффективно выгореть при написании кода.
Стремитесь узнавать новое – хотя это очевидный совет, тем не менее он важен.
И чем более опытным программистом вы становитесь, тем труднее ему следовать – как справедливо отмечает Джон Грэм-Камминг: «Я уже недостаточно молод, чтобы знать все [о разработке]».
Кто что изучает: немного статистики
Соучредитель Stack Overflow Джефф Этвуд в своей статье об ужасах кодирования рисует еще более драматичная картина: «Крутые разработчики очень хорошо программируют, можно сказать фантастически хорошо.Если они чем-то похожи на меня, то почти каждую секунду бодрствования они проводят за компьютером — почти всю свою жизнь».
Однако даже если это так, время, потраченное на работу за компьютером, можно потратить по-разному – одни посвящают его только бизнес-проектам, а другие находят время для сторонних задач и учебных упражнений.
Первый вариант, по мнению уже знакомого Джоша Брэггера, легко может привести к выгоранию: «Вы начали программировать, потому что вам это понравилось, так почему бы не продолжать в том же духе? Потратьте немного свободного времени, пытаясь решить интересующую вас проблему».
Это решение подкреплено не только красивыми словами, но и статистикой.
Аналитики изучили данные портала Stack Overflow и пришли к интересным выводам: в будни и выходные (а также днем и вечером) программисты используют разные языки и технологии.
Другими словами, среди всех технологий аналитикам удалось проследить разделение на две группы — те, которые используются в работе, и те, которые интересно изучить или полезно использовать в собственном проекте.
Например, в «рабочую» группу вошли теги, относящиеся к технологиям Microsoft (C#, ASP.NET, SQL Server, Excel, VBA).
А в «группу по интересам» вошли относительно новые языки (вроде Swift), а также Node.js, C и C++.
Кстати, Scala и Ruby on Rails, которые несколько лет назад были в этой группе, сейчас перешли в категорию «рабочих» языков и стали реже использоваться в выходные дни.
Еще один пример технологий, вызывающих интерес в выходные дни, — решения для разработки мобильных приложений и игровой движок Unity3D. Кроме того, аналитики обнаружили, что среди четырех языков (C#, C, Java, Python) программисты C# являются наиболее «корпоративными» и работают «в основном с 9 до 5», а программисты C больше похожи на «художников-фрилансеров».
» : они встают позже, работают дольше и часто оставляют дела до позднего вечера.
Java и Python находятся где-то между этими двумя крайностями (в этот В приложении можно сравнить графики динамики обращений к разным технологиям на Stack Overflow в течение суток).
Подробный рассказ о том, как проводилось исследование, вы можете прочитать Здесь И здесь .
Кстати, универсальный» задачник » для разработчика (независимо от выбранного языка) составил один из инженеров-программистов компании Google. Список включает задачи по основным разделам программирования, от работы с числами до операций с графикой и мультимедийными файлами.
А поскольку это GitHub проект, он содержит не только сами задачи, но и варианты решения (чаще всего на Java и Python, но есть решения и на Swift, Go и даже Befunge).
Когда изучать что-то новое – это боль
Однако в процессе изучения чего-то нового вы можете столкнуться с совершенно неожиданными (и даже шокирующими) задачами.Эту историю рассказал разработчик Джо Лоури, написавший текст под названием «Худшая среда программирования в мире».
В 1990 году Джо пошел работать в компанию, которая использовала язык БАНКСтар .
Итак, в свой первый день работы Джо увидел примерно следующее: 8607,,,1
11547,15475,22002,22002
1316,1629,1,1649
3001,1316,3,30078
11528,22052,22002,22002
9301,0,1528,1528
31568,10001,800,107
8560,,,1568
8550,210,,
3001,,,
3100,1316,3,30089
11547,15475,22002,22002
3001,1316,3,30089
3001,1317,3,10000
8400,,,
8550,700,801,
3001,,,
9301,0,522,522
3000,1284,3,10001
8500,,3,
8500,,5,
1547,,1,-2301
Кстати, Джо потребовалось две недели, чтобы привыкнуть к языку и начать активно им пользоваться.
На помощь Джо пришли любимые инструменты разработчика BANCStar: матричный принтер, цветные маркеры и папка, содержащая распечатки десятков табличных значений из системы.
Кстати, распечатки в папке «фанатично обновлялись, как только кто-то менял что-то более-менее существенное» — все это, естественно, вручную.
Как заявил Джо в своем статья об этом языке, впервые опубликованном в 1997 году: «[Привожу часть исходного кода] Меня не слишком беспокоит распространение внутрикорпоративной информации, поскольку этот код могут прочитать десять человек на планете».
Фактически, в начале 90-х банковские структуры действительно использовали этот язык — хотя он выглядит как эзотерический язык программирования.
Кстати, единственными допустимыми символами в этом языке являются цифры, знак минуса, запятая (а также переносы строк), а комментировать код строго запрещено.
При этом средняя длина рабочего файла, написанного на BANCStar, по воспоминаниям Джо, достигала нескольких сотен (в редких случаях тысяч) строк.
По сравнению с BANCStar, большинство популярных сейчас языков явно более «человечны» и их гораздо проще изучать и использовать.
Хотя, как справедливо отмечает Джон Грэм-Камминг, «[языковые войны] в основном предназначены для проигравших, потому что это «не подлежит сомнению».
Например, когда я пишу на PHP, результаты ужасны, но другие люди могут творить с этим языком чудеса».
Кто знает, может быть, среди 1350 файлов, написанных на BANCStar, есть и шедевры, хотя оценить их сейчас мало кто способен.
Программирование как стиль мышления
Конечно, пример BANCStar — исключение из правил.Подавляющее большинство современных языков программирования действительно легко выучить.
Более того, некоторые разработчики и ученые даже полагают, что процесс обучения программированию меняет наше представление о новых концепциях.
Такую позицию занимает Аллен Дауни, профессор информатики Олинского инженерного колледжа в Массачусетсе и автор несколько книг по программированию.
Он помнит , что раньше для изучения программирования часто использовалась комбинация «естественный язык — математическая запись — псевдокод — код».
Естественный язык выразителен и понятен, псевдокод более точен, математическая запись обеспечивает краткость, а сам код можно напрямую использовать в работе.
С другой стороны, современные языки программирования обладают всеми этими качествами (выразительностью, точностью, краткостью и исполнительностью) и поэтому сами могут использоваться не только как конечная цель, но и как средство обучения.
В качестве примера Аллен Дауни приводит обработку сигналов – с одной стороны, этот раздел радиотехники можно изучать «снизу вверх» – то есть сначала проанализировать теорию обработки сигналов (математические методы преобразования аналоговых сигналов), а затем переходим к написанию приложений.
Однако современные языки программирования позволяют перевернуть весь процесс — начать с использования библиотек, реализующих самые важные алгоритмы, и только потом детально разбираться, как они работают. Такой подход, на первый взгляд, кажется, мягко говоря, «нестандартным», но он помогает сделать процесс обучения более интерактивным и сохранить мотивацию к обучению на протяжении всего курса.
Этот формат «погружения в задачу», возможно, не похож на классическое обучение, но попробовать стоит – есть вероятность, что умение программировать в будущем станет таким же базовым требованием для изучения новых дисциплин, как чтение, письмо.
и знание основных разделов математики.
И все же программирование – это не главное
Даже успешные программисты говорят, что программирование — не главное в их работе.Джефф Этвуд ведет Возьмем пример Билла Гейтса, который в одном из своих выступлений заявил, что после 3-4 лет работы в профессии программист уже не сможет радикально улучшить свои навыки - если за 3-4 года он не станет "звездой" », то вряд ли он потом «выстрелит».
Это приводит нас к парадоксу — оказывается, что опыт и знания, которые мы приобретаем с годами, не превратят нас из «сильного середнячка» в «суперкодера».
Тогда чем определяется такая возможность? Оставляя в стороне врожденную гениальность, Твуд утверждает следующее: наш уровень во многом определяется тем, как мы воспринимаем все, что не имеет прямого отношения к разработке — речь идет об изучении пользователей, бизнес-процессов, особенностей отрасли, в которой работает разработчик.
А это, в свою очередь, еще больше расширяет «горизонты обучения» — получается, что «всесторонне образованный программист» должен не только «кодировать в перерывах от работы» (на новом и более интересном для него языке), но и быть готовым использовать навыки разработчика при изучении других дисциплин (например, разделов физики или математики), но также должен уделять пристальное внимание всем процессам, происходящим «вокруг развития».
Картина, конечно, утопическая, но представьте, каково было бы вам реализовать эти советы, если бы в вашем распоряжении был язык BANCStar и папка с таблицами.
Поделитесь в комментариях своим опытом «обучения на протяжении всей жизни»: какие языки/фреймворки вы изучаете сейчас и почему? Какие «сторонние дисциплины», не связанные с программированием, по вашему мнению, помогут вам стать лучшим программистом? Теги: #Университет ИТМО #программирование #Развлекательные задачи #программирование #Анализ и проектирование систем #Совершенный код
-
Iphone От Apple Не Будет
19 Oct, 24 -
Проблемы Российского Образования
19 Oct, 24 -
Трагикомедия С Участием Википедии
19 Oct, 24