15

Как становятся программистами

Всем привет.
Желание написать этот пост на меня навело участившееся количество материалов в разных пабликах о том, как это просто взять и стать программистом, первый язык, первое приложение/сайт/игра и горы предполагаемых денег.
После таких ободряющих постов заряженные надеждой молодые (и не очень) люди делают свой первый hello word и с ним, в качестве резюме, смело прут на биржи. На бирже, получив несколько отказов, даже перспективные и одаренные люди теряют надежду и оставляют начинание. Другая часть соискателей, которая каким-то образом умудрилась получить первый проект - пополняет ряды отечественных быдлокодеров, которые толпятся в заявках на копеечные проекты и задачи и генерируют код с запахом. И лишь малая часть преодолеват порог вхождения в профессию, получая настоящий полезный первый опыт благодаря стечению обстоятельств, везению либо собственным талантам.
Я люблю программирование и занимаюсь им с детства. Соответственно выбор профессии после школы для меня был очевиден, но несмотря на это, настоящим делом я занялся, только аж через 4 года после окончания универа. Оглядываясь назад, сейчас я точно понимаю причины почему я, работая 4 года инженером-программистом на большом предприятии, не являлся программистом вообще. И все мои попытки чего-то достигнуть окнчивались некоторое время провалом.
Современная система образования на постсоветском пространстве, как и посты, о которых я упомянул в начале, не учат нас - как же на самом деле стать и быть программистом, как искать клиентов, работать на компании, начинать и вести свои проекты, как зарабатывать деньги, как и о чем договариваться с людьми. Нам не говорят о подводных камнях, не прививают систему ценностей, без которых существование тебя, как программиста - в принципе не возможно. Нам не рассказывают о карьерной лестнице, ее ключевых этапах, разветвлениях и общих направлениях. Не рассказывают о работе с клиентом, о жизненном цикле программного продукта и его поддержке. Нас учат многому: технологиям, языкам, каким-то техникам. Но нас не учат как этим пользоватсья. Не обучают профессии программиста.
Сейчас мне чуть больше 30, через 4 года после универа мне наконец-то повезло. Я рискнул и вырвался из зоны комфорта, уволился с завода и получил свою первую должность юниора "удаленно". Лишь за первый год работы я влил в себя полезной информации больше, чем за всю жизнь до этого. Сейчас уже прошло 6 лет с тех пор и за это время через мои руки прошло несколько юниоров. Не всегда по работе, иногда по знакомству в жизни, не суть. У всех юниоров однозначно диагностируется неопонимание того, сколько времени и сил нужно затратить на профессию и на каком этапе чего стоит ожидать от нее. С этого и начну.

Часть 1. Вход в профессию.
- Первые этапы
- Какие знания нужны для начала
- Что вам за это перепадет

Этапов 3:
- Вы никто
- Вы начинающий перспективный юниор
- Вы начинающий перспективный юниор с кое-каким опытом

Цель прохождения этих этапов - "зацепиться", запрыгнуть в движущийся состав индустрии и стать полноценным юниором на постоянной основе в какой нибудь мелкой компании.

Пока вы никто - вам абсолютно все равно с чего начинать. На самом деле разница есть. Начинать следует с наиболее живого рынка. Он не самый оплачиваемый, но получить первый опыт в кратчайшие сроки есть шанс у вас именно тут. И этот рынок - web-приложения.
Для примера я однажды завел абсолютно пустой аккаунт, без резюме и без деталей об опыте работы, и смог в течении двух дней получить заказ на сайт-визитку на wordpress c итоговым заработком $250 за 5 дней (на самом деле было $350, но $100 ушло дизайнеру на той же бирже).

Итого - большой шанс получить первые заказы у вас есть именно на простых web-приложениях - сайтах-визитках и landing-страницах. Для освоения вам понадобится знать поверхностно:
- html
- css
- java script
- sql (mysql)
- какой нибудь движек типа wordpress
- понимание принципов рабоыт интернета
- минимальные навыки администрирвоания vps/хостинга
Да, и это только для минимального первого заказа.
Уже тут, если у вас нет никакой базы, я бы посоветовал вам пойти на какие нибудь курсы, на которых вас методично прогонят по must have технологиям. Ну или можно попытаться пройти все это самостоятельно, по вечерам. В результате усердных методичных занятий стадия "никто" будет преодолена.

...Прошло 6 месяцев

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

...Прошло еще месяца 3

