4 вещи, которые я понял слишком поздно. Откровения разработчика

2013-09-03

Моя карьера в разработке ПО началась примерно 15 лет назад. Но только в последние 5 лет я почувствовал, что вырос.

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

 

В разработке не существует понятия «правильно»

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

Оказалось, что почти всё, что я считал верным, в какой-то период времени оказывалось неправильным.

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

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

 

Прочтение книг «от корки до корки» — не лучший выбор

Когда я приступил к изучению программирования и различных технологий, я слишком много времени потратил на чтение технической литературы.

Чтение книг  это прекрасно, но важно принять для себя два решения: какую книгу прочесть, и какую часть выбранной книги прочесть.

Например, я осилил внушительный талмуд по программированию на Visual C++. Книга содержала много информации, но, как оказалось впоследствии, мне не нужен был весь этот объем.

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

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

Доскональное изучение конкретной технологии  потеря времени

Я терял время не только за дотошным прочтением книг, но и выбирал не те книги.

Я ошибочно полагал, что изучение конкретной технологии станет хорошим подспорьем в карьере.

Я прочёл слишком много книг об отдельных технологиях вроде ASP.NET или Hibernate, вместо того чтобы читать «Совершенный код» Стива Макконнелла, а также «Чистый код» или «Принципы, паттерны и методики гибкой разработки на языке C#» Роберта Мартина.

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

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

Я обнаружил, что важно стать экспертом в языке программирования, который вы используете в определённый период времени, потому что язык прослужит вам долгое время; мне бы стоило посвятить время изучению C++, C# и Java, и сэкономить время на погружении в тонкости и нюансы C++.

 

Сообщество  важная составляющая в карьере разработчика

Когда я был молодым и зелёным, я не обращался за помощью в сообщества и никому не помогал сам.

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

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

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

Я и не думал, что мой вклад в сообщество может быть ценным.

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

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

 

Всегда имейте проект «на стороне»

Возможно, самое главное изменение, которое я бы воплотил в начале своей карьеры  я бы пожертвовал временем, потраченным на World of Warcraft, ради стороннего проекта.

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

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

К сожалению, мой первый вспомогательный проект начался три года назад, когда я стал разрабатывать своё первое Android-приложение.

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

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

Перевод: Люся Ширшова. По материалам SimpleProgrammer.


Читайте также: 

Как работать ещё лучше?

Работа в лучших компаниях мира. Blizzard Entertainment

11 этапов карьеры Web-разработчика