7 дисциплин, которые стоит знать программисту

Содержание:

Что такое IT?

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

IT (сокращенное от англ. Information Technology) переводится как информационные технологии и обозначает сферу обработки, сбора, хранения и передачи информации вычислительной техникой. В ИТ технологии входят взаимосвязанные между собой дисциплины по инженерии, науке, технике.

Эксперты ЮНЕСКО под ИТ определяют вычислительную технику с прикладными программами, методы ее взаимодействия с людьми и промышленным оборудованием.

Нужно ли высшее образование программисту?

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

«Программист» — это очень и очень широкое понятие, которое охватывает сотни разнообразных специальностей. Но даже в одной специальности по программированию в одном случае «вышка» будет нужна, а в другом — не нужна абсолютно. Почему так происходит? Допустим, вы талантливый программист, который ищет себе работу. Большинство частных компаний и стартапов в первую очередь попросят вас доказать свои знания и опыт и презентовать проекты, в которых вы участвовали, а потом собственными тестами и задачами проверят вашу квалификацию. Если подойдете, то вас возьмут на работу, даже если у вас на руках будет диплом «ПТУшника». Но если вы со своими «талантами программиста» попытаетесь устроиться в госпредприятие, то, скорее всего, у вас в первую очередь спросят диплом об образовании.

Талантливые программисты нужны везде, но если у него еще будет профильный диплом об окончании вуза, то работу найти будет проще. При этом, анализируя ресурсы, где размещены вакансии для программистов, например, superjob.ru, stackoverjlow.com, hh.ru, получается, что больше 70% всех вакансий не требуют высшего профильного образования, а только опыт. Остальные 30% примерно наполовину разделяются между теми, кому нужно просто высшее образование, и теми, кому необходимо именно профильное.

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

Но раз вы все-таки ищете вузы программирования в России, то давайте будем разбираться с этим вопросом.

Альтернативный экспресс-тест на склонность к программированию

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

«Если человек сможет расписать по шагам как приготовить яичницу, указав не только happy путь, а так же exceptional и alternative, тогда точно сможет стать программистом» — утверждает Николай Каштанов, ИТ-эксперт ICL Services по предоставлению сервиса. 

Если говорить о личностных качествах, то Федор Зубарев, руководитель программ компании Bell Integrator считает, что чаще всего эти два типа людей потенциально могут стать хорошими программистами:
«1-й: дотошные, пунктуальные, иногда занудные. Люди, готовые разбираться с любой мелочью, вникающие во все детали. 
2-й: люди творческие, немного неаккуратные в различных, в том числе и в бытовых, вопросах. Образование — профильное или чисто математическое»

Узнаете себя в одном из типов? Записывайтесь на бесплатный курс по программированию!

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

«Уверен, что добиться успеха в том или ином виде деятельности можно только упорным трудом, который всегда приносит должное вознаграждение. Разработка софта — не исключение. Если такая работа продолжает радовать, если хочется еще что-то поделать „для себя“ — поисследовать, изучить что-то новое — признаки таланта налицо.» — убежден Сергей Стрелков, руководитель направления собственных разработок компании КРОК.

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

Начало усердной работы: профессия «Веб-разработчик».

Навыки и качества хорошего программиста

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

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

Аналитически мыслит

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

Знает, как писать чистый код

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

Стремится быть лучше, знать больше – саморазвивается

Без постоянного саморазвития не стать хорошим программистом. IT-сфера прогрессирует неустанно: появляются новые языки, фреймворки и другие инструменты. Регулярное обновление своих знаний, сомнения в том, что вы знаете «как правильно» приведут вас к успеху в карьере и сделают настоящим профессионалом.

Любит то, что делает

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

Ярослав Никонов, аналитик департамента разработки программного обеспечения компании «Аэроклуб ИТ»:

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

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

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

