4 умных способа преуспеть как программист

По мере того, как О'Рейли продолжает создавать и оценивать нашу экосистему программного контента - на этот раз уже более 30 лет - мы перешли от охвата нескольких ключевых языков, операционных систем и концепций к разнообразию тем, которые сделали бы главу редактора. спина в 1980-х. Однако наша цель остается прежней: продолжать предоставлять практический контент от экспертов, которые помогают вам выполнять вашу работу. Важной частью этой цели является информирование вас о том, как мы интерпретируем тенденции на горизонте. Ниже приведены несколько основных тем, на которых мы сосредоточены в данный момент. Ожидайте, что они будут развиваться и меняться со скоростью инноваций.

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

На самом деле быть инженером-программистом

Термин полный стек впервые появился в сообщении в блоге 2008 года (больше не читается, поскольку ссылка мертвая) и, возможно, достиг своего канонического определения в сообщении инженера Facebook Карлоса Буэно. Он написал:

«Программист полного стека» - это универсал, тот, кто может самостоятельно создать нетривиальное приложение. Люди, которые развивают широкие навыки, также имеют тенденцию развивать хорошую ментальную модель поведения различных слоев системы ».

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

Мэтт Макай написал для нас в начале 2014 года о повышающемся спросе на разработчиков полного стека. Он отметил, что Google Trends показал термин взлет в 201 3. Но что более важно, он написал о выборе карьеры, подразумеваемой этим термином:

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

Статья Саймона Сен-Лорана Интернет по умолчанию расширяет сферу применения, указывая на полный (и постоянно расширяющийся) диапазон навыков, которые требуются от разработчиков сегодня.

Вот как Википедия определяет« инженерию »:

«Инженерное дело (от латинского ingenium, что означает« ум »и ingeniare, что означает« изобретать, изобретать ») - это применение научных, экономических, социальных и практических знаний в чтобы изобретать, проектировать, строить, поддерживать, исследовать и улучшать конструкции, машины, устройства, системы, материалы и процессы ».

А вот определение инженер (также из Википедии):

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

Знания о стеке или нескольких стеках, таких как распределенный, MEAN или ELK стек, - это просто один из аспектов того, что делает хорошего программиста. Сегодня инженер знает, какую технологию выбрать для решения проблемы и как ее правильно использовать; внимательно следит за лучшими, возможно, другими методами и решениями; и процветает, видя и живя (временами) в более широкой картине проекта, компании и сообщества. Важно понимать, что то, что вы делаете, вписывается в более крупный стек: миссию вашей компании. Инженер не должен быть полноценным, Т-образным, изолированным, обожествленным, знать все или открывать исходный код. Он или она должны быть неотъемлемой частью любого бизнеса, обладая практическими знаниями, которые способствуют развитию идей, продуктов и целей.

Понять, а затем решить проблемы

Не переставайте быть просто инженером-программистом. Если вы хотите играть более важную роль в бизнесе, подумайте о том, чтобы стать архитектором программного обеспечения. Не решайте сегодняшнюю проблему; научитесь решать проблемы. Истинное понимание того, как что-то работает, упрощает манипулирование им, оптимизирует достоверность и открывает новые горизонты. Работа над проблемами на основе понимания принципов позволит вам более умело преодолевать препятствия по очереди, что приведет вас по карьерной лестнице к тому, чтобы стать лицом, принимающим решения о том, как ваша компания будет решать каждую новую техническую задачу.

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

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

