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. Система ценностей хорошего программиста.
Вы смотрите срез комментариев. Показать все
2
Автор поста оценил этот комментарий
Ну зачем начинать с веба? Портить руки сразу, с нуля? Вредные советы однозначно.
раскрыть ветку (9)
0
Автор поста оценил этот комментарий

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

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

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

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


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


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


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

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

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

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

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

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

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

6) SQL

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


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

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

Могу ошибаться, но ваш коммент отдает сильным академизмом. Таненбаум - это круто в качестве академических знаний. Я Unix-архитектуру изучал параллельно с изученим С++, как и С в рамках оного. 

Все ведь от задач зависит. Если нет необходимости писать низкоуровневое ПО, то по факту, теория уровня Таненбаума мало, чем может пригодиться.

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

Я не учился в спец ВУЗе, ни на какие курсы не ходил, ни наставников не было у меня... Появлялись задачи - появлялась нужда в изучении новых технологий и сферы их применений. Такой подход, имхо, тоже имеет место быть. 

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

Никто не спорит, подходы могут быть разными.

Я описал ситуацию, когда много свободного времени (в моём случае 4 года универа). Из этих 4х лет я 2 года работал и получал реальный опыт.

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

Различия между ++i и i++ - это всё-таки особенности синтаксиса Си-подобных языков (хотя в С99-, если не ошибаюсь нет таких операторов, про поздние стандарты не могу говорить). К алгоритмам это отношения не имеет.


Да, может быть не стоит сразу бросаться и запоем читать Кнута. Но стоит понимать элементарные веши типа "сложность алгоритма сортировки пузырьком О(n^2) и на больших данных будет боль".


По поводу изучения С одновременно с С++ много споров ведётся. Но я всё-таки за последовательность =) Но не будем на эту тему разводить холивары.


Теория уровня Таненбаума полезна как занимательное чтиво, для общего развития. Всё-таки - это база. Никогда не знаешь, когда эти знания спасут твои нервы. Многие прекрасно справляются с управлением автомобилем, ни разу не открывая капот. Но те, кто знают, как всё устроено, лучше понимают, на что машина способна, что безболезненно, а чего лучше не делать. 

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

Я учился на электротехническом - ни о какой базе разработки речи не идет, понятно :)

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

Как я начал С/С++ курить? Иногда на работе не спрашивают: знаешь ли ты что-то или нет - тупо дают задачу и говорят, что "надо". Да, некая несистемность изучения по началу мозг разрывает, и просто теряешься, но, если мозгов достаточно для структуризации и постоянно хранения в голове больших объемов информации, то такой подход обеспечивает максимально быстрое вхождение в технологию, а именно: изучение на готовых реальных примерах.

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

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


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

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

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


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


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


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

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

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

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

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

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

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

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

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

У вас 6к, у меня 600к, но суть та же, и это печально...

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества