АТАПИ Софтвер - поставка и внедрение систем ввода данных, систем  документооборота, разработка OCR-приложений, приложений машинного зрения, оцифровка печатных материалов и архивных данных
Решения оптического распознавания и оптимизации документооборота

Как стать программистом: практические рекомендации

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

Профессия программиста: сто раз подумайте... 

Прежде всего (особенно это актуально для «дауншифтеров»), спросите себя, готовы ли вы тратить 40 часов своей жизни в неделю на то, чтобы сидеть перед монитором и заниматься написанием текстов на некоем искусственном языке? Готовы ли неделями думать обо всяких абстракциях (причем одних и тех же), пока они не обретут законченный вид - причём, думать на этом самом искусственном языке? Нравится ли вам решать задачки наподобие такой или вы их всегда терпеть не могли?

Все крокодилы умеют летать. Все великаны являются крокодилами. Значит, все великаны могут летать.

- Правильно

- Неправильно

Источник: http://nazva.net/logic_test7/

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

Английский язык как зеркало мировой программистской мысли

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

Если за время учебы в школе и ВУЗе английский выучить так и не удалось, то придется учить сейчас. Как минимум, на английском надо уметь читать, то есть бы в состоянии перевести написанную на английском фразу дословно. (Если вы в состоянии только очень примерно сказать, что утверждается в этой фразе или тексте, то этого заведомо недостаточно.) Почему важно понимать дословно? В области информационных технологий тексты на английском содержат точную информацию: например, если это какая-то инструкция, то надо строго следовать шагам этой инструкции. Если один из шагов вы не поняли, то не получите нужный результат, применяя эту инструкцию. Что касается умений произносить слова на английском, писать на английском или разговаривать на английском, то они менее значимы для программиста, чем умение понимать написанный на английском текст дословно. Хотя, конечно, речевые навыки тоже могут пригодиться - например, если вы поедете в зарубежную командировку к заказчику.

Как быстро научиться понимать IT-текст на английском?

К счастью, в текстах, с которыми обычно сталкиваются программисты в своей ежедневной работе, используется довольно ограниченный набор слов и грамматических конструкций. Есть ли какая-то тема, связанная с программированием, которая вам хоть на каком-то уровне известна на русском? (Если такой темы нет, то еще раз задумайтесь о том, действительно ли вы хотите быть программистом, или это просто такая мимолетная фантазия.) Например, чуть-чуть знаете HTML. Или из школы помните, как писать программу “Hello, world!” на каком-нибудь языке, знаете, что такое условные операторы, циклы и т.п. Найдите объемную статью или книгу по этой теме на английском. Например, если знаете HTML, то можно взять десяток-другой глав из спецификации HTML. Распечатайте их и читайте с пониманием до последнего слова. Каждое неизвестное слово смотрите в словаре и подписывайте в распечатку. Посмотрели все слова в словаре, теперь попробуйте собрать из них осмысленную фразу на русском. Уверены, что фраза переводится именно так? Точно ни одного слова не упустили? Точно смысл не исказили? И так продолжайте много-много страниц, как минимум несколько сотен. Количество рано или поздно перерастет в качество. Вы заметите, что к словарю вы обращаетесь все реже и реже, а грамматические конструкции и используемые обороты повторяются. И к какому-то моменту вы поймете, что вы читаете уже, по сути, без словаря, обращаясь к нему только раз в несколько страниц. Собственно, этого уровня английского языка уже и достаточно. Конечно, таким способом вы натренировали только IT-шную лексику в английском. Это никак не поможет вам смотреть фильмы с английской звуковой дорожкой, читать Агату Кристи в оригинале или спросить у жителя Лондона, как пройти в библиотеку, но этого уровня уже может быть достаточно, чтобы выполнить задание по английскому на собеседовании на вакансию программиста. (Если, конечно, вы знаете основную «матчасть»).

Первые шаги по минному полю программирования

Теперь, наконец, о программировании. В понимании обывателей программист – это человек, который умеет удалять вирусы с компьютера и настраивать доступ по Wi-Fi. Конечно же, это не так. Более того, программисты имеют разные специализации и программист, который разбирается, например, в реляционных базах данных, может ничего не смыслить в программировании для мобильных платформ. То есть как и в других специальностях, в программировании есть специализация. Не требуем же мы от травматолога, чтобы он вылечил у нас насморк. Так что определяйтесь с тем, в какой области вы хотите специализироваться. Не забудьте проверить, что эта область вообще востребована на рынке труда в том регионе, где вы живете. Откройте какой-нибудь рекрутинговый сайт и посмотрите, какие вакансии программистов там опубликованы, много ли тех, которые интересны сейчас вам.

Теперь читаем ваши вакансии мечты и выписываем оттуда требования к кандидатам. Например, «понимание принципов объектно-ориентированного программирования», «умение программировать на языке C#», «опыт работы с реляционными базами данных», «опыт разработки пользовательских интерфейсов на WPF» и т.п. По каждому требованию берем самоучитель, книгу, статьи или любой другой источник, по которому вам захочется учиться, и учимся. Книгу не просто читаем, лежа на диване, а проделываем все те действия, что описываются в книге. Описываются условные операторы или циклы – пишем короткую программку, в которой они будут использованы. Описывается полиморфизм – придумываем пример, где полиморфизм был бы полезен, проектируем систему классов и реализуем её… Книги старайтесь выбирать не какие попало, а либо известных классиков жанра (например, по ООП это, например, Гради Буч, а по программированию на C++ ­это Бьерн Страуструп), либо с хорошими отзывами. Если книга читается тяжело, возможно, вам не стоит «убиваться» конкретно об неё - найдите такую, которую вам читать приятно. Например, по языку SQL с самого нуля очень хорошо подойдет книга Мартина Грабера «Введение в SQL». Попробуйте почитать ее и прочувствуйте, как легко она читается… Если есть возможность, то посещайте курсы и/или вебинары, но тоже относитесь критически к тому, что вы получаете от мероприятия.

Краткое руководство для начинающих: начните

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

Код собственного проекта вы сможете использовать при поиске работы: отправить потенциальному работодателю пример кода вашего авторства, чтобы он смог оценить уровень владения языком программирования, стиль оформления и т.п. Кстати, об оформлении программного кода. Почитайте статьи по этой теме: как рекомендуется именовать переменные, как комментировать код, каким практикам следовать, каких обычных ошибок избегать и т.п. (поисковые запросы: “coding guidelines”, “coding conventions”, “coding standards” и им подобные). Обдумайте каждую рекомендацию, согласны вы с ней или нет, понимаете ли, к чему приведёт её нарушение. А ещё научитесь пользоваться какой-нибудь системой контроля версий и храните в ней код своего проекта. Это тоже пригодится вам в будущей работе.

Что ещё может быть полезно

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

Желаем вам удачи! Ищите возможности для стажировок или вакансии для людей без опыта работы в IT. Например, такие вакансии регулярно появляются в нашей компании :).