Конечно, это не заканчивается на коде. Работа в команде, управление отдельными людьми и выполнение задач в рамках бюджета и по графику требует уровня осведомленности, выходящего за рамки собственного опыта. Очень важно уметь рассматривать проблему с нескольких разных точек зрения (задумывались ли вы, какую роль играет дизайн? Ответы могут быть неуловимыми из-за наличия нескольких членов команды, соперничающих потребностей, времени, бюджета и языковых ограничений, но ответы должны быть найдены.

Интеграция культуры и кода с открытым исходным кодом

Использование открытого исходного кода как в технологиях, так и в культуре вызывает пробуждение инноваций в таких компаниях, как PayPal, IBM и Microsoft. Традиционно открытый исходный код был известен сильными, часто страстными сообществами, которые лелеют, борются за и улучшают программный проект. Сказать, что программное обеспечение с открытым исходным кодом находится на пути к предприятиям, было бы неправильно; он уже существует вместе со своими проприетарными аналогами. Однако культура открытого исходного кода сейчас только начинает расцветать. Открытый исходный код на предприятии проявляется в проектах непрерывной интеграции, внутреннего источника и проектов инкубаторов.

Давайте немного разберемся в этом. Команды по разработке корпоративного программного обеспечения больше не ждут, пока проект будет готов для отправки; улучшения вносятся постепенно и управляются внутренними и внешними организациями по мере сбора отзывов. Термин внутренний источник, популяризированный Тимом О’Рейли, описывает использование методов совместной разработки с открытым исходным кодом на предприятии и в настоящее время становится стандартной практикой. Microsoft открыла исходный код для многих своих основных проектов, таких как ASP.NET. Передовые проекты в отрасли сейчас разрабатываются небольшими командами не только в стартапах, но и на предприятиях. Они живут в инкубаторах, которые были отделены от основного направления бизнеса, не привязаны непосредственно к строгим бюджетам и согласованы с целями компании в будущем, а не обременены ожиданиями возврата инвестиций в том же финансовом году. У Google есть Google X, который породил Google Glass и работает над беспилотными автомобилями. Хотя эти два проекта не увенчались успехом и еще не вышли на рынок, соответственно, вы можете быть уверены, что мы увидим, как эта технология будет внедрена в будущие успешные проекты Google. Фактически, Google Glass 2.0 сейчас работает над чипом Intel.

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

Расширьте свое представление о мобильных

Количество мобильных устройств продолжает расти. Смартфоны и планшеты теперь доступны во всех мыслимых размерах; носимые устройства есть повсюду, от часов до сетевых мониторов уровня сахара в крови; а интегрированные устройства Интернета вещей (IoT), такие как Nest, разбросаны по всему дому. Эти устройства представляют собой видимые аппаратные интерфейсы для обширной сети Интернет-сервисов и возможностей, включая платежи, определение местоположения, аналитику в реальном времени и дополненную реальность. Инженеры должны научиться использовать эти данные для повторения и улучшения.

Называть этот сегмент мира программирования мобильным буквально правильно, но это слишком ограничивает. Работа в этой области распространяется на аппаратное обеспечение, Интернет, данные и облачные вычисления (см. Сообщение Джона Брунера о конвергенции оборудования и программного обеспечения и статью Бена Лорики о тенденциях в области данных). Здесь происходят инновации: распознавание речи действует как новая командная строка - Google Now и Siri обеспечивают не только распознавание речи, но и прогнозную аналитику на основе датчиков. Связь ближнего поля (NFC) совершает революцию в сфере платежей. Благодаря этому нововведению появилась обширная экосистема поставщиков услуг, API, библиотек и фреймворков. Скорость инноваций в этом разделе технического сообщества ошеломляет, поэтому обязательно следите за тем, что нового, потому что вы можете пропустить это, если не сделаете этого.

Это только наша отправная точка

У каждого есть повседневные задачи, которые нужно выполнять, и инновации могут быть не на каждом шагу, но они есть для тех, кто их видит. Мы предоставим вам объектив, через который вы сможете лучше определить эти возможности. Как всегда, вы по-прежнему будете получать от нас руководства экспертов, хорошо продуманные рамки решений, методы решения проблем и основные основы. Мы начинаем новые мероприятия, такие как наша Конференция по архитектуре программного обеспечения с Нилом Фордом в марте этого года. OSCON (июль 2015 г.) переосмысляется так, чтобы мы представляли возможности с открытым исходным кодом в виде целых стеков как для стартапов, так и для предприятий. Мы будем предоставлять контент через нашу еженедельную информационную рассылку по программированию; из таких книг, как Programming Scala, Эффективный современный C ++ и Стать лучшим программистом; а также обучающие видео, такие как Введение в программирование на Go, Сотрудничество с Git и Введение в Java 8. Пути обучения будут построены на различных темах с помощью Safari, наряду с продолжающимся выпуском видео и печатной продукции на oreilly.com, которые позволят вам вводить новшества. Создавайте свои собственные новаторские решения, создавайте новые проблемы, которые нужно решить, и думайте за пределами того уголка мира, в котором вы оказались.

Я хотел бы услышать ваши мысли, отзывы и рекомендации. Как вы думаете, что важно? Как мы можем помочь? Свяжитесь со мной через Twitter, Google+ или в комментариях.

Первоначально опубликовано на сайте radar.oreilly.com 11 февраля 2015 г.