Це третій пост в серії “Програміст Початківець“. В попередніх двох статтях  ми з вами розглянули питання, чи варто взагалі починати займатися цим ділом, де і як вчитися, а також те, як шукати ментора. В цій статті ми з вами відповімо на питання: Яку мову, технологію, напрямок обрати на початках. Це також одне з найпопулярніших питань, яке я отримую мало не щодня.

Popular Languages 2013

Для кого ця стаття?

Перш за все мушу сказати, що вибір мови програмування чи галузі у якій прийдеться працюввати, не є супер критичним питанням для сформованого програміста. Більшіст професійних програмістів володіють кількома мовами, спробували різноманітні платформи та напрямки у програмуванні, і регулярно поповнюють свій арсенал знань та навичок. Для такого “спєца” питання вибору мови програмування чи іншого інструменту завжди розглядається в контексті конкретної задачі, проекту. Як то кажуть, щоб не приходилося сокирою і дрова рубати і хліб нарізати. Кожному завданню – свій інструмент.

Проте для початківця питання вибору першої мови, та й загалом галузі програмування відіграє трохи іншу роль. Адже саме цей вибір дозволить швидше отримати перші навички та роботу, або навпаки затормозить початок кар’єри програмера.

Якщо ви давно мріяли створювати ігри, чи створювати дизайни для сайтів, чи написати наступну популярну програму для десктопа, і вже навіть пробували себе у своєму омріяному напрямку, тоді думаю далі продовжувати читати цю статтю немає потреби. Ви вже знаєте чого хочете, і якщо бажання дійсно дуже сильне (як то кажуть є дуже сильна відповідь на питання Навіщо?), тоді я майже впевнений – у вас все получиться у омріяному напрямку. Будь-то дизайн сайтів, створення ігор, програмування для десктопа, чи будь-що інше.

Якщо ж ви ще нічого не знаєте і навіть не маєте уявлення, чим можна займатися будучи IT спеціалістом, програмістом – тоді читаємо далі…

Виставляємо Пріоритети і Правила Вибору

При виборі початківцем своєї першої мови програмування основним критерієм служить – результат. А результат – це якомога швидше оволодіти знаннями та практичними навичками у даній мові та загалом напрямку, ну і звичайно отримати перше місце праці.

Отже основними критеріями даного вибору для початківця є:

  • потреба даної мови і напрямку загалом на ринку
  • низький поріг входу, тобто простота даної мови і галузі для освоєння, а також готовність фірм брати до себе джуніків
  • на скільки вам ця мова подобається, кайф від процесу. Саме так, цей пунк є останнім у випадку, якщо ви лише починаєте.

Чому? Тому, що основна ваша мета потрапити у середовище програмістів. Як тільки у вас це вийшло, далі ви є вільні у виборі, і можете неодноразово змінювати свої інтереси та зацікавлення. Приносячи максимум користі працюючи з улюбленими технологіями.

На попередній роботі мій колега спочатку пробував себе у програмуванні на мові Пітон. Ніби получалося, але не так швидко як йому того хотілося. Тоді йому запропонували там же ж, на цій фірмі, спробувати себе у веб верстці. CSS, HTML пішли на ура! Зараз він є дуже хорошим веб верстальщиком. Тобто можливо навіть прийдеться спробувати кілька кардинально різних речей, щоб зрозуміти що краще саме вам підходить.

Загалом є різні напрямки куди можна податися в IT сфері. Це і дизайн, і верстка, і тестування, і адміністрування, і менеджмент проектів, ну і на кінець програмування. Можливо на початку вам навіть прийдеться поскакати між цими зовсім різними напрямками, щоб обрати щось для себе. Як то кажуть, доки не спробуєш – доти не будеш знати.

Основне правило для першого вибору, тоді коли ще нічого не вмієш, але дуже хочеш: вибирай не те, що хочеш, а те, що пропонують. Так, не надто романтично, зате достатньо практично, щоб прискорити цю непросту штуку першого працевлаштування 🙂

А тепер давайте з вами розглянемо варіанти, що підходять саме для програмістів.

То ж яка мова і напрямок для початку?

Якщо вже обшукалися програмістів серед друзів та знайомих, обходили всі місцеві фірми, і далі немаєте достатньо інформації, що є ‘востребуваним’ на ринку IT праці. Тоді даю кілька особистих порад, які, на мою думку, дозволять почати вам з простішого, відповідно швидше отримати перші плоди.

