Как понять что ты программист
10 признаков того, что хороший программист из вас не получится
Привет, Хабр! Представляю вашему вниманию перевод статьи «10 Signs You Will Suck at Programming» автора Jonathan Bluks.
Очень часто на Reddit или Quora я вижу вопросы вида «Как понять, смогу ли я стать успешным программистом?» (На самом деле, эта статья является расширенным продолжением моего недавнего ответа на Quora.) Когда кто-то задумывается о смене карьеры или интересуется разработкой и хочет знать, что для этого требуется, неизбежно возникает этот самый вопрос.
Вообще, я думаю, что это главный барьер в умах людей, которые не получали фундаментального образования по программированию. Думать, что программист из вас так себе, совершенно естественно, и это мешает вам взяться за новое дело. Это как мечтать стать актером, но сомневаться, что вы вообще умеете играть.
Будучи преподавателем на курсе «Full-stack Web-development», я работал со многими программистами-новичками. Хорошая новость в том, что мне редко встречались студенты, которые вообще не могли научиться программировать. Я считаю, что умение программировать — такой же базовый навык, как умение читать, писать и считать. Это под силу любому, так как это одна из способностей человека, но этому действительно надо учиться.
За два года преподавания, я наблюдал мучения студентов в процессе обучения и видел у них несколько схожих проблем. Если вы взглянете на их список и почувствуете, что это все про вас, можете быть уверены — хороший программист из вас точно не получится и, возможно, вам стоит заняться чем-то другим. Однако, если вы останетесь верны своей цели стать разработчиком, вы сможете преодолеть все препятствия.
Этот список поможет вам понять, сможете ли вы стать хорошим программистом, а также что делать, если вы решите это изменить.
1 | Вам не хватает любознательности
Если вам не очень любопытно как работает компьютер и технологии в целом, вам ни за что не стать успешным программистом.
Основа любого обучения — это большой интерес к предмету изучения. Если ваш ум не питает особого интереса к технологиям, вам не хватит энергии и запала, чтобы глубоко и подробно изучить программирование и добиться успеха в этой области.
Напротив, мир технологий как огромный океан захватывающих областей, пересекающихся идей и будоражащих воображение возможностей. Потребуется внушительный запас внутренней мотивации, чтобы погрузиться в него и открыть для себя все, что только возможно.
Воспитывайте в себе любопытство: Спросите себя, на самом ли деле вам интересно программирование. Если ваш честный ответ — «нет», найдите что-то, что действительно вас увлекает. Не тратьте зря время и силы. Но если вы ответили «да», тогда заставьте себя найти нечто новое, с чем вы еще не сталкивались, признайте насколько обширен этот океан и ныряйте глубже.
2 | Вам не хватает самостоятельности и находчивости
Если вы не разовьете в себе умение решать проблемы самостоятельно, вам ни за что не стать успешным программистом.
Без сомнения, чтобы стать успешным разработчиком, вы должны быть уверены в ваших собственных способностях учиться. Это, кстати, один из самых важных жизненных навыков — если вам больше 18, никто не обязан вас учить. Такова реальность. Находить необходимую информацию и помощь, если она вам требуется, — это только ваша задача.
В мире разработки всю нужную вам информацию можно найти в волшебном месте, ранее известном как Information Super Highway. У этой гигантской библиотеки есть одна большая дверь — Google. Понять, что вы можете просто вбить в поиск все, что вам захочется, и получить доступ необходимой информации — это первый барьер на вашем пути к приобретению навыков, которые потребуются вам в мире IT.
Помимо умения гуглить, важно также научиться читать документацию и спецификации, которые есть у всех языков программирования и очень прозрачно объясняют, как работает язык. Это все равно, что использовать словарь: когда вы встречаете слово, которое вы не знаете, вы смотрите его в словаре. Самый быстрый и надежный способ развить и закрепить ваши навыки программирования — это просто читать документацию. Там есть буквально все.
Используйте все ресурсы: Поймите, что на все ваши вопросы уже есть ответы. Прежде, чем спрашивать кого-то, загуглите и почитайте документацию. Приберегите возможность потратить чье-то время на тот случай, когда вы действительно пытались найти ответ, но не смогли.
3 | Вам не хватает упорства перед лицом проблемы
Если вы сдаетесь, едва столкнувшись с проблемой, вам ни за что не стать успешным программистом.
Суть программирования есть решение проблем. Это и есть причина создания компьютеров! Всякий раз, когда вы начинаете работать над программой, вы сталкиваетесь с целой «стопкой» проблем. И как только вы находите решение одной проблеме, почти всегда возникает другая. Вы движетесь вперед, но всегда есть новые препятствия.
Надо признать, что этот ворох проблем бывает пугающим и обескураживающим. Если вы думаете, что все должно «просто работать», вам не хватит энергии и сил настойчиво продолжать работу, пока проблемы появляются одна за другой и понемногу выбивают вас из эмоционального равновесия. Ваша работа заключается именно в том, чтобы понять, почему что-то не работает.
По моему преподавательскому опыту, в группе всегда есть один или два студента, у которых как будто есть какая-то врожденная способность находить больше неприятностей, чем другие, причем очень часто это случайные и непонятные проблемы. Таким студентам я напоминаю, что чем больше проблем они встречают, тем больше у них возможностей изучить что-то глубоко и тщательно. Если через эти проблемы они могут обрести полное понимание, они станут увереннее гораздо быстрее, именно потому что столкнулись и справились с бóльшим количеством проблем, чем другие.
Терпение и принятие: Вам нужно понять, что эта область состоит из проблем, и относиться к ним стоит не как к проблемам, а как к вызовам. Каждый брошенный вам вызов, который вы сумеете преодолеть, даст вам больше знаний, более глубокое понимание и улучшит вашу способность находить новые препятствия и быстрее решить старые.
4 | Вы не ощущаете радости от успеха в решении проблем
Если вы не испытываете чувство восторга и выполненного достижения, когда решили проблему, вам ни за что не стать успешным программистом.
С выше описанной ситуацией, когда вы легко сдаетесь, связано и отсутствие «приятных ощущений», когда вы находите успешное решение проблемы. Когда исправление ошибок превращается в однообразный механический труд, которому нет конца, вы теряете азарт, сопутствующий поиску и нахождению решения задачи.
Когда вы успешно решаете проблему, в мозг выбрасывается заряд дофамина. Это сродни прохождению уровня в видео игре или решению кроссворда или судоку. Всем известно это приятное чувство, когда вы упорно боретесь с трудной задачей и в конце-концов побеждаете. Но если вы теряете способность чувствовать этот восторг, или вас это просто никогда на волновало, вам не понять и не ощутить радость от программирования. Если для вас программирование — это однообразная скучная работа, где вы просто хотите получить результат, не напрягаясь, вы никогда не станете по-настоящему хорошим программистом.
Отмечайте ваши победы: Каждый раз, когда вы находите ответ на мучивший вас вопрос, не важно, насколько он незначителен, принимайте это как повод для гордости, отвлекитесь на минутку и поздравьте себя с успешно выполненным заданием. Позвольте чувству успеха охватить вас и зарядить энергией для последующих задач.
5 | Вам не хватает терпения в учебе
Если вы ощущаете нехватку терпения в учебе и ждете, что вы сможете все освоить легко и быстро, вам ни за что не стать успешным программистом.
Человек — создание весьма ограниченное. Несмотря на то, что все в нашем мире движется все быстрее, и компьютеры являются, пожалуй, главной причиной этого, мы не можем развиваться быстрее, чем позволяют наши способности. Наш мозг работает в определенном темпе, и в зависимости от нашего прошлого, наших убеждений, эмоционального состояния и здоровья мы все учимся и усваиваем информацию с разной скоростью.
Мир технологий похож на бескрайний океан. Вам не добраться до его края, вам никогда не стать таким профессионалом, который знает абсолютно все и которому больше нечего учить. Если вас это обескураживает, вы будете постоянно испытывать давление от необходимости «догонять» прогресс и чувствовать, что ваших знаний никогда не будет достаточно. Если вы не в силах принять то, что вы уже знаете, и затем выучить что-нибудь еще, вам будет казаться, что вы никуда не движетесь, и вы просто сдадитесь.
Вместо этого, постарайтесь насладиться процессом обучений и думать о нем, как о путешествии. Все новые знания или новые навыки, которые вы приобретаете, должны вдохновлять и радовать вас. Как и когда вы находите решение проблеме, вы должны чувствовать гордость за ваши достижения и признавать, что вы сделали шаг вперед, даже если это маленький шажок.
Награждайте себя за ваш прогресс: В программировании учить придется много, и это путешествие никогда не закончится. Но знания накапливаются, поэтому вам стоит гордиться тем, что вы уже знаете, и верить, что все ваши старания в учебе создают прочную базу для вашей карьеры, куда бы она вас не завела.
6 | Вы чувствуете скуку или усталость от долгих размышлений
Если вы ленитесь думать и вы считаете сконцентрированное размышление скучной рутинной обязанностью, вам не стать успешным программистом.
Программирование — это мыслительная деятельность. Человек, как вид, успешен в этом, однако реальность такова, что даже несмотря на то, что мы делаем это все время, мы ленимся по-настоящему размышлять. Способность поддерживать концентрацию при решении единственной проблемы в течение какого-то времени вызывает сложности, если вы к этому не привыкли.
Проявляется это по-разному. Вы можете долго сидеть, уставившись в экран, чувствовать, что на ваши мысли давит тяжелая туча, прокрастинировать, бесцельно переключаться между вкладками браузера, или отчаянно исследовать StackOverflow в поисках нужного «ответа». Все это означает, что вы столкнулись с ментальными ограничениями и нужно найти выход.
Программируя, вы, естественно, будете уставать, а мыслительная деятельность будет буквально сжигать энергию так же, как и физическая. Когда ваш организм не привык к такому расходу умственной энергии, вам будет сложно оставаться собранными. Но это как занятия в спортзале: чем больше вы это делаете, тем сильнее вы становитесь.
Ваш мозг — это мышца: Поверьте, ваш мозг — как мышца: чем больше вы его напрягаете, тем сильнее он становится, и тем более эффективно вы мыслите. Пока вы собираете воедино части головоломки, систематизируете, анализируете и развиваете идеи, находить решения становится все легче.
7 | Вы не способны думать самостоятельно
Если вы ждете, что кто-то будет думать за вас, и не хотите всматриваться в детали своего положения, вам ни за что не стать успешным программистом.
Изучая что-то новое, очень часто мы чувствуем что наших знаний и опыта недостаточно для того, чтобы иметь собственное мнение. Выступить с инициативой, сделать или сказать что-то неправильно кажется очень рискованным.
У всех нас есть этот внутренний страх быть неправым. И когда этот страх препятствует вашему исследовательскому любопытству, вы подавляете в себе способность развивать реальные знания, знания, полученные из собственного опыта, побед и поражений. Если вы полагаетесь на мнение «гуру», популярного блогера, «лучшую практику» или ответ из учебника, это значит, что вы не разбираетесь в программировании полностью и глубоко.
Нужно развивать свое собственное мнение о том, что работает и что нет. Нужно понимать, почему вы считаете, что ваше решение хорошее, какие у него преимущества. Нужно развивать тонкий взгляд, который замечает не только очевидные детали. Нужно уметь отстаивать свою точку зрения, и тогда, если вы изменитесь, вы обретете новое видение и оно будет вашим собственным.
Думайте сами: С помощью собственного опыта и умения мыслить критически формируйте свои собственные мнения. Делайте обдуманные предположения, занимайте сторону в споре и будьте готовы изменить ее, если появляется новая информация.
8 | Ваше мышление негибкое, узкое и/или неорганизованное
Если вы не очень гибки в своем мышлении и у вас сложности с организацией вашего кода, а также ваших мыслей, вам ни за что не стать успешным программистом.
Я иногда вижу в студентах две крайности. Первая — узкий и негибкий подход к мышлению. Такое отношение заставляет их отвергать помощь и, несмотря на фидбэк, не дает им меняться. Все видится только с одной стороны, все предложения игнорируются.
Вторая крайность, с которой я сталкиваюсь, — неорганизованность в мыслях. Студенты сами создают себе сложности все без всякой необходимости, их код беспорядочный, в нем сложно разобраться. Они усложняют задачи и пишут по 100 строк кода там, где хватило бы 10.
Когда оба эти образа мысли объединяются, результатом оказывается такой жесткий и напряженный подход к программированию, своего рода метод грубой силы, который приводит к многочисленным слоям исправлений багов и «костылей». Что действительно необходимо в такой ситуации, так это способность вернуться к началу, переосмыслить первоначальное решение, отказаться от него и реорганизовать код.
Неспособность увидеть другие возможности или получить фидбэк мешает вам расти и развиваться. Неорганизованность замедляет вас и не дает видеть шаблоны, которые в ином случае были бы очевидны. И общее качество вашей работы ухудшается.
Самокритика: Всегда следует сделать шаг назад, чтобы увидеть целиком всю картину того, как вы подходите к задачам. Как можно сделать это лучше? Есть ли что-то, что могло бы облегчить вашу жизнь? Чего вам не хватает и что могло бы вам помочь?
9 | Вы хотите знать один «правильный» ответ вместо признания спектра «хороших» и «плохих» ответов.
Если воспринимать конечную цель программирования как нахождение верного решения, а не спектра возможных решений, вам ни за что не стать успешным программистом.
В начале изучения навыкам программирования студенты часто хотят знать, является ли то, что они сделали, «правильным». Ответ на этот вопрос всегда — «зависит от обстоятельств».
Computer Science — это наука оценивания компромиссов. Получив различные комбинации обстоятельств, найдете ли вы лучшее решение? Все зависит от обстоятельств и целей. Когда вы воспринимаете программирование как тест с верными и неверными ответами, вы теряете возможность видеть всю картину и отказываетесь от творческого подхода. Любое решение может быть «верным», если оно оправдано в данных обстоятельствах.
В реальности программирование больше похоже на написание стихотворений или рассказов (или романов, если программы достаточно большие). В вашем коде есть своя эстетика и красота, иногда видимая лишь вам и другим программистам. Причины, по которым вы выбрали какое-либо решение и то, каким вы себе его представляете, гораздо важнее, чем «правильно» или «неправильно». Образ мысли художника позволяет играть с различными вариантами и возможностями, а не считать какое-либо решение единственным верным. В этом и есть красота программирования — есть много разных способов решения проблемы, и рассмотрение разных возможностей приводит к ощущению того, какой из них лучше подойдет в тех или иных условиях.
Будьте креативными: Поймите, что есть множество способов решить проблему, а опыт и выдержка помогут вам со временем развить отличное понимание того, какие решения больше подходят в данной ситуации, чем другие. Видеть полную картину, представлять себе различные возможности и доверять своей интуиции полезно для нахождения лучших решений, полностью удовлетворяющих вашей задаче.
10 | Вы не уделяете достаточно внимания деталям
Если вы пренебрегаете деталями и упускаете из вида мелочи, вам ни за что не стать успешным программистом.
Компьютеры любят точность. Когда дело касается программирования компьютера, необходимо предоставлять ему исключительно точные команды таким образом, как того ожидает компьютер. Если вы этого не делаете, ничего не сработает. Среднего не дано — код либо работает, либо нет.
Это означает, что программисту необходимо быть внимательным к деталям. Каждый пробел, скобка или точка с запятой важны. Если они не там, где надо, ничего не сработает. Когда компьютер выбрасывает сообщение об ошибке, вы должны уметь взглянуть на него и понять четко, о чем он вам сообщает. В реальной жизни, если вы упустите подобные детали, вы потратите часы на поиски проблемы, которая на самом деле является результатом простой опечатки.
Как говорится, дьявол кроется в деталях. И в программировании это действительно так.
Уделяйте внимание деталям: Мелочи важны и вам придется это принять. Как только вы это сделаете, вы начнете просматривать ваш код на наличие чего-то, что не на своем месте. Можно организовать свой код и использовать различные инструменты, помогающие идентифицировать проблемы быстрее.
Бонус: Вы сосредоточены на бизнесе
Вот, что я понял, наблюдая со стороны: студенты, имеющие предпринимательскую жилку, часто более сосредоточены на результате, чем на процессе. Они хотят получить «рабочее приложение», которое позволит им продвинуться дальше с их бизнес-идеей, они хотят «сначала выйти на рынок» и видят длительное обучение как барьер на пути к их цели — запуску их бизнеса.
Анализируя студентов, которым было реально трудно расти как программистам, я пришел к выводу, что нехватка терпения в процессе обучения является серьезным препятствием и действительно мешает разобраться в технологии. Для них технологии — всего лишь средство достижения цели, но не обширная серьезная область знаний, которую нужно исследовать и получать удовольствие.
Я также встречал студентов, которые желали начать работать сильнее, чем другие, и испытывали значительные сложности в обучении. Они часто торопились найти заказчиков, подписывались на работу, которую даже не в состоянии были выполнить самостоятельно! Они хватались за все найденные ресурсы/шаблоны чтобы только проект начал работать, или же отдавали часть работы на аутсорс кому-то еще. У них реально плохо получалось программировать, но потрясающе получалось убеждать людей платить им за это!
Я бы хотел добавить, что студенты, желающие начать бизнес, великолепно понимают в продажах, связях и развитии, но испытывают гораздо больше трудностей в самом программировании. Их естественное желание создать финансовые возможности и связать людей и решения делает их нетерпеливыми в разборе нудных деталей, что предполагает программирование.
Заключение
Хотя научиться программировать довольно сложно, это совершенно точно возможно. Приведенный выше список содержит такие подходы и образы мыслей, которые встают у вас на пути, однако большинство людей в состоянии преодолеть эти препятствия и стать компетентными программистами, и даже мастерами своего дела.
Если вы хотите научиться программировать, отправляйтесь в это путешествие! Помните об описанных мной проблемах и начинайте исследовать все множество ресурсов, доступных онлайн, это ускорит ваше продвижение вперед. Вы точно не пожалеете.
Дисклеймер: все сказанное выше — мое собственное мнение, основанное на профессиональном опыте преподавания веб-разработки. Оно может отличаться от мнения BrainStation.
Тест: у вас есть талант к программированию или нет? Давайте проверим
Некоторые люди рождаются со склонностью к программированию. И дело не в том, любят ли они компьютеры и учат ли математику — это вопрос отношения к жизни. Можно ни разу в жизни не включать компьютер, но мыслить как отличный программист. А можно не вылезать из компьютеров, но решать задачи совершенно не по-программистски. Пройдите этот тест, чтобы проверить, насколько ваше мышление похоже на мышление топовых программистов.
Знаете ли вы технологии двадцатилетней давности? Или дискетка поставит вас в тупик?
Только 1 из 10 программистов пройдет этот тест без ошибок.
Как выбрать то, что действительно нужно.
Практическое руководство для самых эффективных
Краткая памятка по выживанию без веб 2.0
5 сервисов для создания мобильных приложений без программирования.
Самые необычные устройства, на которых запускали Doom.
Только 1 из 10 программистов пройдет этот тест без ошибок.
Галереи, параллакс, меню и всплывающие уведомления — обзор проверенных jQuery-плагинов.
Я – программист
Здравствуйте! Меня зовут Владимир, и я — программист. Надеюсь, это не диагноз))
Когда знакомлюсь с людьми и говорю им, кем я работаю, они удивляются. Говорят: не похож ты на программиста. Бытует особое мнение о том, как выглядит человек нашего труда. Это обязательно должен быть замкнутый «ботаник», витающий где-то далеко на своей волне, у него бледно-болезненный вид, немытые волосы и очки. Мой жизненный опыт показывает — мы, программисты, — увлеченные делом люди, но не зацикленные на нем. Хотя, исключения, конечно, бывают.
ПрофГид меня попросил написать статью о нас, программистах.
Расскажу о том, чем мы занимаемся на самом деле.
И, если вы думаете связать жизнь с нашей профессией, примерьте сказанное на себя. Возможно, это поможет вам определиться.
Мой сын и еще несколько детей моих знакомых захотели стать программистами. Однако большинство из них не хотят учиться в старших классах школы и поступать в вузы.
Один так и говорит: «Хочу, как дядя Вова, — сидеть дома, ничего не делать и получать деньги». Пожалуй, со стороны так всё и выглядит: сидит «дядя Вова» на даче в кресле, и что-то там делает на ноутбуке. Посмотришь на экран, а он то чатится с кем-то, то почту проверяет. Утром на работу не спешит, да и вообще садится, когда захочет, а то и на баньку прервется.
Как выглядит карьера программиста в моем случае?
Мне тридцать восемь лет, из них двадцать два года компьютеры — моё самое большое увлечение. Впервые, как и многие мои сверстники, я сел за клавиатуру в предпоследнем классе школы. В то время дома их ни у кого не было. Помню, с каким трепетом я впервые прикоснулся к клавишам, пока учительница говорила про «алгоритм включения и выключения». Мы этот алгоритм записывали в тетрадь: «стол, клавиатура, дисплей. дисплей, клавиатура, стол». О! Это была массивная, металлическая клавиатура и здоровенный текстовый дисплей с зелеными буквами. При включении на экране появилась надпись по-русски «Жду:». Я попробовал что-то ввести, — выдалась ошибка. Я исправляю ввод, компьютер это проглатывает, и снова пишет «Жду:». Не знаю почему, но меня это очень раззадорило — компьютер понял меня. Захотелось писать и писать дальше.
С нетерпением я ждал уроков информатики, но они были так редки: один раз в неделю 40 минут! Довольно быстро я уже писал программки вне школьной программы. Ха! Кстати, первая программа, которую я написал, — тест на профориентацию. Привет, заказчик статьи! Это был обычный тест, напечатанный в каком-то журнале с вопросами и вариантами ответов. По сумме баллов выдавались рекомендации. Потом были еще персональные задания — и для школы полезно, и мне интересно.
Мне повезло с учителем информатики. Галина Григорьевна, низкий вам поклон за то, что не дали остыть моему интересу! Чтобы увеличить время работы за компьютерами, я записался на курсы информатики при ДКиТ ВАЗа. К сожалению, курсы длились только месяц, а в кружок после окончания меня не взяли — программа, которую я написал при «выпуске» не впечатлила преподавателей. Это меня по-хорошему разозлило — захотел доказать самому себе, что они ошиблись! Стал ходить в компьютерный класс при педагогическом институте. Но перенять опыт там было не у кого — туда ребята в основном приходили, чтобы поиграть, даже лаборанты увлеченно во что-то играли.
В общем, к окончанию школы я точно знал, куда пойти учиться, — на программиста! В нашем городе (Тольятти) негде было этому учиться, и я оказался в Самаре, в политехническом (ныне СамГТУ) на факультете автоматики и вычислительной техники, специальность 2202 «Автоматизированные системы обработки информации и управления». Это престижный был факультет и группа (проходной бал 10 из 10). К сожалению, в нашей группе было много «случайных» людей — отличников, которые просто пришли к нам из-за престижа. Однако несколько единомышленников у меня все-таки нашлось, но главное — была атмосфера!
Первый компьютер у меня появился дома на втором курсе, это был ZX-Spectrum. Подключался он к телевизору, программы загружались с бытового магнитофона. На нём я мало программировал — больше играл. Загружать-выгружать программы было долго и неудобно, я и не нашел для себя интересной области для написания программ. Примерно через год мне стало неинтересно и ужасно жаль потраченного времени на игры. С тех пор я практически не играю.
К третьему курсу мои родители (спасибо им!) пожертвовали отпускными и планами постройки дачного дома — приобрели мне настоящий персональный компьютер: «Электроника ЕС-1840»! Это было очень круто по тем временам. Компьютер представлял собой два больших металлических и жутко тяжелых блока и небольшой черно-белый текстовый монитор. Работало это чудо на аналоге процессора Intel-8086, 640 килобайт оперативной памяти, 2 дисковода для 5ти дюймовых дискет повышенной емкости (720 килобайт!) и самый шик — в нем даже был жесткий диск, с потрясающим на то время объемом — 40 мегабайт!
В общем, все выходные, каникулы и праздники я проводил перед экраном этого монстра. Первое, что я написал, — «драйвер» для моего принтера. Это была какая-то польская модель с кириллицей, перепутанной местами. Потом мне очень хотелось печатать плакаты графикой, и я написал еще один драйвер, который адаптировал команды к популярной модели Epson в команды к моему принтеру. И он прекрасно работал!
Это потрясающее чувство, когда ты заставляешь машину делать то, что тебе нужно!
Два последних курса института я писал чисто для себя, проект на языке низкого уровня «Ассемблер» — информационную систему. Программка, которая вызывалась по нажатию горячих клавиш из любой другой программы и в которой можно было почитать справочную информацию. Она и стала впоследствии моим дипломным проектом. Параллельно поработал на ВАЗе, на «практике». Не понравилось. Да, техника отличная, но коллектив. Никому ничего не надо, мной никто толком не занимался. Я сидел себе и писал свою программку на большом мониторе. Жаль, что тогда интернет был в диковинку: можно было бы и разбогатеть, ведь программа затыкала за пояс по всем параметрам аналог Norton Guides от крутой программной фирмы Peter Norton Computing. Самооценка моя постепенно росла.
На моей второй «производственной практике» пошел я в коммерческую организацию, которая занималась сборкой и обслуживанием персональных компьютеров. Вот там было классно! Хороший коллектив, увлеченные, неравнодушные люди! Там я всё делал — проверял дискеты на вирусы, собирал компьютеры, занимался их ремонтом и даже стоял за прилавком, когда продавцы брали перерыв. В свободное время что-то писал для себя. И вот мне дали задание — написать информационную систему для нашей организации: складской учет, заказы, выписка счетов, выгрузка отчетов для бухгалтерии. Это и стало моим главным проектом в последующие пять лет работы.
Были и еще проекты. Самый крупный — электронный каталог запчастей для АвтоВАЗа. Это интересная работа: мы общались с людьми, подготавливающими бумажные каталоги. Узнали много о тонкостях производства автомобилей на ВАЗе, общались с переводчиками (каталог был многоязычный) и придумали, как все это воплотить в программу.
Потом была Москва. Мы писали информационную систему для нефтяной компании «ЮКОС». Было очень интересно — большие красивые офисы, совещания с солидными людьми, посиделки в ресторанах. Работать было интересно, но жить в Москве некомфортно. В принципе, я почти привык. Но. Слишком много людей, везде. Меня увлек интернет. И когда мои коллеги с предыдущей работы, в шутку, наверное, предложили мне вернуться в родной город, чтобы писать программы для зарубежных заказчиков, я взял и согласился. Заработок обещал быть не меньшим, и это… дома!
Мы сняли офис, начали работать. Около года работали, потом с заказами стало плохо. У основного заказчика случился форс-мажор, а мелких мы растеряли, чтобы «не отвлекаться на глупости». По кредиту надо было платить, за аренду тоже. Наши заработки рухнули. С тяжелым чувством распродали мы технику, часть разобрали в счет зарплаты и разошлись кто куда. Кто-то остался работать на дому, кто-то устроился в организации.
С тех пор, вот уже 8 лет, я работаю из дома. Я фрилансер, работаю по контракту. Зарегистрировал ИП, есть расчетный счет в банке. Расходы на интернет и бухгалтера (раз в год для сдачи отчетности), 6% налогов с выручки и налоги в пенсионный — вот все мои расходы. За годы работы у меня сложился круг постоянных клиентов. У меня интересная работа и неплохой доход.
Чем мне нравится эта профессия
Во-первых, она позволяет вникать в различные области жизни. Если ты пишешь программу для бухгалтерии, ты обязан освоить все нюансы бухгалтерского дела. Программируешь систему документооборота — осваиваешь делопроизводство, систему контроля и исполнения решений — узнаешь о том, как построены эти процессы на том или ином предприятии. По сути, программа — это ваши знания о той или иной отрасли, заложенные в ее коде. Это позволяет постоянно общаться с новыми людьми, узнавать что-то новое.
С развитием систем коммуникаций открылась еще одна, очень привлекательная сторона нашей профессии — возможность удаленной работы. Благодаря этому, многие из нас трудятся дома, на даче, в теплых странах на берегу океана. Наша профессия дает нам свободу выбора — где жить, с кем работать.
Не секрет, что в России наш труд оплачивается ниже, чем за рубежом. Нет проблем — можно работать и на зарубежные компании, оставаясь дома. Конечно, уровень оплаты будет существенно ниже, чем за границей, но значительно выше, чем здесь. Это значит, что при наличии интернета и компьютера/ноутбука можно жить и трудиться в родном провинциальном городке.
Что касается востребованности, и тут проблем нет. Постоянно появляются новые задачи, новые отрасли (пример из недавних — приложения для мобильных телефонов), требуют все новых и новых специалистов. Несмотря на то что непрерывно создаются инструменты, облегчающие нашу работу, требования к нашей квалификации не снижаются. На рынке труда много людей, окончивших различные учебные заведения по нашей специальности, но найти хорошего специалиста — большая проблема.
А вот и ложка дегтя. Время жизни создаваемых нашим трудом продуктов невелико. Почему? Потому, что ИТ-отрасль эволюционирует очень быстро, программы морально устаревают за несколько лет, и мы пишем новые. Результатами труда архитектора люди любуются десятки лет, скульптора — сотни. То, что производим мы — недолговечно. Оно работает, как правило, на «железе», которое через 10 лет вы найдете только в музее.
С другой стороны, мы — движители эволюции общего информационного пространства. То, каким стал интернет, какие появились удобные и полезные функции (покупка билетов, выбор и бронирование отелей, госуслуги и т. п.) — в этом есть и частичка нашего труда. Этим можно гордиться.
Как выглядит работа программиста
Многое зависит от места работы и ваших способностей. Если вы работаете в большой компании, то ваш круг обязанностей будет, скорее всего, узкоспециальным. В небольших проектах, как говорится, «и швец, и жнец». Везде есть свои плюсы и минусы. В первом случае вы, несомненно, будете отличным спецом в своей области, чувствовать себя частью большой компании. Но в то же время — относительно легко заменяемым «винтиком». Во втором случае — вам необходимо будет ориентироваться в очень широком круге технологий, здесь есть больше свободы для творчества. Расплачиваться за это приходится меньшим погружением в каждую из областей, возможны ошибки в работе, которые вам приходится исправлять, более частые стрессы.
В любом случае, где бы вы ни работали, вам придется столкнуться со стрессовыми ситуациями. Работа без выходных, ночами — обычное дело в нашей сфере деятельности.
В настоящее время компании начинают понимать, как это важно — сделать работу комфортной. Хорошего специалиста найти очень трудно, а удержать на месте — еще сложнее. Бесплатные булочки, напитки, наличие мест для отдыха и занятий спортом — всё это делается для того, чтобы вы чувствовали себя в офисе «как дома» и работали с полной отдачей. Не редко можно найти и удаленную работу. Некоторые компании оформляют своим сотрудникам «опционы». Это пакет акций компании, на довольно значительную сумму, но распорядиться им вы можете, только проработав в компании определенное время (например, через пять лет).
Какими качествами должен обладать программист
Во-первых, он должен любить свое дело. Даже не так: он должен болеть им. Случайные люди, ремесленники у нас не задерживаются. Довольно быстро приходит осознание, что это тяжелый, каждодневный труд. Не всегда все получается с первого раза — бывает, что ты не знаешь, как это делается, и учишься по ходу дела. А бывает что причина некорректной работы программы в среде ее выполнения — что-то работает не так, как должно. Приходится с этим разбираться, придумывать, как выйти из ситуации.
Во-вторых, должен уметь и желать постоянно учиться, осваивать вещи с нуля. Вы можете чего-то не знать, но должны уметь найти нужную вам информацию. Самый главный помощник программиста — Google 🙂 В общем, если вам не нравится учиться, профессия программиста не для вас!
В-третьих, должен быть трудолюбивым. Очень важно уметь работать длительное время над «неинтересной» или рутинной задачей, с детальной, монотонной проработкой всех возможных ситуаций.
Мне нравится анекдот про программиста:
«Ложась спать, программист ставит у кровати два стакана. Один с водой, другой — без.
Стакан с водой — на случай, если захочется пить. А без воды — на случай если пить не захочется».
Не программистам этот анекдот непонятен, ну, могут посмеяться над глупым поведением «замороченного» человека. Люди нашего труда поймут иначе. Зачастую при написании кода приходится продумывать все ситуации, даже самые невероятные и глупые на первый взгляд. И если что-то упустишь, то она обязательно «выстрелит» — программа поломается. Это понимание приходит с опытом.
Пожалуй, такая вот дотошность в работе — ключ к успеху.
Какие знания нужны, с чего начать
Я бы посоветовал начать с изучения английского языка. Вам нужно будет читать документацию, книги, общаться с коллегами и работодателями. Без знания языка вы сильно ограничиваете себя, теряете ценность как специалиста. Как минимум вы должны уметь бегло читать технические тексты. Очень хорошо — уметь грамотно писать и воспринимать речь на слух. В идеале — свободно общаться на английском языке, в том числе на отвлеченные темы. Тогда для вас будут открыты все дороги!
Хорошо бы иметь общее представление об устройстве компьютера. Ранее без этого было вообще невозможно, но и сейчас очень желательно понимать физику процессов, как все работает. Это позволяет писать оптимальные программы. Кроме этого, для некоторых областей (игры, приложения реального времени, высоконагруженные системы) нужно очень хорошо разбираться в тонкостях процессов.
Что касается языка программирования, можно начинать с любого, где есть полноценная поддержка ООП (объектно-ориентированного программирования). Я бы порекомендовал язык «Питон» (Python). Это довольно взрослый язык, по нему есть масса информации, отличных книг, в том числе переведенных на русский язык.
Кроме языка программирования, вам нужно будет обязательно изучить основы реляционных баз данных и язык доступа к ним — SQL. Практически любая программа оперирует данными, находящимися в базе. В настоящее время набирают популярность так называемые NoSQL-базы данных, надо изучить и эту тему.
Очень полезно почитать о методиках разработки программного обеспечения — как построить процесс разработки таким образом, чтобы выполнить работу в срок и качественно. Методики тестирования программного обеспечения — также весьма и весьма полезное чтение. В настоящее время популярна парадигма «разработки через тестирование».
В заключение я бы порекомендовал поискать литературу по алгоритмам и шаблонам корпоративных приложений.
Куда пойти учиться
Я рекомендую настроиться на получение высшего образования. Знаю, сейчас «программистов» выпускают и средне-специальные учебные заведения, но я сильно сомневаюсь в том, что вы там чему-то научитесь.
Напомню, что главный движитель опыта и ваших знаний — вы сами. Окружение, в котором вы находитесь, может быть как катализатором, так и помехой. Кто идет учиться в средние учебные заведения? Те, кто не хочет или не может учиться в школе? Вам с ними не по пути.
Кроме этого, наличие высшего образования еще никому не вредило, а в некоторых специализациях нашей отрасли просто не обойтись без знаний высшей школы. Ну, и еще раз: круг лиц которые вас окружают. С самого начала вы должны быть окружены правильными людьми.
Может, не стоит учиться вообще
Зачем учиться? Ведь есть примеры успешных людей нашей профессии, бросивших учебу и ставших миллиардерами.
Я уверен, учиться стоит! Конечно, если у вас есть идея «на миллион», вы знаете, как ее воплотить, а учеба только отвлекает вас, тогда да, берите академический отпуск — и вперед, ловите удачу за хвост. В противном случае — учитесь.
Время идет быстро, может случиться так, что у вас просто не будет больше такой возможности — пять-шесть лет полноценно посвятить учебе. Да и вряд ли вы сможете нормально влиться в компанию студентов, которые к тому времени будут младше вас на много лет.
Рассматривайте время учебы в вузе как период, данный вам для осмысления того, чем бы вы хотели заниматься, поиском себя. Если ваши родители дают вам такой шанс — дают возможность учиться и не думать о том, как прокормить себя в это время, не упускайте его.