Больше историй

25 сентября 2016 г. 23:52

404

Выдержки

Больше интересуйся новыми технологиями, языками. Анализируй. Старайся разглядеть не просто тренд, а молодую технологию, у которой большое будущее.
Выбирая направление развития, учитывай перспективы роста предложений в этой сфере и, как следствие, снижение зарплат.
Исследуй рынок труда . Какие технические навыки наиболее или наименее востребованы?
Недостаточно выбрать технологию, на которую стоит сделать ставку. В конце концов, разве знание технологии — не товар, который нужно продать? Ты не сможешь расслабленно совершенствовать навыки программирования, оставив связанные с бизнесом аспекты специалистам. Очень легко найти человека, способного писать код. Но если ты хочешь стать незаменимым, придется детально разобраться в особенностях бизнеса, с которым связана твоя деятельность.
"Если хочешь добиться успеха, играя. в какой-нибудь группе - будь в ней худшим". Общайся с людьми, которые разбираются в твоей сфере лучше тебя, и учись у них.
Учись знакомиться и общаться с людьми. Ищи программистские тусовки, вливайся, учись у других.
Изучи новый язык программирования. Не имеет смысла переходить с Java на C# или с C на C++. Новый язык должен изменить тип твоего мышления.
Определи свои самые серьезные страхи, связанные с карьерой. Вспомни последние принятые в этом направлении решения. Когда список будет готов, честно оцени каждый из пунктов: насколько твоим решением в данной ситуации управлял страх? Что бы ты сделал, если бы страха не было?
Многие из нас считают, что термин «специализация» означает неумение разбираться в других вещах. Согласно такой трактовке я могу заявить, что моя мать специализируется в Windows, ведь она никогда не работала ни с Linux, ни с OS X. А мои родственники из арканзасской глубинки окажутся специалистами по кантри, потому что они никогда не слушали другой музыки.
Ты работаешь с языками программирования, которые компилируются и запускаются на виртуальной машине? Если да, найди время и разберись, как работает эта виртуальная машина . Существует множество книг и сайтов, посвященных виртуальным машинам для Java, .NET и Smalltalk. Изучить этот материал проще, чем ты думаешь.
Даже если язык программирования, которым ты пользуешься, не зависит от виртуальной машины, узнай, что происходит при компиляции исходного файла . Как вводимый тобой код превращается из понятного тебе текста в инструкции, которые может исполнить компьютер . Как бы выглядело написание твоего собственного компилятора?
Откуда берутся внешние библиотеки, которыми ты пользуешься? Как на самом деле реализуется работа с внешней библиотекой? Каким образом компилятор, операционная система или виртуальная машина соединяет друг с другом многочисленные фрагменты кода, формируя однородную систему?
Преподавательская деятельность является одним из лучших способов изучения чего бы то ни было.
Я никогда не характеризовал себя, описывая навыки. Мне кажется, куда лучше меня характеризует то, что я уже сделал и собираюсь сделать . А навыки — всего лишь способ достижения цели.
Для получения отличного про­дукта, способного продаваться на рынке труда, — продукта, который выделяется из общей массы и успешно конкурирует с другими, — тебе придется как следует потрудиться. В бизнесе идей и даже талантов пруд пруди. Поэтому, чтобы твой продукт действительно начал чего-­то стоить, его придется полить кровью, потом, слезами и деньгами.
Ты бы согласился нанять на работу человека, зависящего от целой группы специалистов? Лично я отвечаю на этот вопрос отрицательно. И предпочитаю сотрудников, способных к самостоятельным действиям.
Пподумай о тех аспектах своей деятельности, которые ты не до конца понимаешь . Для погружения в непонятную сферу можно задать себе два крайне полезных вопроса: Как это работает, почему это происходит и как это происходит? Ежедневно выделяй немного времени, чтобы изучить очередной аспект выбранного инструмента, позволяющий повысить продуктивность твоей
деятельности или лучше контролировать среду разработки.
Разберись в бизнесе, в который ты стремишься войти. Изучи основы финансирования бизнеса. Найди книгу по основам бизнеса и прочитай ее внимательно. Ищи среди книг для специалистов по управлению предприятиями.
Попроси кого-нибудь рассказать о финансовых показателях твоей компании или отдела (конечно, если это открытая информация). Попробуй повторить эти объяснения.
Разберись, почему чистая прибыль называется чистой.
Найди наставника или сам стань наставником - себе и другим. Разумеется, я не имею в виду изучение нового материала путем его преподавания — откуда человек сможет узнать этот материал? Но знание фактов не означает понимания их причин и следствий. Именно такое, более глубокое понимание мы развиваем в себе, уча других.
В отрасли, связанной с компьютерами, часто встречаются разработчики, действующие на пределе своих умений. К сожалению, как правило, это означает, что их квалификация недостаточна для решения поставленных задач. Но при этом существует тенденция практиковаться непосредственно на рабочем месте. Представь себе музыканта, который, выйдя на сцену, воспроизводит ту же какофонию, что и в классе. Кто будет терпеть подобное? Музыканты получают деньги за выступления перед публикой, а не за отработку навыков.
Что для разработчика программного обеспечения означает умение читать с листа код? Или технические требования? Или проектное решение? Искать код для подобных упражнений лучше всего обществах разработчиков ПО с открытым исходным кодом.
Прочитай список задач для программы, с которой ты хотел бы поработать, и определи конкретную дату реализации новой функциональной возможности (или хотя бы прикинь, сколько времени может занять эта реализация). После этого загрузи код программы и приступай к его анализу. Как понять, куда следует смотреть? Какими приемами ты пользуешься для поиска конкретного места в большом фрагменте кода? В какой точке ты начнешь работу? Такое упражнение можно делать на время. При этом ты вовсе не обязан реально реализовывать выбранную функциональную возможность. Используй это как отправную точку. На самом деле ты учишься с максимальной скоростью распознавать, что делает код, на который ты смотришь. Для каждого следующего упражнения выбирай новую программу. Попробуй выполнить его с разными типами программы, написанными в разных стилях и на разных языках. Отмечай моменты, которые облегчают или затрудняют понимание происходящего. Какие стандартные действия помогают тебе в работе с кодом? Какие виртуальные «хлебные крошки» ты оставляешь себе, чтобы упростить ориентирование при перемещении вверх и вниз по стеку вызовов сложной функции?
TopCoder .com — это сайт корпорации, проводящей соревнования по спортивному программированию . Ты можешь зарегистрироваться там и участвовать в соревнованиях с призами . Для тех, кто не любит соревноваться с другими, на сайте есть раздел с набором задач, которые послужат прекрасной основой для отработки практических навыков . Регистрируйся
и начинай заниматься.
Code Kata . Один из самых прагматичных программистов, наш любимый издатель Дэйв Томас (Dave Thomas), превратил идею наработки программистских навыков в… кое-что прагматичное . Его кодовая ката (code kata) — набор небольших, но провокационных упражнений. Программисты могут выполнять их на любом языке . Каждая ката делает упор на определенную технику или мыслительный процесс, нагружая один из твоих ментальных мускулов. Твоя задача — выполнить всё . Записывай результаты в дневник или веди блог. Закончив дело, напиши собственную кату и поделись ею с широкой публикой.
Найди проект и прочитай его как книгу . Конспектируй по ходу чтения. Выдели сильные и слабые стороны . Напиши критический обзор и опубликуй его. Найди в этом проекте хотя бы один прием или шаблон, которым ты сможешь в дальнейшем пользоваться. Найди хотя бы один пример того, как делать не надо.
Выбери повторяющуюся задачу, с которой тебе часто приходится сталкиваться, и напиши для нее генератор кода . Начни с простого. О возможности многократного использования пока можно не беспокоиться. Просто сделай так, чтобы генератор экономил твое время. Подумай, как поднять уровень абстракции генерируемого кода.
Исследуй архитектуру, управляемую моделями (Model-Driven Architecture, MDA). Попробуй поработать с доступными инструментами. Посмотри, где в твоей работе можно применить если не весь инструментарий, то хотя бы некоторые концепции MDA. Подумай о применении этих концепций к ежедневно используемым тобой инструментам.
Первый рецензент этой книги Карл Брофи предлагает тебе записывать свои соображения по поводу возможных просьб руководства и заказчиков для твоего следующего проекта или поддерживаемой системы . Будь изобретательным. Попытайся посмотреть на систему с их точки зрения. Составляя список неочевидных функциональных возможностей, которые могут по-
требоваться, подумай о способах их максимально эффективной реализации. Вспомни о граничных ситуациях, о которых пользователи могут сразу не вспомнить.
Оптимизируй рабочее время и процессы. Выбери для себя полчаса, сядь с карандашом и бумагой в тихом месте, где никто тебе не помешает. Вспомни о небольших проблемах, с которыми твоя группа сталкивается каждый день . Перечисли их на бумаге. Что это за досадные мелочи, заставляющие группу каждый день впустую тратить несколько минут, с которыми никто не может или не хочет ничего сделать? Какие выполняемые вручную задания текущего проекта можно было бы автоматизировать? Перечисли их. Как насчет сборки или развертывания? Есть ли там аспекты, которые нужно привести в порядок? Как уменьшить
количество сбоев при сборке? Запиши все идеи, пришедшие тебе в голову.
Посчитай, сколько ты стоишь фирме, в которой работаешь. Как ты считаешь, рентабельны ли вложения работодателя в тебя? Каково твое положительное влияние на чистую прибыль компании? Превосходит ли это число, скажем, размер твоего месячного оклада? Насколько ты способствуешь росту прибыли предприятия? Уточни у своего начальника, как лучше всего выразить эту величину в цифрах. Сам факт, что ты хочешь это сделать, будет воспринят как хороший знак. Как творчески подойти к экономии денег фирмы? Как повысить эффективность работы твоих коллег? И сразу начинай действовать в соответствии с полученными ответами. Всегда помни про ориентир:
в два раза больше своей зарплаты. Не позволяй себе уходить от ответственности, пока не превысишь это число. Большинство компаний устанавливают планку уровня доходности, ниже
которой инвестиции просто не делаются . Инвестиции должны дать определенный процент за определенное время, в противном случае фирма не вкладывает свои деньги . Это число называется минимально допустимой рентабельностью инвестиций. Узнай минимально допустимую рентабельность инвестиций фирмы, в которой ты работаешь, и сопоставь ее со своей зарплатой. Являешься ли ты удачной инвестицией?
Планируй свое время, и сообщай руководству о планах, а также отчитывайся о проделанном. Информировать нужно даже о негативных результатах. Задача из списка должна иметь какой-то результат - она может быть выполнена, перенесена, замещена, но она не должна оставаться неучтенной. Написание и выполнение планов монстрирует, что ты не робот для написания кода, а лидер.