В целом книга очень похожа на книгу «Идеальный программист» Р. Мартина. Прослеживаются общие мысли: нужно быть заметным, заявлять о себе, не замыкаться. Ну все такое. Книга построена в виде набора советов, сгруппированных по общим тематикам.
Твои навыки — это твой продукт. Нужно вкладывать в него: учиться новым технологиям и другим скифам, которые позволят решать проблемы работодателя.
Совет 1. Будь впереди или погибнешь?
Есть множество путей вложения. Банк дает стабильный, но низкий доход. Инвестиция в стартап дает возможность вернуть кратный доход, но это рискованно. Нужно постоянно оценивать риски, а для этого «смотреть по сторонам». Технологии — это тоже инвестиции твоего времени в их изучение. Нужно внимательно смотреть на развивающиеся технологии, ведь пока на них есть высокий спрос и низкое предложение, то твоя зарплата может быть очень высокой. Нужно уметь быстро переключаться с умирающей технологии на новые, иначе останешься никому не нужный.
На наиболее востребованные сферы IT со временем быстро появляется масса дешевой рабочей силы, ведь технология популярна. Средняя оплата труда снижается, но затем повышается, т.к. появляется больше проектов на новой технологии, соответственно, нужны люди со знанием этой технологии. Таким образом рынок стабилизируется. Конкурировать в таких условиях тяжело, ведь все, что остается тебе — снижать свою цену или искать знакомства. Альтернатива: нестабильные технологии, интерес к которым может возрасти в любой момент. Соответственно и спрос, а там и оплата.
Технический специалист должен понимать бизнес, проект в котором он пишет. Одного умения программировать мало. Обычно бизнесмены хотят работать с теми, кто понимает их и способен объяснить некоторые аспекты IT. Поэтому тебе важно не только осваивать тех.матчасть, но и деловой язык. Нужно суметь рассказать о проекте и программных подходах людям из бизнеса, равно как нужно уметь понимать людей из бизнеса, чтобы делать то, что им нужно.
В какой бы ты группе ни был, всегда будь худшим. Окружай себя специалистами умнее себя. Тогда сам станешь подтягивать себя до их уровня. Окружающие сильно влияют на тебя, поэтому нужно выбирать свой коллектив тщательно.
Мало знать профессионально только один язык/технологию. Важно изучить кардинально другой язык, чтобы понять недостатки и преимущества первого. К тому же, мало кому нужен специалист только лишь с одним направлением развития навыков. Который не сможет понять и реализовать решения, которые требуют навыков смежных технологий. Изучай другие языки, старайся написать простейшие приложения на каждом.
Родители хотят, чтобы с ребенком было все в порядке. Однако блистательные карьеры и связанные с этим риски никак не вписываются в эту стратегию. В большинстве своем их советы звучат как «обойтись без потерь», но без риска не будет и успеха. Победители рискуют, а не пытаются «прикрыть тылы». Также программисты часто меняют проекты и рабочие места, и это нормально в IT, однако может быть дикостью для старшего поколения. Построение карьеры в одной компании замедляет твое развитие как разработчика. «Разве твоя судьба до конца дней работать в компания_нейм? Нет, черт возьми!». Нужно стремиться быть «разработчиком технология_нейм», а не «разработчик в компания_нейм». В вопросах карьеры нужно идти на обдуманный риск, не позволяй страху завладеть тобой. Если не получаешь удовльствия на своей работе, то не достигнешь в ней совершенства.
Многие компании строят процесс разработки как конвейер: аналитики анализируют, проектировщики проектируют, кодеры программируют. Каждый участник процесса является специалистом, но он вредил получает действительно обширный опыт разработки. Он ведь только выполняет свою часть работы, а полный цикл программы он может не понимать. Но бизнесу нужны люди, которые смогут решить проблемы. Особенно такие, которые никто не предвидел. А это нельзя сделать, не понимая всего процесса разработки. Если сервер упал, то бизнес будет рад колеру, который сумеет его поднять, не дожидаясь серверных специалистов. Нужны быть как можно более полезным в больших областях, и тогда ты не станешь первым в списке на увольнение. Универсалы встречаются редко, и поэтому их ценят. Навыки не должны ограничиваться одной платформой или стеком.
Нужно понимать, как работает язык, на котором ты пишешь. Мало использовать его высокоуровневые инструкции — нужно знать, как работает компилятор, его особенности. Если не знаешь, то не сможешь учитывать их преимущество и недостатки в своем коде. Иначе ты не можешь называть себя специалистом.