Как стать автором
Обновить

Я становлюсь программистом

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



С чего начать




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

Для того чтобы начать программировать, на мой взгляд, не обязательно читать 1000-страничные книги по программированию известных авторов-профессионалов. Был в моей жизни опыт, ещё в университете я всерьез хотел заняться программированием. По программе мы проходили C++ и я начал именно с него. На тот момент читал книгу Харви и Пола Дейтела «Как программировать на C++». В ней было более 1000 страниц, читал её практически каждый день, с разбором всех заданий с примерами и т.д. Разумеется, у меня был под рукой компилятор. Все было неплохо. Но знаете, проблема в том, что эта книга диктовала мне, что нужно делать вначале, а что потом. Да, бесспорно у неё была цель в конце сделать что-то серьезное, но это не то. Забегу сразу вперед, если вы будите устраиваться на работу, предыдущие знания, полученные в книге, как минимум могут забыться, а задачи, как правило, ставят не такие, как в книге. На мой взгляд, эта проблема книг, они не учат решать задачи самостоятельно. Мнение моего близкого друга, занимающегося программирование более 7 лет, звучит примерно так:
Профессиональные книги по программированию стоит читать только тогда, когда у тебя есть немалый опыт в этом деле.
И тут я тоже с ним, пожалуй, соглашусь. Возможно, у кого-то было по-другому, так что не призываю брать близко к сердцу мои слова.

Есть ещё очень распространенная тема – это видео уроки. У меня тоже это было (уроки Евгения Попова по курсу JQuery и Javascript для начинающих, Видеокурс HTML + PHP + MYSQL). Тут воспринимаешь информацию по-другому. Плюсами таких уроков является то, что с вами наглядно в режиме реального времени решают какие-то задачи, дают комментарии, объясняют, почему сделали так, а не иначе. Признаюсь честно, некоторые видео курсы были довольно неплохими. Были задачи и примеры, которые подробно разбирались в начале следующих уроков. Если кого-то заинтересует, можете попробовать. Но у таких уроков есть тот же минус что и у книг — они диктуют вам, что делать. Возможно, было у кого-то не так, но я это почувствовал. К тому же, авторы видео уроков не всегда профессионалы, имейте это в виду.

У вас, наверное, возникает вопрос, так с чего же начать? Для начала попытайтесь понять, чем бы вы хотели заниматься. Как правило, для конкретных задач существуют свои языки программирования, если на ваши задачи нашлось несколько языков, то попытайтесь выбрать лучшие для себя. Попытайтесь понять суть языков, их тонкости, чем они особенные, чем они отличаются друг от друга, посмотрите на синтаксис, возможности. Например, Java — кроссплатформенный язык программирования (хорош в том, что на любой операционной системе программа будет работать без изменения исходного кода), код компилируется перед запуском (в отличие от интерпретаторов, выполняется быстрее). PHP – «интерпретатор» (код не компилируется перед запуском), ООП «работает» медленно и другое. Поймите, я встречал людей, которые программировали ни один год, но которые не знали этих вещей – это им минус. Вы заранее попытайтесь разобраться, что лучше и почему мне это подходит больше. Я хочу помочь вам писать код максимально правильно.
Если вы не понимаете, как работает код, то, вероятно, он работает неправильно.
Помните это, и всегда пытайтесь понять, почему программа работает именно так. Изучение нескольких языков вам в плюс; будет, с чем сравнить. И к главному, Google, Яндекс, другой поисковик – ваш лучший друг и помощник.

Главный мой совет по тому, с чего начать – делайте что-нибудь свое. А если вас взяли в какую-нибудь команду, то вы счастливчик, но об этом чуть позже.

Перед программированием




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

Перед началом реализации какой-то задачи не садитесь бегом писать код – это ошибка начинающих. Возьмите листок, ручку и начните все обдумывать. Нарисуйте схему того, что вам нужно сделать. Взвесьте все моменты «За» и «Против». Попытайтесь на листочке самому себе объяснить, что именно нужно сделать. Поверьте, это может быть главное в программировании, как правило, на написание кода уходит меньше времени, чем на обдумывание всех деталей. От этих деталей зависит, какие инструменты в том или ином языке программирования вы будете использовать. Это могут быть библиотеки, фреймворки и другое. Конечно, если вы хотите написать «Hello Word» или протестировать цикл «for» — то все, что прочитали выше в этом абзаце, можно опустить.

Процесс программирования


Начните со среды разработки (IDE) — это важный момент. Слышал такое высказывание:
Настоящий программист должен кодить в блокноте.
Я с этим не согласен.
Среда разработки должна помогать и подсказывать во всем. Бывает так, что нужна какая-то функция, не знаете, как она называется, но знаете, к примеру, что она должна конвертировать строку в число — IDE в помощь. Я уже не говорю про отладчики программы. Рекомендую продукцию от компании JetBrains. Например, для Java — IntelliJ IDEA, для PHP — JetBrains PhpStorm (они на английском). Разумеется, можете выбрать другие, дело ваше. Спорить какая лучше, а какая нет, я не буду, статья не об этом.

