Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Обзоры
  • Какие знания нужны программисту. Что должен знать каждый программист

Какие знания нужны программисту. Что должен знать каждый программист

10 марта 2016 в 09:56

Что должен уметь программист, чтобы получить работу в сфере финансов

  • Блог компании ITI Capital ,
  • Разработка веб-сайтов

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

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

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

Языки

Одним из самых популярных в сфере финансов языков программирования на протяжение многих лет является C. Его нужно знать не только для поддержки устаревшего кода, но также для организации работы с API в системах электронных торгов и обмена данными с провайдерами.

«Основным языком Уолл-Стрит» называют C++, поскольку самое главное для трейдинговых систем - это скорость. Какой бы хорошо продуманной и отлаженной ни была торговая программа, если в какой-то момент она потратить лишние миллисекунды на «сбор мусора», то это может привести к серьезным убыткам. Тоже самое касается и биржевой инфраструктуры - всевозможных шлюзов передачи данных и «коннекторов» к различным системам.

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

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

Для этих задач очень хорошо подходит C++ и чистый C. Бывает и так, что быстрые роботы создаются и чуть ли не на ассемблере - здесь стоит упомянуть механизмы прямого чтения-записи данных в память сетевой карты, минуя стандартные механизмы работы через драйверы, а также работу с «супербыстрым программируемым железом» вроде FPGA.

По данным создателя ресурса QuantStart и профессионального трейдера Майкла Халлс-Мура, сегодня senior-программист с 5-7-летним опытом работы на C++ может зарабатывать в Лондоне £500-700 в день. В российских компаниях специалисты по C++ также очень востребованы. Кроме того, таких разработчиков часто привлекают профессиональные трейдеры, которые могут создать успешную торговую стратегию, но нуждаются в помощи того, кто мог бы ее запрограммировать.

C# и Java также довольно давно используются различными финансовыми институтами. В основном, крупными банками для их трейдинговой инфраструктуры. Эти языки используются для создания фронтенд-интерфейсов и обработки данных.

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

Тем, кто начинает свой путь в трейдинге или как-то заинтересован в этой области, я бы посоветовал обратить свое внимание на высокоуровневые платформы и языки, такие как.NET и Java. Последняя очень популярна на западных фондовых рынках, у нас пока меньше, но есть хорошие перспективы более широкого распространения этого языка. Это значит, что Java-программисты, будут востребованы в финансовых компаниях, фондах и брокерах. Все-таки.NET - довольно закрытая платформа, которая к тому же имеет целый ряд ограничений. Для low-latency и HFT-торговли она подходит не очень хорошо.

Но и на.NET и на Java можно довольно быстро создавать законченные программные продукты. Главный минус - они бывают не самыми быстрыми (если счет идет на микросекунды).


Для прототипирования квантовых моделей в хедж-фондах и «квантовых» трейдерских подразделений в банках часто применяют скриптовые языки, вроде Python, MATLAB и R.

Кванты-трейдеры и разработчики финансовых приложений часто пишут код своих прототипов именно на скриптовых языков. Затем эти прототипы уже описываются с помощью более «быстрых» языков, вроде С++ разработчиками, специализирующимися на этом.

Клиент-серверные системы

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

Поэтому разработчикам торговых приложений необходимо хорошо разбираться в классах сокетов для C: socket(), bind(), poll() и select(). Работать с ними напрямую практически никогда не нужно, поскольку для этого уже есть множество готовых библиотек, однако понимать, как устроено взаимодействие с ними просто необходимо.

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

Потоки

Создание клиент-серверных систем и многопоточное программирование в финансовой сфере идут рука об руку. Все это подразумевает, к примеру, написание стандартного TCP-сервера, сервера балансировки нагрузки, сервера высокой производительности - разработчик, который хочет заниматься созданием софта в финансовой компании должен уметь это делать. Неплохо также понимать, что такое классы pthreads(), fork(), mutexes и идея семафора в целом. В случае применения Java также нужно разбираться в существующих для этого языка методов синхронизации.

Базы данных

В основе систем для финансовой сферы лежат базы данных, поэтому разработчикам необходимы глубокие знания SQL. Знания простых операторов выбора будет недостаточно - довольно часто в ходе работы придется возиться с созданием процедур хранения, разбираться с индексами, и т.д. Кроме того, необходимо понимать разницу между table-level, page-level и row-level блокировками.

UNIX
Трейдинговые системы обычно используют платформу UNIX (часто это Solaris и Linux). Для Windows, как правило, создаются торговые терминалы с графическими интерфейсами, для разработки же «движка» трейдингового софта используют UNIX.

Это означат, что разработчикам просто необходимо понимать, что такое команды tail, sed, grep, awk, tr и top. Еще лучше, если специалист умеет работать с either vi, vim или emacs и не пугается проблем, вызванных неверной конфигурацией $LD_LIBRARY_PATH.

Навыки отладки

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

Заключение

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

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

P. S. В команду разработчиков ITinvest для проектной работы над

Думается, что любого начинающего программиста интересуют ответы на следующие вопросы:

  • Что такое программирование?
  • Сложно ли стать хорошим программистом?
  • Что нужно знать новичку?
  • С чего следует начинать изучение?

Ответам на эти и некоторые другие вопросы как раз и посвящен данный пункт нашего учебника. Итак.

Программирование (от англ. programming ) – это процесс создания компьютерных программ.

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

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

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

Понятное дело, у всех людей данные качества и возможности развиты по-разному. Поэтому однозначно ответить на вопрос, сложно ли стать хорошим программистом, довольно затруднительно. Кто-то сможет без проблем освоить программирование самостоятельно не выходя из дома, а кто-то без посторонней помощи вообще не сможет начать процесс обучения даже при наличии всех учебников. В любом случае нужно помнить, что хорошими программистами не рождаются - ими становятся. При этом не нужно думать, что стать лучшим программистом - это значит с отличием окончить соответствующий ВУЗ. Есть довольно много примеров, когда целеустремленные самоучки во многом превосходят дипломированных специалистов. Это связанно с тем, что самоучки с большим желанием изучают интересующую их область и в случае возникновения трудностей не бегут к своим учителям или преподавателям, а пытаются самостоятельно одолеть проблему, упорно рассматривая различные возможности и варианты решения, листая страницы учебника или же бороздя просторы Интернета в поисках ответов на специализированных сайтах и форумах. К слову, по данным исследований страховой компании GoCompare почти четверть из богатейших людей планеты по версии журнала Forbes за последние 20 лет либо совсем не учились в университете, либо покинули его еще до получения диплома. При чем большинство из них, как раз и являются представителями IT-области! Вот лишь несколько примеров имен таких людей: Билл Гейтс - компания Microsoft, Марк Цукерберг - соцсеть Facebook, Стив Джобс - компания Apple, Майкл Делл - компания Dell Computer Corporation, Ларри Элисон - компания Oracle Corporation, Ян Кум - WhatsApp.

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

Однако одного чтения для изучения языка программирования не достаточно. Большую часть времени нужно посвящать именно набору кода и практическому решению различных задач. Нужно разрабатывать как можно больше программ, начиная с самых простых и заканчивая сложнейшими алгоритмами, посвящая этому 85 -90% своего учебного времени. И вообще, хорошим программистам всегда мало знаний в той области программирования, в которой они являются специалистами. Поэтому они постоянно ищут что-то новое не только в своей области, но и в смежных областях, тем самым непрерывно совершенствуясь и расширяя свой кругозор. Так что запасайтесь терпением, пробуйте, делайте шаг назад, но не сдавайтесь и делайте два шага вперед, и тогда у вас наверняка все получится!

Быстрый переход к другим страницам

  • Что нужно знать начинающему программисту?

Мой список включает следующие языки:

  1. C++ . Именно на этом языке написаны многие из ниже указанных платформ (JVM, CLR, Node и другие). Кроме того, с его помощью вам будет проще понять, как вручную выполнять оптимизацию памяти.
  2. C# или Java. Нет, вам не нужно знать сразу оба. Изучение одного из этих объектно-ориентированных языков очень похоже на изучение другого.
  3. HTML. Я не считаю его одним из языков программирования, но другие придерживаются именно этого мнения, поэтому…
  4. CSS . Крайне необходим для любых видов веб-разработки.
  5. JavaScript. Его более современный и приятный вариант, а не та дрянь, которой мы пользовались 20 лет назад. Заметьте: сам язык не сильно изменился с того времени и вплоть до нынешнего момента. Мы, а именно, программисты, которые его используют, вот кто действительно поменялся.
  6. SQL. Понадобится для работы с реляционными базами данных.
  7. Lisp. Да, Lisp. Или, если быть более точным, “одно из воплощений этого языка”. Подойдет Clojure, Lisp, Scheme, Nu или что-то наподобие того. Вы должны знать, что представляет собой гомоиконный язык, а также понимать, как при использовании правильных инструментов исчезают границы между кодом и данными.
  8. Smalltalk. Ага. В любой основе графического интерфейса, построенного на базе собственных аппаратных средств (Windows, macOS, OS/2, X/Windows, Android, iOS и прочие), используются те же самые базовые принципы, что были сформулированы и воплощены в Smalltalk еще в 60-ые годы.
  9. Ruby или Python. Вам необходимо знать хотя бы один динамический язык программирования. Сюда же подходит Javascript, но только если вы сначала изучите сам язык, безо всяких DOM-моделей, которые могут значительно исказить начальную картинку (React, Angular, VueJS – во всех них содержатся эти самые “DOM-модели”, о которых и ведется речь.) Кстати, как только вы разберетесь с Lisp, вам станет намного проще понимать JavaScript.
  10. AspectJ. Знакомство с аспектно-ориентированным программированием полностью изменит ваш взгляд на объекты, и это прекрасно.
  11. Haskell, ML, Ocaml или Miranda . Потратьте некоторое время на функциональные языки, в которых отсутствуют объекты.
  12. Bash, или zsh, или другой сценарий командной оболочки. Потому что далеко не каждая проблема или задача в программировании должна решаться с помощью полноценного приложения.
  13. F#, Scala, Clojure или любой другой объектный/функциональный гибридный язык программирования. Потому что как только вы разберетесь с азами и усвоите базовый набор, к которому относятся первые 11 языков программирования из этого списка, вы будете готовы к чему-то, что будет совсем непросто изучить.
  14. Swift и/или Kotlin . Оба относятся к разновидностям объектно-ориентированных языков и обладают некоторыми встроенными функциональными особенностями. Изучив их, вы будете готовы к работе над мобильными приложениями.
  15. x86 или ARM-ассемблер. Умение читать на языке ассемблера позволит вам отлаживать код без использования исходного кода.

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

И нет, вам не нужно знать их все, чтобы стать достаточно компетентным программистом. Если вы хотите стать просто хорошим разработчиком, вам нужно знать один из основных языков (HTML/CSS/Javascript) + язык для бэкенд-программирования (чаще всего, это C#, Java, Python, Ruby или NodeJS-Javascript) + SQL, если вы используете систему управления реляционными базами данных (RDBMS). Этого будет вполне достаточно.

Однако изучение всех остальных языков – это именно то, что позволит вам перейти от «рядового» к «ведущему» программисту, а после достигнуть максимального уровня знаний и умений.


Нишан Панта, специалист по компьютерной инженерии, разработчик на языке Python

Я придерживаюсь так называемого языкового агностицизма, поэтому если бы кто-то под страхом смертной казни заставил меня составить подобный список, то он бы выглядел следующим образом:

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

2. C . Потому что с его помощью можно четко понять, как все работает. Отлично подходит для выполнения несложных задач.

3. C++. Также для выполнения несложных задач. Подходит для использования объектно-ориентированных парадигм. Кроме того, может использоваться для ряда других задач.

4. Bash. На первый взгляд работа с ним может вызвать недоумение и даже некоторые трудности. Однако как только вы его освоите, любые процессы автоматизации вы будете проводить с его помощью.

5 . S cala. Используется в качестве гибрида функционального и императивного языка программирования. С его помощью можно сотворить удивительные вещи.

6. Javascript . Самый мощный язык для веб-разработки. Лично мне нравится "чистый" JS (стоит учитывать, что веб-разработка – это точно не мое).

7 . Java. Для выполнения задач в объектно-ориентированном программировании. И для использования Spring framework.

8 . Haskell . Каждый программист должен знать парадигмы функционального программирования.

9 . PHP. Если вам нужно выполнить что-то, связанное с веб-разработкой. На мой взгляд, этот язык точно не является символом удобства и простоты.

10. R . Для статистического анализа. Лично я даже не пробовал с ним работать, так как мне более чем неплохо с самим Python.

11 . HTML. Как я уже говорил, обычно я не занимаюсь веб-разработкой. Однако иногда на работе от меня требуется показать то, что было выполнено в бэкенде. В таком случае знание HTML является необходимостью.

12 . Markdown . Один из наиболее часто используемых языков разметки. Как правило, я его использую для каких-то пометок, написания файла README и многого другого.

13. VimL / vimscript . Раньше с помощью VimL я писал скрипты для создания пользовательских плагинов и конфигураций для vim. Это один из тех скриптовых языков, работать с которыми осмеливаются далеко не многие.

14. CSS . Использование CSS время от времени совсем не повредит вашему HTML.

15. Matlab / Octave . С его помощью я раньше выполнял сложные вычисления. Однако теперь я все это делаю на Python благодаря NumPy.

Эстебан Фаргас, занимаюсь разработкой приложений и принимаю участие в соревнованиях по программированию

  1. Java : Компания Oracle наверняка неплохо так приплатила вашему университету, чтобы вы изучали именно этот язык в качестве вводного в объектно-ориентированное программирование. Он также будет полезен, если вы хотите участвовать в соревнованиях по программированию.
  2. C / C ++: В принципе, очень похож на указанный выше Java. Кстати, я эти два языка все же воспринимаю как один.
  3. C #: Неплохой язык, получившийся в результате смешения двух вышеуказанных языков.
  4. HTML : Является основой всей сети. Однако все же не идеален.
  5. CSS : Позволяет красиво выглядеть различным вещам в интернете. Также далеко не идеален.
  6. JavaScript : Позволяет выстраивать логические схемы для интернета.
  7. Python : Неплохо также иметь другой язык программирования и набор парадигм, чтобы написать бэкенд для приложения. Кроме того, на данный момент является общепринятым языком для технологий машинного обучения.
  8. Ruby : Еще один отличный язык для создания бэкенда. На его изучение не уйдет много времени.
  9. Golang : Собрал в себе все приятные функции, которые есть в различных языках группы C. Он прекрасен. С помощью его совмещенной модели можно выполнять крупномасштабные проекты.
  10. Scala : Также позволяет создавать действительно отличное профессиональное программное обеспечение. Знакомство с функциональной парадигмой может стать крайне интересным и щедрым на увлекательные задачи.
  11. Haskell : Изучение функциональной парадигмы на максимальном уровне.
  12. Lisp : То же самое, что и выше приведенный Haskell, только в еще более необычном варианте исходя из невообразимо причудливого синтаксиса.
  13. Bash : Это вообще язык или нет? Так или иначе, неплохо было бы им овладеть в качестве одного из удобных инструментов разработчика.
  14. SQL: Используется для работы с базами данных.
  15. PHP : Язык, который в прошлом столетии использовался для создания бэкенда.

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

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

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

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

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

В настоящее время будет достаточно ознакомиться с работой самой распространенной из баз данных - MySQL. Настоящий специалист также вряд ли сможет обойтись без языков верстки HTML и CSS. Несмотря на то, что PHP - это язык сервера, он связан именно со сборкой веб-старниц, написанных на HTML. Также понадобится и знание синтаксиса JavaScript и понимание работы распространенных фреймворков - JQuery или ExtJS. Сейчас несложно осваивать все эти современные инструменты с помощью многочисленных блогов и онлайн-курсов.

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

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

Так или иначе – все начинают с нуля. И прежде чем с этого самого нуля начать – задайтесь вопросом, действительно ли вам нужна эта профессия?

Суть работы программиста – основные специализации, плюсы и минусы работы

Суть работы программиста зависит от специализации и компании.

Впрочем, иногда программист – и «швец, и жнец, и на дуде игрец». Но это, как правило, в маленьких фирмах, начальники которых экономят на специалистах.

Основные категории, на которые условно можно поделить всех программистов в соответствии с их деятельностью:

  • Прикладные специалисты. Задачи: разработка программного обеспечения для игр, редакторов, бух/программ, мессенджеров и др.; разработка ПО для систем аудио/видеонаблюдения, сигнализации и проч.; адаптация программ под чьи-либо конкретные нужды.
  • Системные специалисты. Задачи: разработка операционных систем, создание интерфейсов к базам данных, управление вычислительной системой, работа с сетями, контроль над работой созданных систем, и др. Эти специалисты зарабатывают больше всех других в своей области, благодаря редкости и специфичности профессии.
  • Web-специалисты. Задачи: работа с Интернетом, создание сайтов и веб-страниц, разработка веб-интерфейсов.

К плюсам профессии можно отнести следующие преимущества:

  1. Очень даже достойная зарплата.
  2. Высокий спрос на хороших специалистов.
  3. Возможность получения престижной работы без образования.
  4. Возможность зарабатывать удаленно, сидя дома на диване.
  5. Возможность работать удаленно на зарубежные компании.
  6. Творческая профессия (правда, нередко творчество зависит от пожеланий заказчика).
  7. Комфортные условия, которые обеспечивают крупные компании своим специалистам (бесплатные напитки/булочки, специальные места для отдыха и спорта, и проч.).
  8. Возможность получения «опциона». То есть, пакета акций компании. Правда, только после отработки определенного срока в компании.
  9. Расширение кругозора. По мере развития себя в профессии приходится знакомиться с самыми разными сферами жизни и вникать в самые разные системы – от делопроизводства и бухгалтерии до проч.

Минусы:

  • Работа «сутки напролет» — обычное дело для данной профессии.
  • Данная работа для многих людей будет скучной и однообразной.
  • Интересы специалиста и заказчика не всегда совпадают, и то, что очевидно для программиста, как правило, совершенно не объяснить клиенту. Это приводит к конфликтам и стрессам.
  • Не редкость – авральные режимы работы.
  • Необходимость постоянно развиваться, изучать новое, успевать эволюционировать вслед за IT-сферой. Всего за несколько лет программы устаревают, и приходится писать новые.

Видео: Как стать программистом?

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

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

Хороший программист должен…

  1. Любить свою работу. И не просто любить – болеть ею.
  2. Любить учиться и учить с нуля.
  3. Быть очень трудолюбивым, усердным и терпеливым.
  4. Быть готовым к постоянной рутинной работе.
  5. Уметь работать в команде.

Какие знания нужны будущему программисту?

Начинать следует с изучения…

  • Английского языка.
  • Устройства компьютера и физики всех процессов.
  • Языков программирования.
  • Методик разработки ПО.
  • Методик тестирования ПО.
  • Систем версионного контроля.

Язык программирования – с какого начать?

Также нужно будет изучить…

  • Java. Более популярный, чем Питон, и неплохой выбор для начинающего. Но более сложный, чем Питон.
  • PHP. Заточен под «веб», но будет полезен любому новичку.
  • C и C#. Весьма сложные языки, можно оставить их на потом.
  • Ruby. Хороший вариант для второго языка.
  • Django. Он научит программировать правильно. По сложности схож с Питоном.

Многое зависит от выбранного направления.

Например…

  1. Веб-программисту будут полезны знания HTML, CSS и JavaScript.
  2. Для десктоп-программиста — API и фреймворки.
  3. Для разработчика мобильных приложений — Android, iOS или Windows Phone.

Где обучаться на программиста с нуля – учебные заведения России, курсы, дистанционное обучение, онлайн-обучение?

Если у вас нет знакомых, которые могут обучить вас с нуля профессии программиста, то у вас есть несколько вариантов обучения:

  • Самообразование. Самый сложный путь к программированию, который лежит через изучение сайтов, приложений, книг и проч.
  • Университет. Если вы только закончили школу и мечтаете получить престижную профессию программиста, поступайте на соответствующий факультет. Основные знания вы все равно будете получать путем самообразования, но «корочка» поможет вам быстрее приблизиться к заветной цели. ВУЗы выбирайте технические, изучив заранее программы обучения.
  • Персональный учитель . Если вы сможете найти наставника среди программистов, самообучение будет более быстрым и эффективным. Ищите наставников на онлайн-форумах, на айти-тусовках, тематических конференциях и проч.
  • Курсы. Обучить вас тому или иному языку программирования смогут на простых курсах, которые можно найти даже в маленьких городах. Например, «Образовательный IT-портал GeekBrains», « Специалист» при МГТУ Баумана , «Компьютерная Академия ШАГ» , МАСПК .

Получить высшее образование по специальности программист можно в…

  1. МИФИ.
  2. Российском экономическом университете Плеханова.
  3. Московском государственном строительном университете.
  4. МГТУ Баумана.
  5. Государственном университете управления.

Видео: 7 ошибок начинающих программистов

Полезные онлайн-ресурсы и книги для обучения работе программиста

  • habrahabr.ru (статьи на IT-тематику, информация по самым разным темам). Этот ресурс известен каждому программисту.
  • rsdn.org (книги, актуальные вопросы, полезный форум, восполнение пробелов в знаниях, материалы на русском языке).
  • sql.ru (отличный удобный форум, полезная литература и даже предложения по работе).
  • theregister.co.uk (новости из IT-сферы).
  • opennet.ru (новости, полезные статьи, форум и проч.). Ресурс для профессионалов.
  • driver.ru (библиотека драйверов). Полезный сайт для новичков.

Ресурсы для обучения:

  1. ocw.mit.edu/courses (свыше 2000 курсов на разные темы).
  2. coursera.org (более 200 курсов, бесплатно).
  3. thecodeplayer.com (пошаговые руководства для новичков).
  4. eloquentjavascript.net (ресурс для введения в Java Script).
  5. rubykoans.com (для всех, кто изучает Ruby).
  6. learncodethehardway.org (изучение Python, Ruby, C и др.).
  7. udemy.com (платные и бесплатные курсы).
  8. teamtreehouse.com (свыше 600 уроков).
  9. webref.ru/layout/learn-html-css (для освоения HTML и CSS).
  10. getbootstrap.com (изучение возможностей Bootstrap).
  11. learn.javascript.ru (изучение frontend и Javascript).
  12. backbonejs.org (для фронтенд-разработчиков).
  13. itman.in/uroki-django (для изучения Django).

Бесплатные сайты для обучения в помощь новичкам:

  • ru.hexlet.io (8 бесплатных курсов по C и PHP, JavaScript и Bash).
  • htmlacademy.ru (18 бесплатных курсов для верстальщиков).
  • codecademy.com (популярные курсы по языкам, инструментам и проч.).
  • codeschool.com (более 60 курсов (13 – бесплатных) по HTML/CSS и JavaScript, Ruby и Python, iOS и Git, и пр.).
  • checkio.org (для изучения Python и JavaScript).
  • codingame.com (обучение через видео-игры, 23 языка программирования).
  • codecombat.com (изучение JavaScript, Python и пр.). Обучающая игра, доступная и для тех, кто пока еще не владеет английским языком.
  • codehunt.com (обучение поиску ошибок в коде).
  • codefights.com (обучающая платформа, через турниры на которой можно «загреметь» на собеседование в приличную IT-компанию).
  • bloc.io/ruby-warrior# (изучение Ruby, а также искусств/интеллекта).
  • theaigames.com (развитие навыков программирования – увлекательный игровой онлайн-тренажер для программиста).
  • codewars.com (сборник обучающих интерактивных задач для тех, кто обладает минимумом знаний).

Обычно на самостоятельное изучение основ программирования уходит от полугода до 12 месяцев.

Как быстро найти работу программиста и начать зарабатывать – советы бывалых

Естественно, устроиться в нормальную компанию без опыта работы вы просто не сможете.

Поэтому…

  1. Читайте книги, изучайте сайты и самообразовывайтесь, но уже сейчас начинайте писать свои самые 1-е строчки кода.
  2. Сами создавайте и усложняйте себе задачи по пройденному материалу.
  3. Ищите свои первые проекты, пусть даже и за «смешные деньги», записывайте себе в «резюме».
  4. Ищите работу на русскоязычных биржах фриланса (ru) и на англоязычных биржах (upwork.com) тоже – там больше шансов ее получить.
  5. Начинайте с маленьких проектов, которые вам по плечу.
  6. Не упускайте и вариант open source (в таких проектах всегда не хватает людей).
  7. Помогайте «за копеечку» (или даже бесплатно, для опыта) знакомым программистам. Пусть они дают вам несложные задания.

  • Обязательно пишем: свой опыт работы, список языков и технологий, которыми вы владеете, образование и контакты.
  • Не впихиваем в резюме весь перечень своих качеств и талантов. Даже, если вы виртуозно играете на баяне, писать об этом в резюме не стоит.
  • Оформляйте резюме с учетом креатива, но уместного.
  • Не стоит заполнять пункты вроде «ваши цели и амбиции» или «кем я вижу себя через 5 лет». Достаточно написать, чем вы занимались ранее и чем хотели бы теперь.
  • Не пишите о языках и технологиях, которые вам известны только по названиям. В резюме следует писать лишь те, в которых вы плаваете, как рыба в воде. Для всего остального есть волшебная фраза – «был небольшой опыт».
  • Если вы профессионально владеете Delphi, не забудьте упомянуть, что знаете также C#, jave или иной язык, потому как просто «программист дельфи» никому по сути не нужен (дельфи – это азы, с которыми знаком каждый выпускник).
  • Не упоминайте работу, которая была не по специальности. Это никому не интересно. Также никому не интересно, есть ли у вас водительские права или автомобиль. Вы же не курьером собираетесь устраиваться.

Перспективы карьеры программиста и зарплата программистов

Средняя зарплата программиста в крупных городах страны – от 50000 до 200000 рублей .

По России в целом – от 35 тысяч до 120000 .

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

От стажера до руководителя IT-отдела – путь не такой уж долгий, а зарплата на самом верху может достигать и 4000 долларов ежемесячно. Ну а потом можно двинуться и в руководители крупного проекта (прим. – по разработке ПО), а тут уже зарплата превышает 5000 долларов.

Лучшие статьи по теме