Мой колледж (см. посты по тегу #колледж) , не дал мне почти ничего, но одна полезная вещь всё же была — обязательной частью программы была практика в настоящей компании, и они помогали студентам их находить. Мне повезло, и я попал в довольно крутую.
Меня познакомили с местным программистом (довольно крутым), который стал моим первым наставником (ментором?). В первый же день я получил хороший урок от него, который сильно въелся в мою память и помог получить правильный настрой на годы вперёд. Он предложил мне несколько проектов на выбор, и некоторые из них мне показались слишком сложными, поэтому я ответил что-то вроде — "с этими я не справлюсь, поэтому лучше вот это".
Ему такой ответ не понравился и он объяснил мне, что нет такого понятия "не справлюсь" — хороший программист будет искать решение любой задачи, которую перед ним поставили. А если чего-то не знаешь или не понимаешь, придётся разобраться — в этом и заключается работа. Сложность любой задачи сводится лишь к оценке времени.
Конечно, сейчас, после долгих лет практики, для меня это стало очевидным и привычным, но в то время казалось озарением, и я перестал мыслить категориями "смогу / не смогу". Я не сразу привык жить в такой парадигме, но тот разговор произвёл на меня такое сильное впечатление, что я вспоминал его каждый раз, пока мысль "я не смогу" не стала казаться постыдной — "Конечно, я смогу! Просто надо понять, как именно, потратить время на изучение.. Иначе какой я программист?"
И тогда я спросил его — "О великий сенсей! Как же мне тогда выбирать
Серьезно, так и было — я спросил, какую задачу он бы мне посоветовал? Ведь изначально я выбирал по принципу "с чем справлюсь, то и возьму", а когда это отпало, то и выбирать непонятно как. И он сказал, что все задачи хороши, и мне надо просто подумать, какая из них была бы мне наиболее интересна, ведь работа должна приносить удовольствие. В итоге, я выбрал ту что казалась мне самой сложной и интересной, нужно было сделать инсталлятор для одного из продуктов компании — компания продавала софт для бизнес-клиентов, и для установки некоторых решений требовалось высылать специально обученного человека, а мне предлагалось автоматизировать это, чтобы устанавливать по нажатию одной кнопочки.
О, как же это было приятно! Я впервые ощущал свою важность, впервые в жизни делал что-то за компьютером не для себя, а для целой компании! И это должно было очень сильно облегчить жизнь коллегам. Далее наставник меня направлял, давал общие советы, но в детали реализации не погружался. В итоге, я с этим успешно справился (хотя, проекту ещё было куда расти).
На самом деле, это была лишь временная практика, да и проект не совсем можно назвать "программированием" — я использовал Apache Ant и набор не сложных скриптов. Проект был довольно сложным, но это не похоже на привычное нам программирование. Основной платформой компании была Java, и вот до кода самих продуктов мне было как до Луны.
Всё это время меня постоянно терзали переживания, я не был уверен, что стану "настоящим программистам". Как сейчас помню, я часто мучил коллег, особенно моего наставника вопросами - "как думаешь, я смогу стать программистом?". Для меня всё это было слишком зыбко, я не видел чёткого пути, условий..
После успешного прохождения практики я попросил оставить меня поработать там хотя бы пол ставки, и желательно программистом. Ох, как же я об этом мечтал.. Мне согласились провести собеседование, но я провалил его с треском. Я не раз упоминал эту историю ранее — местный бородатый мужик задушил меня вопросами в стиле google killer questions (сколько мячиков влезет в эту комнату? и т.п.). В конце он сказал, что вряд ли из меня вообще выйдет программист, и посоветовал прочитать целиком SICP, обязательно решая все упражнения(!!) — это очень забористая книжка, от которой даже MIT в итоге отказались, на порядки сложнее этого вашего Таненбаума. По сути, это было скорее жестокой издёвкой, чем хорошим советом.
