Это продолжение первой частистатьи о том, как попасть в ИТ без профильного образования. И здесь я сформулирую основные моменты, которые не являются техническими, но, на мой взгляд, очень важны:
1. Стартовать намного проще с .NET* или Java
Это две самые распространенные на рынке платформы как для разработки, так и для автоматизированного тестирования. Соответственно, стартовать с них будет намного легче. Под них проще всего будет найти работу и потом проще ее поменять.
Python — тоже приемлемый вариант, хотя, пожалуй, не такой надежный. И стоит с определенной осторожностью относиться к таким штукам, как Ruby или NodeJs. С ними все будет НАМНОГО сложнее. Прецеденты есть.
*Уже после того, как я написал этот раздел, появились хорошие новости: .NET становится опен-сорсным, а это значит, что становится еще больше причин выбрать именно его.
2. Сразу определиться с направлением Auto QA или Developer
В дальнейшем переход с Auto QA в разработку приведет к потере либо времени, либо денег. Если все же вы решаете сменить направление, то чем раньше вы это сделаете, тем меньше потеряете.
3. Хорошо подготовиться до начала работы
Если есть возможность, то лучше сначала хорошо прокачаться, а уже после этого искать работу. Потому что одновременно работать и серьезно учиться — ужасно тяжело.
4. Чтобы зарплата росла быстрее, необходимо прыгать
На одном месте тепло и стабильно, но зарплата растет гораздо медленнее. Вполне реальны ситуации, когда через три года з.п. у тех, кто прыгал, и тех, кто работал на одном месте, отличаются в два раза. Разумеется, собеседования, смена компании и адаптация на новом проекте — это стресс, однако после года работы в одной компании всё же есть смысл оглянуться по сторонам. Возможно, в другом месте вам уже предложат в 1.5 — 2 раза больше. По сути, после двух прыжков вы можете выйти и на зп в 2000 $+, что неплохо.
При этом не стоит переходить некую разумную грань, впадать в нищебродство и менять работу каждые несколько месяцев из-за 250$. Win-win все-таки никто не отменял. И если вы приходите на проект, месяц в нем разбираетесь, потом два месяца работаете и сваливаете, то как работник, вероятно, не принесете компании пользы, а наоборот, создадите дополнительные проблемы.
Я не верю в возможность «убийства» резюме, потому что компаний на рынке много. Но использовать людей — это плохо, а плохая карма — злая сцука ;)
5. Учиться лучше по туториалам, а не по книгам
Существует распространенное мнение: чтобы выучить какую-нибудь технологию, нужно взять по ней самую толстую книгу из серии «для профессионалов» и полностью ее осилить.
Наверное, это правильно для фундаментальных вещей, но в прикладном плане такой подход нельзя назвать оптимальным. Во-первых, технологий и направлений стало слишком много, и если читать по каждой книги, то никакого времени не хватит. А во-вторых, появилось огромное количество отличных туториалов и коротких on-line курсов, которые гораздо приятнее и дают больше практических навыков.
От базовых книг по C# и .NET все равно никуда не деться, в остальном же лучше ориентироваться на туториалы. Большие толстые книги имеет смысл читать только чтобы углубить свои знания в технологии, которой вы уже владеете, но не для того, что изучать ее с нуля.
6. Для работы в Украине в ИТ профильное образование НЕ НУЖНО вообще
Это я уже проверил на собственном опыте. Вопрос образования меня достаточно сильно беспокоил. Но на сегодняшний день можно сказать с уверенностью: если ваша цель — работа в украинском аутсорсинге, то как таковой необходимости в техническом высшем образовании НЕТ. Все необходимые навыки вполне можно получить в процессе самообучения. И даже по чисто теоретическим вещам есть отличные курсы на Courseraили Edx.
Сейчас я все-таки поступил на второе высшее, но это исключительно страховка на случай, если надумаю заводить трактор. Само по себе отсутствие образования — это не та проблема, из-за которой стоит переживать.
7. Цели определяют набор знаний и навыков
Тема образования неразрывно идет вместе с вопросами «что должен знать хороший программист?» и «должен ли хороший программист знать математику\алгоритмы\С++?»
На мой взгляд, такая постановка вопроса является в корне неверной, потому что набор знаний и навыков должен определяться поставленными целями. А не наоборот, когда с огромным трудом в голову пытаются впихнуть кучу оторванных от реального применения знаний, потому что это труъ. И потом использовать только 10% от того, что изучали. Если пойдете по второму пути, это гарантированно приведет к сильному стрессу и прокрастинации, только затормозив развитие. Проверено на себе ☺
Поэтому с математикой все просто — ее нужно учить только если вы четко видите, зачем она вам нужна и куда вы ее будете применять. В противном случае забейте и потратьте время на что-то более полезное. Это же правило действует в отношении С++ и алгоритмов. Собственно, по этой же причине я на середине книги бросил «Accelerated С++» — просто тупо не видел, куда можно применять это знания и какую пользу они могут принести другим людям.
В общем, правильная постановка цели с четким критерием выполнения чрезвычайно важна — именно она будет структурировать всю систему самообучения и набора опыта. Без цели все может затянуться на годы. Но если ваша цель звучит приблизительно как «стать .NET\Java\Javascript разработчиком с зп 2500$+», то ни математика, ни С++, ни знания алгоритмов вам не нужны.
Заключение
Пожалуй, это основные идеи, которыми я хотел поделиться. Если у вас появились какие-то вопросы, то я с удовольствием на них отвечу. Ну, и как небольшое заключение — хочу поблагодарить всех, кто отписался в моей первой теме на ДОУ. Кто из Харькова — пишите в личку, пойдем пить пиво ;)
Успехов!