Далее идем на одну или сразу все биржи и начинаем мониторить подходящие набитым скиллам проекты/задачи.
Это самый сложный эмоциональный этап, рубеж. Вы себя чувствуете никем, всего боитесь. Но на самом деле получить заказ - легко. Немножко психологии - и заказ у вас. Основное правило - предлагайте заказчику то, чего он хочет, а не то, чего по вашему мнению ему нужно. И никогда ничего не скрывайте.
В этом и состояит весь второй этап - пытаться заработать несколько строк в резюме.
Одновременно с этим процессом нужно начинать работу над третьим этапом - юниор с опытом. На этом этапе ваша цель получить вакансию.
Удаленно или на офисе - не суть. Но вы должны запомнить - фриланс пока не для вас. Вы не сможете жить проектно.
Вам нужна вакансия юниора и наставник. Наставник вам нужен, так как с ним вы переболеете всеми детскими болезнями за пол года вместо двух лет и будете готовы выйти на настоящий рынок труда намного раньше.
Как только вы получите вакансию - держитесь за нее двумя руками. Как минимум год. А потом смело меняйте компанию, только если вам тут ну прям рай, можно посидеть еще. Но в итоге менять место первые года нужно регулярно раз в 2 года как минимум. Так как каждая смена обстановки - это новая солидная порция опыта и шанс значительно повысить текущий уровень дохода.

Ну и по ценам, обещал упомянуть:
- если вам повезет сорвать по 500 рублей за курсовые - это будет подарок судьбы
- $50 за первые проекты
- $2-4 в час за первые юниорские месяцы
- $6-10 в час через три года после того как вы были "никто" вы сможете найти

Программистом может стать каждый, но не каждый может программировать.
Я верю в вас.

Продолжение следует...
Часть 2. Система ценностей хорошего программиста.
0
Автор поста оценил этот комментарий

Как красиво у вас все, аж завидно чуть-чуть :) (я в хорошем смысла)

В моем городе сфера разработки вообще полу-мертвая, поэтому ни о каких стажерах/джунах речи не идет. "С корабля - на бал" - как говорится. Поэтому фриланс у меня в городе - дело не то, чтобы обычно, но необходимое.

У меня переломная точка была, когда меня каким-то чудом впервые на удаленную работу взяли на серьезный проект, вот там-то я и осознал, что я реально НИКТО. Вот там была жесть: команда небольшая была, проект активно развивался, и со мной тупо некому было сидеть.

Зато там я усвоил, имхо, самое главное правило джуна: с новой задачей/технологией попробуй сам разобраться, а, если не получается, то еще раз попробуй, и только потом кого-то отвлекай вопросами.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

я сам с пгт населением 6 тыс человек. Мой старт был так же удаленно, на чешскую фирму.

показать ответы
0
Автор поста оценил этот комментарий

Программистом надо становиться максимум в универе. Если не получилось, то дальше практически невозможно, ибо для освоения подобного ремесла нужно время, усердие и усидчивость, и очень много. И для начала нужно наваять for fun хотя бы один осмысленный проект, а потом вообще даже _думать_ о том, чтобы за это деньги получать.

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


А еще очень умиляют те "монстры программинга", которые считают веб-сферу, особенно с php, чем-то недостойным и низким. Да, есть языки с низким порогом вхождения, но говнокод можно и на Java наваять. А php... А попробуйте-ка наваять проект, распределенный по десятку серверов, с нагрузкой до 20 млн хитов в сути, потом и поговорим и про быдлокодерство, и про криворукость и тд.


Так что учиться, читать, пробовать, и снова учиться и читать, а еще все это запоминать, и все получится. И да, чем больше молодежь пи#дить на стадии обучения, тем она меньше косячит на продакшене.


P.S. Никогда фрилансом не занимался.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ваш ответ вне контекста и вас видимо тоже напрягают какие-то мейнстримовые движения.

Еще раз - веб не низость и не панацея. Но утт наиболее реально получить первый оплачиваеый опыт. Я ведь об этом писал? Как вы умудрились надумать там сверху коробку?

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

показать ответы
2
Автор поста оценил этот комментарий
Ну зачем начинать с веба? Портить руки сразу, с нуля? Вредные советы однозначно.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну на самом деле альтернатив не так уж и много, еще есть mobile

web и mobile - тут есть шанс без напрягов получить первый оплачиваемый опыт. Если вы знаете еще что-то выкладывайте. Критиковать легко.

показать ответы
4
Автор поста оценил этот комментарий

Это серия статей «Как вкатиться во фриланс, если ты кодер»?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это коментарий не читавшего текст троля? 

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

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


показать ответы
7
Автор поста оценил этот комментарий

Ммм да, приходят ко мне на собеседование такие фрилансеры. Они устали получать копейки за свою работу, чувствуют себя никем после 3-4 лет мытарств, но при этом:

1. Банальные быдлокодеры на похапе

2. Отсутствует теоретическая база - нет понятий объектно-ориентированного программирования, функционального программирования, например. Да, лепить горбатого умеют, но что такое полиморфизм и нафуя он нужен сказать уже не могут. SQL - селекты, никакие CTE не знакомы. Про внутреннее устройство Java-машин, СУБД, паттерны программирования, алгоритмизацию я уж молчу.

3. Не умеют работать в команде. В реальной команде из 15-20 программистов, тестировщиков, аналитиков, менеджеров. Да, умение работать с заказчиком это кул, только программисту нахер не нужно. Программист должен программировать то, что расписал аналитик. А не с заказчиком общаться.



Так что, пока вы не побыли два года юниором в компании, где вам будут делать код ревью ежедневно, пиздить ногами за косяки - вы никто и годны только на вордпрессе делать сайты визитки. А это НЕ ПРОГРАММИСТЫ. Это верстальщики с навыками программирования.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

По поводу заказчика. Я нигде не акцентировал упор на фриланс. Фриланс - это лишь этап на пути к работе в компании ибо именно там ПРОЩЕ всего получить первые строки в резюме.

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


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

0
Автор поста оценил этот комментарий

Еще 1 вариант превращения в программиста:


1) Учите один из языков программирования, который вам по душе. (Я бы посоветовал что-то уровня Java или С#)

2) Учите SQL

3) Учите теорию тестирования ПО

4) Учите английский


После выполнения всех 4ех пунктов, надо найти компанию, которая специализируется на новичках. Такие компании обычно берут на зп меньше чем везде процентов на 20, но зато они дают вам первый опыт.

Устраиваетесь тестировщиком ПО(QA engineer), желательно с уклоном в автоматизацию процесса тестирования.

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

Через некоторое время можно уйти в разработчики, либо стать супер крутым автоматизатором(там тоже много кодить прийдется, плюс к этому таким командам часто нужен свой разработчик для внутреннего софта)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

У меня есть пример тру стори именно по этмоу плану. Парень совсем без опыта стал рубистом. Прошел в компании курсы и там же остался работать

показать ответы
0
Автор поста оценил этот комментарий

Расскажите, как в 30+ в сферу программирования заскочить ))

Начал пока С++ учить, да про HTML-CSS-XML почитывать, немного PHP

каковы вообще шансы перейти с инженера-проектировщика в программиста?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

двое знакомых после 30 стали программистами.

Оба прошли курсы.

Одному далось все легко и быстро, второму тяжело и долго. 

У первого были способности и предрасположенность. 

У второго невероятное упорство и сила воли, я бы на месте второго сдался с его трудностями.

Первый уже давно на позиции уверенного мидла.

Второй - только тольк преодолевает рубеж уверенного джуна.


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


Итог - все возможно, может быть не так быстро как хотелось бы, но возможно.

1
Автор поста оценил этот комментарий

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


Мой рецепт такой: сначала самообучение (желательно с наставником), только потом на стажировку/работу.


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


Как я учился (3 года стажа сейчас и универ за спиной):

1) Основы программирования (базовые алгоритмы, чтобы начать писать хоть что-то)

2) Параллельно язык C (синтаксис и задачки из п.1)

3) Архитектура ОС (Unix, Windows) - довольно широко и по Таненбауму

4) Системное программирование (задачки из п.3) Теренс Чан, Петзольд

4) С++ только после окончания С

5) Расширенная алгоритмика - Кнут

6) SQL

7) И только потом всякое счастье типа C#, Java, Python, Веб и т.п.


Программист не должен уметь что-то одно. Он должен уметь быстро обучиться новой технологии и уметь правильно ее применять. 

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Соглашусь с каждым словом. Без наставника никуда. Я ходил без наставника годы, пока не получил вакансию юниора с наставниом. Статься именно об этом.


Технологии по отдельности - ничто.

Изучить новую технология - дело пары дней/недель

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


Отсюда рецепт - курсы, с последующей вакансией с наставником. Это путь наименьшего сопротивления.


Сам я "программирую" с 11 лет, mk-54, basic на спектруме, затем ассемблер, затем 086 тачка и с++, затем 5 лет универа и 4 года с++ на заводе в виде поддержки и только потом пара потуг на фрилансе и долгожданная вакансия юниора с наставником :) Это и была моя переломная точка и точка вхождения.


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

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества