Любой может научиться кодить. Теории 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.
Kwisatz
У меня все сильнее ощущение что все эти статьи из другого мира. Читаешь, совершенствуешься, сомневаешься, потом приходишь в крупную companyname а там дикие дилетанты за дикие бюджеты на коленке какими то дикими костылями код в продакшен хреначат в дикие сроки.
Kanut
В большинстве фирм где я работал действительно большая часть народа просто «хреначила в продакшен». Но при этом всегда было как минимум несколько человек(а местами и целые отделы), которые как раз таки занимались архитектурой, концептами, оптимизацией и другими подобными вещами. И да, они не всегда получали больше денег или как минимум получали не сильно больше. Но «хреначить в продакшен» им было не надо.
И тут уже каждый может решать за себя чем из вышеупомянутого он лично хочет заниматься.
Kwisatz
«Хранечинье в продакшен» я давно готов пережить. Я не готов пережить когда перед этим «занимались архитектурой, концептами, оптимизацией и другими подобными вещами», причем годами, а на выходе все равно полная хрень, да и базируется все это часто на таком легаси что уж ей богу переписать снуля дешевле, но отделы которые должны этим заниматься тоже годами мучаются и рожают еще более веселую хрень.
Я правда верю, что где то есть те самые люди, которые прям разработчики, умные, компетентные, я их иногда даже встречаю то тут то там, но такое ощущение что они как динозавры, потому что если посмотреть на отдел крупной компании — боже что за жесть.
Kanut
To, что кто-то занимается «архитектурой, концептами, оптимизацией», само по себе конечно не гарантирует что на выходе не будет полной хрени.
Но на мой взгляд если этим вообще никто не занимается, то в более-менее крупном проекте у вас стопроцентно на выходе будет полная хрень.
И если этим занимается кто-то, кто не обладает необходимой для этого квалификацией, то тоже редко получается что-то хорошее. И на мой взгляд те самые computer science вполне себе полезно знатъ если хочешь заниматься такими вещами.
Kwisatz
Да все верно вы говорите, но как я написал в первом посте «где то в соседней вселенной»…
EveryDayMiracle
Потому, что жизнь не учебник логики. Люди деньги зарабатывают в первую очередь ибо кушать хочется, а все остальное по обстоятельствам.
Kwisatz
Ну знаете мне почему то представляется идеальный мир, где каждый просто делает свою работу, вот просто берет и делает, как было бы здорово, правда?)
moroz69off
Да.
MentalBlood
Ну почему дилетанты, продать хрень за "дикие бюджеты" — это вам не это. Это ж фактически самые дорогие специалисты получаются
Kwisatz
Как правило это не их заслуга, хотя встречается и так.
jakobz
Если не понимать, хотя-бы на подсознании, теорию - то любое программирование будет выглядеть «хренченьем в энтерпрайз». Один сделал так, другой - иначе. У первого тормозит, не масштабируется, и хрен фичу впишешь. У другого - все ништяк. Без теории это будет выглядеть как «второму просто повезло». С теорией (в самом широком смысле) - можно понять что было на входе, и почему у второго получилось.
Kwisatz
А я не спорю, вот только судя по тенденции доля понимающих снижается с ужасающей скоростью и чем восточнее тем хуже.
Kanut
Это нормально и это происходит или происходило не только в ИТ.
То есть в любой отрасли/направлении у вас сначала есть небольшое количество профессионалов, которые полностью разбираются во всех аспектах и можно сказать создают эту отрасль с нуля. Потом отрась начинает расти, аспектов становится больше, в неё приходит больше людей. В какой-то момент разбираться во всём уже невозможно и люди начинают специализироваться. Потом размер становится настолько большим что профессионалов начинает нехватать и происходит разделение на «мастеров» и «подмастерьев».
Если бы раньше был интернет и форумы, то можно было бы почитать как на эту тему ругались какие-нибудь электротехники или машиностроители. Но в принципе это можно увидеть и в том или ином художественном произведении :)
Kwisatz
Все красиво говорите, но я наблюдаю в процессии ужасающее количество людей прикидывающихся «мастерами и подмастерьями», особенно «бородатых дядь», на высоких позициях (вплоть до CTO) которых не то что в тимлиды, в джуны я бы взять постеснялся. Ни о какой специализации тут речи не идет, банальные лень, обман, мимикрия, халтура итд
ЗЫ И еще раз, в конце концов, я за то чтобы каждый (!) просто делал свою работу.
Kanut
Не поймите меня неправильно, я не утверждаю что нет никакой проблемы. Просто как говорил классик «Ничто не ново под луною».
Kwisatz
Не ново, но когда встречаешься целые диты как адекватных ребят 5/25 и не раз и не два, становится ооочень грустно.