В процессе написания кода часто всплывают вопросы: «А как это сделать? А какая функция делает это? А можно ли вот так?». Вернусь к уже сказанному – гуглите или ищите подсказки в IDE. Кто не знает, как правильно задавать вопросы у поисковика, можете ознакомиться с этим тут. Практика показывает, что задавать вопросы по конкретной теме лучше на английском языке, по крайней мере, очень часто бывает так, что русских ссылок просто нет. Да, придется изучать английский язык, ну это же только в плюс.
Переменные, имя классов, название методов, названия файлов и другое советую называть логично, например, если вам нужна переменная, которая хранит количество пользователей, назовите её «users_amount». Старайтесь писать придерживаясь какого-то стиля. Код должен быть понятен, когда его просто смотришь, а что вызывает трудности в понимании – комментируйте. Если вы что-то не доделали или не поняли — пользуйтесь TODO. В связке c IDE, TODO поможет вам найти участки кода, нуждающиеся в доработке. Это очень удобная вещь. Изучайте макросы в своей IDE. Зачем писать руками цикл «for» или getter, setter для переменных класса, если есть IDE, которая нажатием 2-х/3-х клавиш сделает это за Вас. Пользуйтесь инструментами, облегчающими вашу разработку, разработка — это время, а время — это деньги.

Во время написания кода делайте перерывы, да я понимаю, что задача очень интересная и нельзя оторваться, но все же, попытайтесь. Мозгу нужна разрядка и отдых, а организму питание. Есть надо обязательно. Бывает так, что не лезет ничего в голову или не думается – встаньте, походите, сделайте зарядку, посмотрите в окошко, можно выйти на улицу подышать (если это возможно) и т.д. Если у вас на работе такое начальство, что оно запрещает делать перерывы и говорит вам: «Сидеть! Работать! Куда пошел?». Долой такое начальство, попытайтесь решить проблему, если не получится, то лучше уйдите из такой компании. Помните, что программирование это хорошо, но здоровье у нас одно, о нем надо заботиться.

Работа в команде


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

Помните, что в команде вас связывает общая цель и решать её нужно совместно. Нельзя просто залезть в чужой код и наворотить там такого, что потом ничего не работает. Тут не решаете, как оформить код. Здесь вы следуете правилам командной разработки, командному стилю. В любой хорошей компании должно быть такое. Что есть этот стиль и правила? Например, в компании, в которую вы устроились, есть общее правило, все переменные писать в нижнем регистре, названия классов через CamelCase, название методов через lowerCamelCase и т.д. Правил может быть много, и им нужно следовать. Спросите для чего? Для единообразия кода. Объясню. К примеру, мне захотелось поправить баг в вашем коде, я его открываю, правлю. Захожу в код другого разработчика, правлю, там по-другому написано, у третьего ещё по-другому, и в итоге нет единообразия. И если вы потом уйдете из этой компании, представьте, насколько людям будет тяжело разбирать чужой код. Задача очень неинтересная, поверьте. Комментируйте свой код обязательно, даже если там все понятно, если вам не дают на это время – то тогда ладно, проблемы компании.

Требуйте от вашего руководителя в компании четкой постановки задачи. Желательно, чтобы это было техническое задание, где будут четко прописаны пункты, что нужно сделать. Бывает так, что задачи мелкие, и они говорятся на словах, рекомендую все эти слова записывать. Спросите для чего? К примеру, потратили неделю на разработку какого-то модуля программы, но оказалось, что ваш руководитель сказал по-другому сделать. И тут вы начинаете переписывать (ИМХО, это самое нелюбимое занятие программиста), исправлять, тратить свое время, а может вам ещё и з/п подрежут. Минусов много. А когда у вас есть письменное подтверждение того, что вам сказали сделать, то тут уже руководитель не отвертится. Косяк его тогда. Уважайте свой труд и не стесняйтесь доказывать свою правоту, это всегда приветствуется.

Общение в компании между сотрудниками и руководителями может быть разное, бывает словесное, бывает через какие-нибудь программы (Skype, ICQ, Mail агент и другие). Хочу остановиться на последнем. О чем нужно помнить, если у вас появились какие-то вопросы к руководителю или программисту:

  • Формулируйте свои мысли правильно, скорость написания текста не имеет никакого значения, если хотите чтобы вам сразу ответили, пишите суть проблемы и не «лейте воду».
  • Помните, что человек, у которого спрашивайте вопрос, не в курсе вашей проблемы, он не знает, чем вы занимались сегодня или в последние минуты разработки. Пишете проблему полностью так, чтобы прочитав этот вопрос, собеседник сразу понял о чем идет речь.
  • Не пишите вот так:



    Старайтесь задать вопрос в одном сообщении. Не надо разделять его на 10 подряд идущих. Это неудобно для читающего, он тратит больше времени на то, чтобы вам ответить. Уважайте чужой труд.
  • Если у вас есть несколько вопросов, не задавайте их все сразу и не перескакивайте с вопроса на вопрос. Все должно быть по пунктам, обсудили вначале один вопрос, затем перешли к другому. Так будет лучше для вас обоих.
  • Старайтесь не задавать простые вопросы: «как написать цикл for? Что такое MVC? Как преобразовать строку в число?». Для этого есть Google, он вам в помощь.

И к главному — не делайте то, чего вас не просили. К примеру, если вам поставили задачу что-то сверстать по макету, не нужно отходить от самой задачи и заниматься, как Вам кажется, крутыми вещами: применять новый эффект CSS, прикольную анимацию на JQuery и т.д. Это никто не оценит, более того, могут сделать вам выговор. В команде важно, чтобы вы четко выполняли поставленные задачи и чтобы эти задачи выполнялись в срок. Про это не забывайте.

Заключение


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

IT-технологии развивается большими темпами, нынче это очень популярная тема, став программистом, вы станете частью всего этого. Легко сможете найти себе работу в любом городе, вакансий везде куча, выбирайте. Посмотрите на популярные сервисы от Google, Yandex. Посмотрите на приложения в телефонах, насколько они круто сделаны. 2Gis, ВКонтакте и многие другие – всем хочется пожать руки и сказать, какие они красавцы.

А Вы хотите стать программистом?
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.