Текст

У меня очень мало опыта (суммарно программистом я проработал 13 месяцев), тем не менее, я хотел бы дать несколько советов себе-в-прошлом, ну, или иными словами всем тем, кто сейчас учится в университете и планирует стать разработчиком ПО. Ни в коей мере не претендую на мудрость или опытность. Немного подумав, я понял, что все эти советы как никогда актуальны для меня и сегодня тоже.

Все советы автономны и их порядок не имеет значения.

octocat

Программируйте. Программируйте. Программируйте. Менеджеры той компании, где я работаю, придерживаются мнения, что резюме программиста это github. Конечно, это лишь выражение, смысл в том, что от программиста в первую очередь ожидают код, а потом – оценки, рекомендации и сертификаты. Программируйте. Опыт важнее оценок и точка. Если работодатель настаивает на обратном, то подумайте дважды, перед тем, как устраиваться к нему на работу.

Познакомьтесь с UNIX. Установка Убунту и компиляция ядра – это не знакомство с UNIX. Почитайте о том инженерном и научном фундаменте который лежит в основе философии UNIX. Не обязательно становится крутым сисадмином и поднимать десяток серверов, лучше просто привыкните к принципам работы и UNIX way.

Математика – это главное. Не смотря на сугубую потребительскую направленность многих софтверных компаний, фундаментальные науки остаются фундаментом всего.

Задавайте вопросы. Естественно, если не нашели ответ в гугле. Соответственно, не задавайте вопросы, на которые может ответить гугл. Сайт StackOverflow – ваш лучший друг. Задавайте вопросы в интернете, среди друзей, учителей, коллег. Глупый вопрос лучше незнания.

Познакомьтесь с системами контроля версий.  Хотя бы с основными – SVN, Git, Mercurial. Откройте репозитарий на своей машине и используйте его для домашних заданий и собственных проектов.

Инструменты
Знай свой инструмент

Познакомьтесь с современными инструментами разработки. Зачастую в университетах не уделяют внимания средам разработки и другим программам и утилитам, необходимым для полноценной работы. Многие IDE бесплатны, попробуйте Eclipse, NetBeans, Emacs, XCode, привыкните к принципам работы, найдите удобный для вас инструмент.

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

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

Познакомьтесь с шаблонами (паттернами) проектирования. Про это уже сто раз говорили, но я повторюсь. Здесь вы не отвертитесь и применить хотя бы пару основных паттернов где-нибудь просто обязаны. Достаньте свой телефон и взгляните на первую попавшуюся программу: представьте, как можно к нему применить какой-нибудь паттерн.

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

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

Изучите новый для себя язык программирования. Иногда слышу нечто вроде «нас учат чему-то, я не знаю, где это будет применяться в жизни». Такие люди зачастую настолько уверены в бесполезности некоторых этих знаний, что после окончания университета работают по какой-то другой специальности потому, что их не научили программировать на популярном сегодня языке программирования. Забудьте фразу «мне это не понадобиться в будущем». Когда в детском саду учат читать, то никто не готовит профессиональных чтецов. Детей просто учат пользоваться инструментом для получения информации.

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

Пиво
У нас на работе всегда есть пиво :-)

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

Не забывайте о принципе Парето. 20 процентов усилий дают 80 процентов результата. Это, естественно, не правило, но вполне очевидная тенденция.

И самое главное: если вам не нравится программирование, то не становитесь программистом. Очень просто :-) Ничем хорошим работа без удовольствия закончиться не может.

Надеюсь, еще через пять лет я дополню этот список новыми советами, а пока можете посоветовать что-нибудь сами.

Missing cat

Лучший друг ваших глаз

Такая беда: постоянно забываю делать упражнения для глаз, сидя за компьютером. Поэтому я решил сделать простой сайт-напоминалку. Откройте его и продолжайте свои дела. В начале каждого часа прозвучит сигнал, замигает иконка и можно начинать простой 3-минутный комплекс упражнений с инструкциями и таймером. После окончания ничего делать не нужно – просто продолжайте заниматься своими делами.

Есть как русская, так и английская версия.

UPD: добавил разные звуки и регулятор громкости.

Что означает «xoxo» в конце этого письма?

Письмо с xoxo

Этот символ появился задолго (как минимум в 1765 году) до современных смайликов и означает он «обнимаю и целую» (hugs and kisses). Потому что x выглядит как два целующихся человека (вид сверху), а o – как обнимающиеся люди (вид тоже сверху). Универсально понятный и используемый символ в англоговорящих странах.

Интересно, что такая неочевидная аналогия пришла кому-то в голову в 18м веке, а вполне простая :-) только в двадцатом, но, конечно, мы судим лишь по тем осколкам истории, что дожили до наших времен.

P.S. история с этими штуками неясна, и такое графическое толкование – одно из возможных или, скорее, часть комбинации. В целом, корни наверняка растут от простых крестиков и загогулин безграмотного населения Европы тех лет.

Слово mobile означает «мобильный», и если оно указывает на свойство (мобильность), то произносится согласно правилам – «мобайл».

– I spent my savings on this stupid Margaritaville and now have to run from debt and be mobile.

Automobile (автомобиль) уже не просто описывает автоматический инструмент мобильности, а сам является словом, в связи с чем произношение немного нарушено: «оутомобиил».

– I have to be mobile, but I'm so poor, I don't have an automobile.

Мобильные телефоны появились относительно недавно (если сравнивать с автомобилями), к тому же, до них существовали телефоны... телефоны. Не мобильные. Поэтому пока мы еще называем наши мобильники словом + свойством – «mobile phone», но скоро кабельные телефоны окончательно вымрут и «phone» будет подразумевать только мобильный телефон (допуская, что современные сотовые телефоны (cell phones) не станут венцом мобильной связи и все телефоны будут спутниковыми).

Так или иначе, в Северной Америке «mobile phone» чаще всего произносят «мобл» или «мобил», как если бы слово писалось «moble» или «mo-bill»:

– I have this mobile phone, it'll help me being mobile even without an automobile.

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

Толстеть на глазах

Иногда попадаются шнурки, например, толстые нейлоновые, которые постоянно развязываются. Оказывается, я просто всю свою сознательную жизнь неправильно их завязывал, и, судя по статистике, вы скорее всего тоже. Левую петлю я всегда размещал над правой, вот так:

Неправильно завязывать шнурки

И если потянуть за основы шнурков, узел повернется параллельно стопе. Спустя двадцать лет обнаруживается, что это слабая форма узла, а сильная форма получится если левую петлю разместить под правой:

Правильно завязывать шнурки

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

P.S. Если о первом, глупом способе вы и не слышали, то могу лишь позавидовать вашим долгим годам шнурковой стабильности.