У меня очень мало опыта (суммарно программистом я проработал 16
месяцев), тем не менее, я хотел бы дать несколько советов
себе-в-прошлом, ну, или иными словами всем тем, кто сейчас учится в
университете и планирует стать разработчиком ПО. Ни в коей мере не
претендую на мудрость или опытность. Немного подумав, я понял, что все
эти советы как никогда актуальны для меня и сегодня тоже. Первую заметку
я опубликовал в своем блоге в прошлом году, а сейчас публикую здесь
список, расширенный советами читателей блога.
Все советы автономны и их порядок не имеет значения.
Какой язык должен знать любой разработчик? Не, не Си и не Джаву. Английский. Учите английский, и не только технический, но и разговорный.
Программируйте. Программируйте. Программируйте. Менеджеры той
компании, где я работаю, придерживаются мнения, что резюме программиста
это github. Конечно, это лишь выражение, смысл в том, что от
программиста в первую очередь ожидают код, а потом – оценки,
рекомендации и сертификаты. Программируйте. Опыт важнее оценок и точка.
Если работодатель настаивает на обратном, то подумайте дважды, перед
тем, как устраиваться к нему на работу.
Познакомьтесь с UNIX. Установка Убунту и компиляция ядра – это не
знакомство с UNIX. Почитайте о том инженерном и научном фундаменте
который лежит в основе философии UNIX. Не обязательно становится крутым
сисадмином и поднимать десяток серверов, лучше просто привыкните к
принципам работы и UNIX way.
Математика – это главное. Не смотря на сугубую потребительскую направленность многих софтверных компаний, фундаментальные науки остаются основой всего.
Задавайте вопросы. Естественно, если не нашли ответ в гугле. Соответственно, не задавайте вопросы, на которые может ответить гугл. Сайт
StackOverflow – ваш лучший друг. Задавайте вопросы в интернете, среди друзей, учителей, коллег. Глупый вопрос лучше незнания.
Познакомьтесь с системами контроля версий. Хотя бы с основными –
SVN, Git, Mercurial. Откройте репозиторий на своей машине и используйте
его для домашних заданий и собственных проектов.
Познакомьтесь с современными инструментами разработки. Зачастую в
университетах не уделяют внимания средам разработки и другим программам
и утилитам, необходимым для полноценной работы. Многие IDE бесплатны,
попробуйте Eclipse, NetBeans, Emacs, XCode, привыкните к принципам
работы, найдите удобный для вас инструмент.
Научитесь пользоваться отладчиком. Это настолько критично, что совершенно непонятно, почему университеты уделяют этому так мало внимания.
Познакомьтесь с методологиями разработки. Сложно им придумать
применение в университетской жизни, но все же возможно. Как минимум, вы
можете попробовать использовать какую-нибудь методологию в своем с
другом проекте.
Познакомьтесь с шаблонами (паттернами) проектирования. Про это
уже сто раз говорили, но я повторюсь. Здесь вы не отвертитесь и
применить хотя бы пару основных паттернов где-нибудь просто обязаны.
Достаньте свой телефон и взгляните на первую попавшуюся программу:
представьте, как можно к ее разработке применить какой-нибудь паттерн.
Программируйте в команде. Даже вдвоем вы получите неплохой опыт,
особенно если примените вышестоящие советы: используйте систему контроля
версий, примените какую-нибудь методологию, используйте какой-нибудь
паттерн. Возможно, на этот момент вам будет казаться, что все это не
имеет большого смысла и куда проще и быстрее было бы писать код не
замарачиваясь, и, скорее всего, вы окажитесь правы, но не забывайте –
вся учеба это скорее упражнение, чем работа. Практикуйте парное
программирование.
Работайте над собственными проектами. Обратно к первому пункту –
программируйте, но не ограничивайтесь домашними заданиями или
упражнениями из книг. Начните свой проект.
Изучите новый для себя язык программирования. Иногда слышу нечто
вроде «нас учат чему-то, но я не знаю, где это будет применяться в
жизни». Такие люди зачастую настолько уверены в бесполезности некоторых
этих знаний, что после окончания университета работают по какой-то
другой специальности потому что их не научили программировать на
популярном сегодня языке программирования. Забудьте фразу «мне это не
понадобится в будущем». Когда в детском саду учат читать, то никто не
готовит профессиональных чтецов. Детей просто учат пользоваться
инструментом для получения информации.
Свыкнетесь с мыслью, что
кодинг – далеко не единственное, что придётся делать. Скорее всего, разработчику нужно будет работать с клиентами, искать решения проблем, бороться с инструментами и технологиями.
Принимайте решения и убеждайте людей. Если вы не согласны с
проектным менеджером или клиентом, то попробуйте убедить их вместо того,
чтобы исполнять ненавистную вам задачу с тихими матами под нос.
Настаивайте на приятной для вас обстановке. Хорошему работодателю
главное – продуктивность разработчика, а если не нравится рабочее
место, то сложно быть продуктивным. Это понятие включает в себя не
только стол и стул, но и график работы, здание, офис, атмосферу,
инструменты разработки и так далее.
Не забывайте о принципе Парето. 20 процентов усилий дают 80 процентов результата. Это, естественно, не правило, но вполне очевидная тенденция.
Прочтите классику: Code Complete,
The Pragmatic Programmer,
The Practice of Programming,
Design Patterns.
Учитесь планировать. Те же университетские задания – оцените,
сколько у вас уйдет времени, а по окончании проанализируйте работу.
Делайте это постоянно и для разных типов работы. Разработчик, который
выполняет работу вовремя намного ценнее разработчика, который иногда
выполняет работу быстрее других. И не волнуйтесь, если так и не
научитесь чётко оценивать объем будущей работы – этого никто не умеет
делать :-)
Расставляйте приоритеты. Еще один совет в от Капитана Очевидность. Вкупе с предыдущим советом можно в разы повысить эффективность.
Не зацикливайтесь на обеспеченности работой. Не работайте против
своей воли только потому что сейчас и здесь платят деньги. Лучший способ
обезопасить свою карьеру – постоянно развиваться и работать с
удовольствием.
И самое главное:
если вам не нравится программирование, то не становитесь программистом. Очень просто :-) Ничем хорошим работа без удовольствия закончиться не может.
Надеюсь, еще через пять лет я дополню этот список новыми советами, а пока можете посоветовать что-нибудь сами.