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.