Разберу пример из моего недавнего проекта в компании «Аэроклуб». Задача состояла в построении дешёвых или быстрых маршрутов из города А в город Б, используя перелёты и ж/д поездки. С одной стороны, задача выглядит довольно простой, ведь мы можем построить ориентированный граф, где вершинами являются города, а ребра — перелётом или ж/д переездом, где вес ребра — это стоимость или время. Далее можно воспользоваться алгоритмом поиска кратчайшего пути, например, алгоритмом Дейкстры. Но есть несколько сложностей:

  1. Цены не статичны и могут отличаться в зависимости от дат.
  2. Хранить данные о ценах на каждую дату за год практически невозможно (за сутки осуществляется более миллиона перелетов).
  3. Получить данные о ценах по всем направлениям на заданную дату очень долгая процедура (измеряется в 10-ах минут, и пользователь обычно не готов столько ждать).
  4. Нужен не самый дешевый маршрут, а несколько дешевых маршрутов (т.к. пользователь хочет увидеть несколько вариантов и выбрать тот, которым ему будет комфортнее добираться).

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

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

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

Правильный выход при подсчете цены за сутки из пункта А в пункт Б должен быть относительным, и строиться относительно цен из других пунктов. Для таких оценок помогает математическая статистика. Построив относительные цены по разным направлениям за сутки, мы решаем проблемы пунктов 1, 2 и 3 и расставляем ровно один вес на каждое ребро, соединяющее вершины графа (города). А используя дискретную математику (теорию графов) можем построить эффективный алгоритм поиска нескольких дешевых (быстрых) маршрутов из пункта А в пункт Б.

Что же нужно сдавать на программиста?

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

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

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

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

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

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

Что нужно сдавать на программиста в колледже?

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

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

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

Какие предметы надо сдавать на программиста, поступающим в колледж после 11-го класса? Это так же русский язык и математика, но где-то могут попросить дополнительно пройти тестирование по физике и информатике.

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

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

Александр Баталов, технический директор Zavento:

Особенно рекомендую книгу «Совершенный код» Стива Макконнелла, ее можно назвать азбукой программирования. В ней описаны многие аспекты разработки, начиная от именования переменных и заканчивая личностными качествами инженера. Они будет полезна для прочтения как новичкам, так и опытным разработчикам (об этом, кстати, пишет и сам автор). В своей работе я ее нередко использую, ссылаясь на отдельные главы при обучении молодых специалистов. Эту книгу надо штудировать от корки до корки, даже предисловие является интересным и полезным. Читается легко, информация представлена в структурированном виде. Кстати, глава 35 этой книги прекрасно ответит на вопрос: «Какие книги и ресурсы стоит изучать».

Ну, и кончено, нельзя обойтись без реального общения. Я сейчас говорю про профильные конференции, где можно пообщаться вживую, расширять свой профессиональный круг знакомств, а также найти потенциального работодателя (если это необходимо). Лично мне нравится it-конференция «Стачка», ежегодно проводимая в Ульяновске в апреле.

Программист и математика

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

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

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

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

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

И тогда произойдет следующее:

  1. Вы определитесь с тем, что требует изучения. После этого можете заниматься самостоятельным изучением, записаться к репетитору или на специальные курсы – предпочтительный формат учебы зависит от вас. У вас будет цель и путь. Поэтому учиться станет легче, чем раньше, когда не было определенности.
  2. Вы станете понимать законы высшей математики без учебников. Этого не хватит для профессионального роста. Зато вы сможете решать локальные задачи и набирать опыт.

Где можно изучить математику

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

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

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

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

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

Для самостоятельной практики можно купить или скачать из Интернета сборник задач.

Выбор языка программирования

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

Давайте так. Мы будем описывать разные ситуации. Читайте каждый пункт по очереди. Если поймете, что этот пункт не про вас, переходите к следующему. И так пока не получите свой ответ.

  1. Хочу что-то предельно простое, может даже не самое практичное. Ваш язык: Ruby.
  2. Я хочу начать кодить для себя, из любопытства или в рамках самосовершенствования. У меня нет на примете проекта, который мне бы хотелось реализовать. Посоветуйте мне лучший способ начать. Ваш язык: Python.
  3. Я хочу начать кодить для себя, из любопытства или в рамках самосовершенствования. У меня нет на примете проекта, но я хотел бы выучить такой язык, чтобы после него было легко переключиться на любой другой (даже если изначально изучение первого языка будет трудным). Ваш язык: С++.
  4. Я хочу кодить для себя, и у меня на примете есть проект. Он связан с сайтами. Хочу выучить самый простой язык из тех, что позволит мне создавать сайты в интернете. Ваш язык: JavaScript.
  5. Я хочу кодить для себя, и у меня на примете есть проект. Он связан с сайтами, но в будущем я хотел бы работать не только с ними. Ваш язык: Python.
  6. Хочу стать программистом для себя, и есть идея проекта, связанного с приложениями на Android. Ваш язык: Java
  7. Хочу стать программистом для себя, и есть идея проекта, связанного с приложениями на iOS Ваш язык: Objective-C
  8. Хочу стать программистом для себя, и есть идея проекта, связанного с компьютерными играми или сложными программами в 3D. Ваш язык: C++
  9. Я иду в программирование ради денег, и хочу получить хорошую работу. Компания не имеет особого значения. Ваш язык: Java или Python.
  10. Я хочу устроиться на работу в компанию и работать с веб-интерфейами. Ваш язык: JavaScript.
  11. Хочу устроиться в компанию и работать с сайтами. Готов потрудиться чуть больше, но охватить при этом более широкий спектр знаний. Ваш язык: PHP.
  12. В будущем я хочу устроиться в крупную корпорацию вроде Google или Facebook. Ваш язык: Python.
  13. В будущем я хочу устроиться работать в Apple. Ваш язык: Objective-C.
  14. В будущем я хочу устроиться работать в Microsoft. Ваш язык: C#.

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

Не теорией единой

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

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

Роман Моисеенко, технический директор и сооснователь Мерката:

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

У вас математический склад ума

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

«Нужно дружить с математикой, как говорил один русский ученый, „она ум в порядок приводит“» — соглашается Сергей Стрелков, руководитель направления собственных разработок компании КРОК.

Любимый вопрос новичков или «насколько программисту нужно знать математику?»

«„Математический склад ума“ в контексте программирования вовсе не синонимичен типичному представлению об „ученом-математике“, которых обычно изображают в фильмах. Программист — это не Рассел Кроу в роли нобелевского лауреата Джона Нэша, погруженный в цифры и постоянную аналитику. В 90-95% своей работы программисты используют только базовый математический аппарат, и лишь в 5-10% задач необходимы глубокие знания математики. Поэтому, мне кажется, что нет особого требования к наличию чересчур глубоких познаний в теории графов или теории вероятности для программиста, но это всегда будет считаться плюсом» — считает Антон Енакиев, Вице-президент Acronis по разработке.

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

«Можно не знать досконально теорию вероятностей и высшую математику, но линейная алгебра должна быть неотъемлемой частью мышления в решении большинства задач или „записана на подкорке мозга“ (как говорят некоторые учителя) — это врожденная грамотность, но в математическом смысле» — считает Воротников Денис, ведущий веб-программист Mercaux Inc. 

Роман Моисеенко, технический директор и сооснователь Мерката:

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

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

Необходимость знания иностранных языков

  • Возможность удалённой работы в международных командах и зарубежных проектах. Кроме престижа и интересных задач, это ещё и заработная плата в долларах или евро (при нашем курсе неплохая история).
  • Возможность работы в международных заказных проектах.
  • Доступность всех материалов по разработке, записей лекций, конференций, курсов и т.д. Фактически у вас исчезают ограничения в самообразовании, все ключевые материалы мира программирования становятся доступны.
  • Возможность эмиграции при наличии такого желания.
  • Возможность стажировок в крупнейших ИТ-компаниях.
  • Дополнительный фактор карьерного роста.
Добавить комментарий

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

Adblock
detector