[Перевод] Почему каждому разработчику сначала стоит изучить теории Computer Science
Любой может научиться кодить. Теории computer science научат вас, как программировать.
Разработчики обычно начинают изучать программирование в колледже, университете или на практике для стажёров. Некоторые программисты-самоучки учат программирование, экспериментируя с технологиями и просматривая туториалы в Интернете. Кто-то объединяет все эти этапы.
Разработчики обычно изучают теории computer science в своих университетах. Основы computer science состоят из таких тем, как структуры данных, алгоритмы, принципы работы сетей, дискретная математика, искусственный интеллект, компьютерная графика, шаблоны проектирования и человеко-машинное взаимодействие. Как говорилось выше, не каждый разработчик проходит через университет, и такие люди сразу переходят к программированию, не затрагивая основ computer science. Иногда такие разработчики изучают основы computer science на своей первой работе.
Я начал программировать на Visual Basic 6.0, когда мне было 13 лет. Мой колледж начал преподавать мне программирование, когда мне было 15 лет. Я создал сотни свободных программ, когда учился в колледже перед университетом. В то время я не освоил теории computer science — я просто знал, как кодить. Университет научил меня теориям computer science. Эти теории сильно помогли мне в карьере разработчика ПО и в работе с open source. По моему опыту, изучение основ computer science до программирования обладает следующими преимуществами:
Каким бы мощным ни было современное оборудование, производительность всё равно является критически важным фактором разработки ПО. В прошлом из-за ограничений компьютерного «железа» почти все разработчики вынуждены были писать сверхоптимизированный код. Не стоит забывать, что эти люди отправили на Луну корабль с компьютером, имевшим всего 4 килобайта памяти. Сегодня ситуация совершенно иная. Теперь нам нам нужно 16 гигабайт физической памяти только для того, чтобы запустить современный редактор кода.
Однако если мы работаем близко к уровню оборудования или наш продукт используется миллионами конечных пользователей, то нам всё равно необходимо писать высокооптимизированный код. Если нам нужно писать оптимизированный код, то придётся использовать подходящие структуры данных, быстрые алгоритмы и оптимизированные модели памяти. Эти знания можно взять из таких теорий computer science, как структуры данных, анализ алгоритмов и архитектура процессоров.
По мнению большинства, слово «кодинг» имеет то же значение, что и слово «программирование». Однако нужно объяснить неочевидный факт. Кодинг — это не программирование, а кодеры и программисты — не одно и то же. Кодер может писать код на языке высокого уровня для компилятора или интерпретатора. Чтобы писать код, вам не нужно знать, как работает компьютер или его отдельные части. С другой стороны, программист тоже пишет код, но понимает и внутреннее устройство компьютера. Программист может создавать полнофункциональные программные продукты при помощи минимизации ошибок. Другими словами, кодинг — это подмножество сферы программирования.
Кодером может стать каждый, достаточно научиться синтаксису выбранного языка программирования. Но чтобы стать программистом, необходимо изучить теории computer science.
В отрасли разработки ПО можно пойти по одному из двух путей: или стать мастером на все руки, или профессионалом в выбранной области. На самом деле, разработчики могут стать профессионалами и в нескольких тесно связанных дисциплинах. Например, мои любимые области — это облачные вычисления и архитектура ПО. Сегодня большинство джуниор-разработчиков из-за современных тенденций начинают свою карьеру в сфере фронтенда. Спустя несколько лет работы от подобных разработчиков часто слышны заявления, что им не нравится то, чем они занимаются.
Все современные карьерные пути основаны на подразделах computer science, таких, как разработка ПО, проектирование сетей, облачные вычисления, мобильные вычисления, проектирование встроенных систем, проектирование баз данных и т.д. Если изучить основы всех этих подразделов, то выбор любимой сферы окажется простейшей задачей.
Разработка ПО не всегда является прямолинейным процессом. Разработчики часто сталкиваются с проблемами, требующими надёжного и эффективного решения. Триумф решения в сфере разработки ПО зависит от навыков и опыта команды. Например, команда может реализовать быстрое, но неэффективное решение. В то же время, другая команда может найти эффективное решение той же задачи. Теории computer science помогают разработчикам придумывать эффективные и умные решения. Например, в проекте open source Git проблемой было эффективное хранение объектов коммитов. Первые разработчики Git решили её при помощи хеширования и древовидной структуры данных.
На самом деле, любой разработчик способен решать задачи с собеседований в крупных технологических компаниях. Но реализовывать эффективное и оптимальное решение можно только с помощью теорий computer science.
Отличным способом проверки своих навыков решения задач являются онлайн-соревнования по программированию. Крупные технологические компании используют на собеседованиях похожие задания, чтобы найти тех, кто лучше умеет решать задачи. Они не просят кандидатов писать код по готовой спецификации ПО. Вместо этого они тестируют знания теории computer science.
Чтобы начать работать в сфере разработки ПО, необязательно знать теории computer science, однако они дают вам некоторые привилегии. То же самое относится и к языкам программирования. Разумеется, разработчики могут начинать программировать с любого современного языка программирования. Проще всего начинать с Python и JavaScript. Но если вы начнёте с языка C, то это даст вам больше преимуществ.
Иногда начинать разработку ПО с теорий computer science не так просто, как начинать с кодинга. Однако без теорий computer science вы станете кодером, но не программистом. Тем не менее, вы можете выбирать сами, стать ли кодером или программистом. Программирование — это решение задач разработки при помощи кодинга и с пониманием внутреннего устройства систем. Следовательно, если начать с теории, то можно стать более качественным программистом.
На правах рекламы
Если для работы необходим VDS с мгновенной активацией на Linux или Windows, то вам однозначно к нам — сервер готов к работе через минуту после оплаты!
Присоединяйтесь к нашему чату в Telegram.