Как новичку определиться с языком программирования
Ожидает приглашения
Привет, хабровчане.
Сегодня хочу затронуть тему выбора языка программирования новичку. Если точнее — определиться с выбором.
Эта статья может помочь тем, кто уже успел пощупать несколько языков программирования и приблизительно понимает где и в каких случаях они используются.
В своё время изучал PHP, Python, JavaScript, Java… И когда встал вопрос выбора, для того чтобы устроиться на первую работу разработчиком, сильно растерялся. Но волею судеб мне повезло и смог определиться с выбором. Это были непростые 6 лет, но способ нашёлся.
Конечно, когда вы точно знаете, что хотите верстать, не должно возникать такого вопроса (HTML/CSS). Или если вас интересует только программирование под микроконтроллеры. Разговор больше пойдет про языки программирования (далее ЯП) которые могут в ООП:
Хотя некоторые способы помогут и в выборе направления разработки.
Каждый из них может использоваться для решения многих задач. Для каждого из них существует множество фреймворков и библиотек, которые дают еще больше возможностей. А про комбинацию даже упоминать не буду.
Итак мы имеем в своём арсенале несколько ЯП. Знаем их конечно не идеально, но и «Hello world!» уже давно пройденный этап. Мы даже можем побеседовать за чашечкой чая про ООП, хотя и будем понимать, что знаем совсем немного.
А когда собеседник спрашивает «А на чём пишешь ты?», ответом будет молчание.
Как же так получилось? Неуверенность в себе? Жаль, что рядом с нами нет Тайлера Дёрдена, который легко помог бы решить проблему. Но если капнуть еще глубже…
Всё не так плохо! На самом деле, вы просто относитесь к той половине человечества, которая склонна долго (иногда слишком) анализировать и сомневаться перед принятием решения. Примите это как данность и научитесь этим пользоваться. Возможно именно благодаря этой способности, вы станете великим архитектором программного обеспечения (ПО). Но пока…
Пока вокруг так много ЯП и каждый по своему интересен и красив, пока так много фреймворков и вариантов решения поставленной задачи, пока одну и ту же программу можно написать, что на Java, что на Python, что на C#, пока вокруг множество статей о выборе первого языка программирования, а в конце «каждому своё»… Неужели мы так и будем осваивать основы синтаксиса всех ЯП, которые есть на планете Земля? Так ведь и до перфокарт дойти можно.
Ниже — несколько вариантов решения для выхода из бесконечного цикла без брейкпоинтов:
Подумайте, что это будет за программа, о её архитектуре, классах, методах, уровнях абстракций и т.п. Напишите её. Отрефакторите. Ещё раз пробегитесь по комментариям, если они есть.
По поводу комментариев: это ваш собственный проект и никто не будет ругать за их отсутствие. И всё-таки, когда возникнет необходимость отправить что-нибудь для потенциального работодателя в резюме, и выбор падёт на данный проект — комментарии (грамотные) будут только в плюс.
Так придумайте несколько проектов и реализуйте их. А потом…
Откройте спойлер уже после того как напишите несколько проектов. Это вам поможет гораздо больше, нежели сейчас.
Да простят нас работодатели, но этот способ тоже работает. Вы проходите собеседование, где основной необходимый ЯП — один из тех, что в вашем списке желаний. Работаете месяц/два/полгода/день и понимаете: «ваше» это или нет. На испытательном сроке уйти всегда успеете.
Конечно, желательно подготовить себе финансовую подушку. Никто не знает наверняка как оно повернется.
Тем, кто не хочет тратить много времени на написание множества проектов или отдаваться на откуп судьбе, понравится данный вариант. Есть множество рекомендаций и инструкций по заполнению этого квадрата. Следует составить по одному квадрату на каждый из ЯП. Сравните получившееся и выберите самый безопасный/прибыльный/интересный/др. вариант. Теперь сделать выбор будет несколько проще.
Описывать процесс заполнения квадратов не буду. Просто загуглите «Квадрат Декарта».
Если вам нравится писать и фронт и бэк, можно сделать ход конём. Многие компании предлагают позицию full-stack разработчика. Она заключает в себе оба направления. Когда освоитесь и захотите переключиться на что-то конкретное, никто не будет мешать развиваться дальше в чём-то одном.
Как и писал выше, когда-то передо мной встала задача подобного выбора. Использовал я первые два и четвёртый подходы. Силу первого вы познаете сами, когда напишите парочку-другую проектов. Со вторым получилось не совсем хорошо. Четвертый был реализован вместе с первым.
Результат первого — Python.
Фронт, я думал, мне тоже нравится и решил пойти на позицию full-stack. Как только решение было принято, написал заявление по собственному на предыдущем месте работы и начал активно отправлять своё резюме потенциальным работодателям. Финансовая подушка на 2-4 месяца имелась, как и твердая уверенность ходить по собеседованиям до победного.
В резюме сразу написал, что без выполнения ТЗ (тестового задания) на собеседование не приду. Последнее немного усложняло процесс, но так мне было спокойнее — пойму, что от меня хотят и работодатель поймёт устрою ли я его. Если примут ТЗ, шансы возрастают.
Второе собеседование и меня приняли. Подготовили рабочее место. Я до конца дня пытался по максимуму понять задачи, выполнение которых от меня ожидают. К середине дня понимаю, что ничего не понимаю. Делюсь этим с коллегами. Отвечают, что это нормально, что шесть месяцев меня никто трогать не будет, просто изучай документацию.
Шесть месяцев! На меня напала тоска. С одной стороны — хорошо: сиди себе, изучай документацию, получай ЗП. С другой — уровень амбиций и желание покорять вершины Эвереста начали падать. Вечером подхожу к тимлиду и говорю, мол не подхожу им, и это не совсем то, что я ожидал, да и вряд ли смогу им помочь (смог бы, но не хотел так долго погружаться). Многие скажут, что это была нормальная ситуация. Что в самом начале не нужно сразу с места в карьер, но в моём случае, я точно понимал, что не хочу так. Ну и еще понял, что frontend — не моё.
Через день приходит сообщение с новым предложением. Сначала подумал, что это проектная работа. Но, когда побеседовал с ребятами, дали понять, что ищут человека в команду…
Прошло уже почти 10 месяцев, как меня устраивает моя позиция разработчика.
Так что если вы железно решили стать разработчиком, станете. Прислушивайтесь к советам и подсказкам других, однако лучше принимайте решение самостоятельно.
Нравится писать на 1С — пишите! То, что другим не нравится — это их проблемы. И это точно не повод писать на другом ЯП.
Нравится писать на PHP, но где-то слышали, что он умирает… Пишите на PHP! Львиная доля рунета написана и пишется на нём.
Высокая конкуренция среди Java разработчиков? Пишите на Java! Станьте лучшим специалистом, и получайте тысячи офферов от топ компаний в месяц.
Кто-то там не любит и ругает frontend? Да они даже и не догадываются, что их любимое и самое красивое приложение в телефоне — это SPA (Single Page Application — одностраничное приложение).
До недавнего времени, думал что Python никто не ругает. Ага… На одном из форумов нашёл такие вещи, что вспоминать страшно. Оказывается есть те, кто очень не любит и этот язык, и думают, что перечисляют его минусы. Хотя бОльшая часть из перечисляемого — это особенности и так оно и должно быть.
В этой статье мы рассмотрели несколько способов выбора одного из первых ЯП для трудоустройства. Применяйте их, комбинируйте.
Если у вас есть опыт (описанный выше, другой или ваш собственный) решения данной задачи, опишите его в комментариях. Думаю всем будет интересно.
Большое спасибо вам за уделенное время и, надеюсь, статья поможет вам в ваших начинаниях.
Программист-разработчик на Python
Сегодня хочу затронуть тему выбора языка программирования новичку. Если точнее — определиться с выбором.
Эта статья может помочь тем, кто уже успел пощупать несколько языков программирования и приблизительно понимает где и в каких случаях они используются.
В своё время изучал PHP, Python, JavaScript, Java… И когда встал вопрос выбора, для того чтобы устроиться на первую работу разработчиком, сильно растерялся. Но волею судеб мне повезло и смог определиться с выбором. Это были непростые 6 лет, но способ нашёлся.
Конечно, когда вы точно знаете, что хотите верстать, не должно возникать такого вопроса (HTML/CSS). Или если вас интересует только программирование под микроконтроллеры. Разговор больше пойдет про языки программирования (далее ЯП) которые могут в ООП:
- С++
- C#
- Java
- JavaScript
- PHP
- Python
Хотя некоторые способы помогут и в выборе направления разработки.
Каждый из них может использоваться для решения многих задач. Для каждого из них существует множество фреймворков и библиотек, которые дают еще больше возможностей. А про комбинацию даже упоминать не буду.
Основная часть
Итак мы имеем в своём арсенале несколько ЯП. Знаем их конечно не идеально, но и «Hello world!» уже давно пройденный этап. Мы даже можем побеседовать за чашечкой чая про ООП, хотя и будем понимать, что знаем совсем немного.
А когда собеседник спрашивает «А на чём пишешь ты?», ответом будет молчание.
Как же так получилось? Неуверенность в себе? Жаль, что рядом с нами нет Тайлера Дёрдена, который легко помог бы решить проблему. Но если капнуть еще глубже…
Всё не так плохо! На самом деле, вы просто относитесь к той половине человечества, которая склонна долго (иногда слишком) анализировать и сомневаться перед принятием решения. Примите это как данность и научитесь этим пользоваться. Возможно именно благодаря этой способности, вы станете великим архитектором программного обеспечения (ПО). Но пока…
Пока вокруг так много ЯП и каждый по своему интересен и красив, пока так много фреймворков и вариантов решения поставленной задачи, пока одну и ту же программу можно написать, что на Java, что на Python, что на C#, пока вокруг множество статей о выборе первого языка программирования, а в конце «каждому своё»… Неужели мы так и будем осваивать основы синтаксиса всех ЯП, которые есть на планете Земля? Так ведь и до перфокарт дойти можно.
Выход есть!
Ниже — несколько вариантов решения для выхода из бесконечного цикла без брейкпоинтов:
- Придумайте себе интересную задачу
Подумайте, что это будет за программа, о её архитектуре, классах, методах, уровнях абстракций и т.п. Напишите её. Отрефакторите. Ещё раз пробегитесь по комментариям, если они есть.
По поводу комментариев: это ваш собственный проект и никто не будет ругать за их отсутствие. И всё-таки, когда возникнет необходимость отправить что-нибудь для потенциального работодателя в резюме, и выбор падёт на данный проект — комментарии (грамотные) будут только в плюс.
Так придумайте несколько проектов и реализуйте их. А потом…
Откройте спойлер уже после того как напишите несколько проектов. Это вам поможет гораздо больше, нежели сейчас.
Спойлер! Напишите 2-10 проектов, потом открывайте!
Посмотрите на каком ЯП вы всё (чаще всего) писали. Поздравляю! Вы нашли то, что искали. Удаляем из старого резюме, что умеем всё, но по чуть-чуть. Ставим основной ЯП, а в примечаниях указываем: «Также разбираюсь в ...» (заменить на список ЯП).
- Сразу пойти на рандомную позицию
Да простят нас работодатели, но этот способ тоже работает. Вы проходите собеседование, где основной необходимый ЯП — один из тех, что в вашем списке желаний. Работаете месяц/два/полгода/день и понимаете: «ваше» это или нет. На испытательном сроке уйти всегда успеете.
Конечно, желательно подготовить себе финансовую подушку. Никто не знает наверняка как оно повернется.
- Квадрат Декарта
Тем, кто не хочет тратить много времени на написание множества проектов или отдаваться на откуп судьбе, понравится данный вариант. Есть множество рекомендаций и инструкций по заполнению этого квадрата. Следует составить по одному квадрату на каждый из ЯП. Сравните получившееся и выберите самый безопасный/прибыльный/интересный/др. вариант. Теперь сделать выбор будет несколько проще.
Описывать процесс заполнения квадратов не буду. Просто загуглите «Квадрат Декарта».
- Выбор между фронтом и бэком (ЯП для бэка выбран*)
Если вам нравится писать и фронт и бэк, можно сделать ход конём. Многие компании предлагают позицию full-stack разработчика. Она заключает в себе оба направления. Когда освоитесь и захотите переключиться на что-то конкретное, никто не будет мешать развиваться дальше в чём-то одном.
Как и писал выше, когда-то передо мной встала задача подобного выбора. Использовал я первые два и четвёртый подходы. Силу первого вы познаете сами, когда напишите парочку-другую проектов. Со вторым получилось не совсем хорошо. Четвертый был реализован вместе с первым.
Результат первого — Python.
Фронт, я думал, мне тоже нравится и решил пойти на позицию full-stack. Как только решение было принято, написал заявление по собственному на предыдущем месте работы и начал активно отправлять своё резюме потенциальным работодателям. Финансовая подушка на 2-4 месяца имелась, как и твердая уверенность ходить по собеседованиям до победного.
В резюме сразу написал, что без выполнения ТЗ (тестового задания) на собеседование не приду. Последнее немного усложняло процесс, но так мне было спокойнее — пойму, что от меня хотят и работодатель поймёт устрою ли я его. Если примут ТЗ, шансы возрастают.
Второе собеседование и меня приняли. Подготовили рабочее место. Я до конца дня пытался по максимуму понять задачи, выполнение которых от меня ожидают. К середине дня понимаю, что ничего не понимаю. Делюсь этим с коллегами. Отвечают, что это нормально, что шесть месяцев меня никто трогать не будет, просто изучай документацию.
Шесть месяцев! На меня напала тоска. С одной стороны — хорошо: сиди себе, изучай документацию, получай ЗП. С другой — уровень амбиций и желание покорять вершины Эвереста начали падать. Вечером подхожу к тимлиду и говорю, мол не подхожу им, и это не совсем то, что я ожидал, да и вряд ли смогу им помочь (смог бы, но не хотел так долго погружаться). Многие скажут, что это была нормальная ситуация. Что в самом начале не нужно сразу с места в карьер, но в моём случае, я точно понимал, что не хочу так. Ну и еще понял, что frontend — не моё.
Через день приходит сообщение с новым предложением. Сначала подумал, что это проектная работа. Но, когда побеседовал с ребятами, дали понять, что ищут человека в команду…
Прошло уже почти 10 месяцев, как меня устраивает моя позиция разработчика.
Заключение
Так что если вы железно решили стать разработчиком, станете. Прислушивайтесь к советам и подсказкам других, однако лучше принимайте решение самостоятельно.
Нравится писать на 1С — пишите! То, что другим не нравится — это их проблемы. И это точно не повод писать на другом ЯП.
Нравится писать на PHP, но где-то слышали, что он умирает… Пишите на PHP! Львиная доля рунета написана и пишется на нём.
Высокая конкуренция среди Java разработчиков? Пишите на Java! Станьте лучшим специалистом, и получайте тысячи офферов от топ компаний в месяц.
Кто-то там не любит и ругает frontend? Да они даже и не догадываются, что их любимое и самое красивое приложение в телефоне — это SPA (Single Page Application — одностраничное приложение).
До недавнего времени, думал что Python никто не ругает. Ага… На одном из форумов нашёл такие вещи, что вспоминать страшно. Оказывается есть те, кто очень не любит и этот язык, и думают, что перечисляют его минусы. Хотя бОльшая часть из перечисляемого — это особенности и так оно и должно быть.
В этой статье мы рассмотрели несколько способов выбора одного из первых ЯП для трудоустройства. Применяйте их, комбинируйте.
Если у вас есть опыт (описанный выше, другой или ваш собственный) решения данной задачи, опишите его в комментариях. Думаю всем будет интересно.
Большое спасибо вам за уделенное время и, надеюсь, статья поможет вам в ваших начинаниях.
Программист-разработчик на Python