Programming Genres

На початку треба зробити як мінімум два вибори:

  • якою галузею програмування зайнятися (веб, десктоп, мобільне програмування, ігри, математика, і т.д.)
  • яку мову програмування обрати для створення рішень під обрану галузь

По галузях маємо мобільні, десктоп, окремо галузь ігри (також під мобільні, десктоп і веб), веб (як фронт-енд так і серверна сторона), embedded програмування, низькорівневе програмування (мікроконтролери, драйвера, і т.д.) і ще багато інших речей. Звичайно програми для веб, мобільних та десктопу – це одні з найпопулярніших напрямків для програміста.

Найпростіший для початківця я вважаю є ВЕБ. Він також являється і одним з найпопулярнішими на даний момент.

Щодо мови програмування, то однозначно починати легше з інтерпретованої мови з динамічною типізацією. Наприклад php, python, ruby, javascript. Їх не тільки швидше і простіше освоїти, але на даний момент вони є одними із найпопулярніших.

Трохи важчим буде почати з компільованої мови із статичною типізацією змінних. Наприклад. C, C++, C#, Objective C. З мовою Java дещо простіше, але все одно, порівняно із вище згаданими інтерпретованими мовами, з Java вам прийдеться повозитися трішки довше, і зрозуміти кілька додаткових речей на нижчому рівні (як от управління пам’яттю і тому подібне).

Приклад. Мова Python була першою мовою програмування, яку я вивчив. Вже після тижня проходження туторіалів та читання книжки, за другий тиждень я написав невеличку гру Piano на фреймворку Pygame. Після місяця підчитування посібника по мові C, я і далі робив помилки з використанням масивів, вказівників і часто отримував проблеми через неправильне використання пам’яті.

Тому “the best” зв’язка для початку буде Веб програмування + динамічна мова як от python, php або ruby.

Підсумуємо

Отже, якщо ви ще нічого не пробували і не знаєте, що робити, але маєте велике бажання спробувати себе у програмуванні, ось список наступних дій шляхом найменшого опору і найшвидшого досягнення результатів:

  • вчимо веб технології (html – мова розмітка під бравзери, css – мова правил стилів для вашого html коду, javascript – мова в бравзері, щоб зробити вашу сторінку динамічною, + jQuery – javascript бібліотеки, зменшую потребу досконалого вивчення самої мови javasript)
  • вчимо серверну мову, адже знаючи лише попередній пункт ви зможете створювати лише статичні веб сторінки (python + django (веб фреймворк на пітоні), ruby + rails (веб фреймворк на ruby), php + symphony (веб фреймворк на php)) – тобто, щоб програмувати сайт не треба з нуля все самому писати, простіше освоїти і скористатися існуючими фреймворками
  • трошки розібратися із базами даних, наприклад основи бази MySQL, будь-яка програма повинна тримати певні дані, тому знання баз є необхідним у більшості випадків
  • шукаємо ментора, контактуємо друзів знайомих програмістів, щоб отримувати регулярні поради, підтримку і загалом атмосферу IT 🙂
  • відвідуємо місцеві програмістські фірми, розпитуємо про набір джуніків та курси для них, питаємо про необхідні навики, мотаємо на вус, працюємо у напрямки тих же ж необхідних навиків. Якщо знайшли фірму, яка набирає джуніків з пеним набором вимог – перключайтесь негайно на вивчення даних вимог, навіть якщо це може бути трошки важче, ніж веб програмування 😉

Я ще до кінця не визначився з темою наступної статті у даній серії. Серед варіантів є:

  • розробницьке середовище програміста
  • роль англійської мови для програміста
  • як готуватися до інтервю, складання портфоліо, резюме
  • як набути практики програмування, і наповнити своє резюме гарним портфоліо
  • правильні звички програміста

Голосуйте в коментарях за тему, додавайте свої власні теми. Найбільш поширену і потрібну тему будемо висвітлювати першою.

А який у вас досвід? З чого саме ви починали? Що б ви порекомендували початківцям? З чим ви не згідні у даній статті? Яке наступне питання ви б хотіли, щоб я висвітлив у наступному пості серії Програміст Початківець?

Хочете першими дізнаватися про наступні статті у нашій серії “Програміст Початківець”? Тоді підписуйтесь на розсилку мого блогу: