Эссе на тему «Как стать программистом?». Что нужно знать чтобы стать программистом


Эссе на тему «Как стать программистом?» / Хабр

Вместо вступления
После открытия публичного доступа к Q&A разделу Хабрахабра появилось множество вопросов по теме «Как стать программистом?». Бесспорно, прекрасно то, что так много людей хотят избрать для себя эту интересную профессию. Многих интересует конкретное направление (web, game development) или язык (PHP, Java, C#, JavaScript, Ruby). Выработать универсальную инструкцию достаточно сложно, если не сказать невозможно. Поделиться с вами своими мыслями по этому вопросу я бы и хотел сегодня.
Начало начал
Прежде чем начать изучать программирование создадим комфортную рабочую среду.

Выбор операционной системы во многом зависит от предполагаемого основного языка. Если вам импонирует C, C++, C# и нет твердого желания писать кроссплатформенное ПО, то выбор очевиден — Windows. Для присматривающихся к PHP, Ruby, Python, JavaScript больше подойдет простой современный Linux дистрибутив, такой как Ubuntu (Xubuntu — мой выбор). Причина проста — это языки современной web-разработки, а большая часть web-серверов работают под управлением Linux. Использование Linux на рабочем компьютере, поможет разобраться с большим количеством потенциальных вопросов по настройке сервера: работа с консолью и SSH, система прав для файлов и директорий, установка веб-сервера и сервера базы данных и т.д.

Основной рабочий инструмент программиста — IDE. Для семейства C языков лучшим вариантом будет MS Visual Studio. Для Java, возможно, стоит обратить внимание на Eclipse. Различные IDE выпущенные компанией JetBrains уже давно пользуются заслуженной популярностью у любителей Java, PHP, Python, Ruby по всему миру.

Часто возникают ситуации, когда возможности IDE чрезмерны для текущей задачи. На этот случай стоит обзавестись удобным редактором кода. Моим фаворитом на данный момент является Sublime Text. Для Windows стоит упомянуть Notepad++, часто выручавший меня при необходимости срочно исправить пару строчек на удаленном сервере.

Первые шаги
Язык для обучения программированию — тема многогранная. Следует понимать, что основная задача на данном этапе не изучить синтаксис того или иного ЯП, а разобраться со структурами данных и базовыми алгоритмами. В связи с этим, я бы рекомендовал начинать со статически типизированного высокоуровневого языка, такого как Java или C#. Разобраться с реализацией алгоритма сортировки пузырьком, написать программу определения високосного года или вычисления факториала на таких языках будет не сложнее чем на, скажем, Python'e, но даст гораздо лучшее представление о сути программирования как такового.

Хороший список алгоритмов, с реализации которых вы можете начать, можно найти на сайте algolist.manual.ru. Для желающих особого челленджа, там же вы найдете большую подборку олимпиадных задач.

Не забываем о книгах: «Алгоритмы и структуры данных» Никлауса Вирта и «Искусство программирования» Дональда Кнута уже давно являются классикой и обязаны быть на полке у всех программистов.

Вторая ступень
Изучив базовую алгоритмику, можно приступать к изучению синтаксиса и конструктивных особенностей предпочитаемого языка. Любое обучение всегда происходит быстрее на реальных задачах, но где их взять, когда у нас нет опыта? Что ж, Сами-Знаете-Кто начинал с придуманного дизайнерского портфолио, а мы начнем с придуманных задач. Почему бы не написать для матери «Кулинарную книгу», а для отца «Хоккейную турнирную таблицу»? А может соседу дяде Грише нужен сайт-визитка для скромной строительной компании?

Для web-программиста эти и подобные задачи существенно упрощаются наличием различных CMS, большинство из которых имеют развитую инфраструктуру расширений. Разработка расширений для готовой системы значительно проще, чем реализация требуемого функционала с нуля. Популярные (а другие нам пока и неинтересны) системы имеют хорошую документацию, чаще всего с примерами готового кода, и большое сообщество. Изучение примеров расширений, не только даст ценные идеи для ваших проектов, но и привьет определенные стандарты разработки: стиль оформления кода, часто используемые конструкции, базовые шаблоны проектирования. Говоря о конкретных наименованиях, стоит вспомнить о Joomla!, Wordpress, Drupal для PHP и Radiant, Refinery для Ruby. Именно с разработки различных расширений для Joomla! начинал и я, о чем, кстати, совершенно не жалею. Из PHP CMS «большой тройки» только у Joomla! на тот момент были MVC структура (пусть и далеко не совершенная), подробная документация и дружелюбное русскоязычное сообщество.

Я, к сожалению, не могу с уверенностью судить о других сферах разработки ПО, но общий подход, я думаю, останется тем же. Интересующиеся разработкой игр могут посмотреть в сторону популярных движков: Unity, OGRE или Cocos2d. Будущим desktop-разработчикам будет сложнее всего, но и здесь есть чем заняться. Например, разработать плагин для популярной программы, такой как Total Commander или AIMP.

Из литературы следует обзавестись, в первую очередь, книгами по структурированию и особенностям реализации программ на выбранном языке. PHP программисты могут почитать: «PHP и MySQL. Библия программиста» Тима Конверса и «PHP 5» Дмитрия Котерова. Рекомендации по другим языкам, я надеюсь, появятся в комментариях.

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

Хорошая команда — определяющий фактор. «Старшие» товарищи помогут быстро заполнить пробелы в знаниях, научат правильно применять шаблоны проектирования и поделятся опытом в решении неочевидных задач. Также важно получить опыт коммерческой разработки: научиться следовать принятым в командах соглашениям; познакомиться с системами отслеживания ошибок, такими как Mantis или Jira; привыкнуть использовать системы контроля версий, например Git и Mercurial.

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

Четвертая грань
Имея за плечами достаточно глубокое представление о процессе разработки ПО, можно переходить на «серьезные» фреймворки. Они помогут избавиться от ограниченности CMS (или движков) и откроют новые возможности для реализации собственных идей. Для web-разработки на ум приходят, горячо любимый мной Symfony 2 и нелюбимый Zend для PHP, культовые RoR (Ruby) и Django (Python), многогранный Spring (Java), необычный Express для любителей серверного JavaScript и Angular.JS для клиентского. Мир desktop фреймворков не столь обширен, но по своему интересен: .NET Framework, Qt, GTK+, wxWidgets.

В личную библиотеку пора добавить профильную для избранной области литературу. Для меня таковыми стали «Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем» Эрика Эванса и «Шаблоны корпоративных приложений» Мартина Фаулера.

Отличным источником дополнительной информации станут блоги и Twitter активных участников сообщества выбранной технологии. Блоги Fabien Potencier, Benjamin Eberlei, William Durand давно обосновались в моих закладках.

На этом этапе я пока и остановился. Догоняйте!

Заключение
За кадром осталось так много всего: фриланс и биржи по продаже собственных скриптов, онлайн-курсы и тематические конференции. Но это будет уже другая история.

Естественно, предложенный путь далеко не единственный, но один из возможных. Оглядываясь назад, я с улыбкой вспоминаю его. Кипа исписанных листов тетради с алгоритмом генерации подземелий для «убийцы» ADOM. Десятки чашек кофе выпитых вечерами, в попытке осознать особенности Win API, и многочасовые диспуты с дизайнером по поводу структуры очередного сайта. И знаете что я думаю? Я — программист, и быть им совсем неплохо!

habr.com

Как стать хорошим программистом? / Хабр

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

Я с детства стал увлекаться созданием сайтов. С 6го класса делал первый сайт для своей школы, учил HTML и вставлял различные готовые ЯваСкриптпы в свои мелко-сайты. Начал покупать полезную литературу и осваивать CSS и HTML. Позже в 9м классе учился программировать на Делфи. Школьный паскаль указывать не буду — это все проходили.

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

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

Когда я ходил по собеседованиям на пхп-программера — мне давали такие простенькие задачки на логику(а она у меня вроде есть) и PHP которые нужно было без интернета решить самому. Ну кто устраивался на работу и принимает на работу в курсе про задачи что принято задавать на собеседованиях. Я даже книгу скачал этих готовых задачек и пытался зазубрить — но на работе уже не мог вспомнить мелкие подробности и проваливался.

Многие люди не могут стать 3д дизайнерами из за отсутствия определенного «визуального образа мышления» (не знаю как правильно сказать). Они представляют фигуры и объекты в голове и видят их не так как остальные из чего могут делать хорошие модели в том же 3д максе.

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

Проходили ли вы такое и если да то поделитесь опытом, буду очень признателен! Как вы прошли путь от новичка до девелопера? Спасибо.

habr.com

Что нужно знать чтобы стать программистом

Автор: Администратор сайта | 30.05.2017

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

Вполне реально купить пару-тройку учебников по самостоятельному изучению Java, PHP с нуля.

Но Вы должны понимать, что дело это требует огромных усилий.

Итак, предположим, что Вы выбрали PHP.

1). Вам необходимо знать набор элементарных команд, с помощью которых происходит выполнение определенного сценария.

Как вывести текущее время, раздел сайта или, скажем, нумерованный список.

2). В умных книжках разбирается сотня примеров, на основании которых Вы формируете (пишете) уже собственные условия.

3). Разбирая чужой программный код, Вы набираетесь опыта, пытаясь создать сайт или страницу в интернете.

4). Теория + практика, и так постоянно.

5). Чтобы стать хорошим программистом, Вы должны четко понимать для чего Вам это нужно.

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

Но высший пилотаж- это умение работать на заказ, удовлетворяя технические (информационные) потребности клиентов.

И получая за это очень приличное вознаграждение.

6). Хороший программист умеет создавать красивое (часто выпадающее) меню, крутые спецэффекты, завораживающие слайды, а также продающие сайты с безошибочной и современной версткой.

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

Материал подготовил я- Эдвин Востряковский.

Похожие темы

Предыдущая запись

Финансовый гороскоп на 2017 год по знакам зодиака

Следующая запись

Какие возраста считаются опасными для мужчин

Поделитесь страницей в социальных сетях

^Наверх^

goldlass.ru

Легко ли стать программистом

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

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

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

И это понятно - когда находишься перед выбором и пытаешься определить свою будущую профессию (кто знает - может быть на всю жизнь), то вопросы программирования не так уж и актуальны.

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

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

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

Возможно, я кого-то разочарую, но мой ответ будет отрицательным.

Стать программистом НЕ ЛЕГКО!!!

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

Некоторые мои читатели не очень хорошо понимают, чем занимается программист. Попросту путают с программистом опытного пользователя. Разумеется, стать опытным пользователем намного проще, чем программистом (хотя для многих это тоже нелегко).

Если же считать программистом человека, который может написать простенькую программку типа “Hello, WORLD!”, то тогда стать программистом легко.

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

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

Страшно? Утомительно?

Ну тогда я разочарую вас ещё больше. Примерно то же самое вам потребуется для овладения любой сложной профессией.

Так что выбор у вас невелик: либо работать дворником, либо учиться, учиться и ещё раз учиться.

Кстати, если вы до сих пор не начали по настоящему это делать, то самое время начать:

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

info-master.su