А как все же стать программистом? Часть 2.
Стоит для начала упомянуть о некоторых навыках, которые обязательны для любого программиста.
Скучная часть, где же про программирование?! Еще будет.
Disclaimer: все ниже написанное, естественно, ИМХО.
Английский язык.
Да, это всем известно. Без знания английского языка далеко не уедешь. Актуальную документацию не переводят на русский. Русские переводы книг могут изобиловать опечатками. Работодатель с интернациональной командой и зарубежным заказчиком платит больше.
Для себя стоит определить три уровня знания английского:
1. Читаю документацию, пишу комментарии в повелительном наклонении.
2. Могу вести рабочую переписку и не стесняюсь общаться с коллегами.
3. Свободное владение.
Коммуникабельность.
Программистов принято представлять застенчивыми зубрилами. Они конечно могут быть зубрилами, но вот общительными (хотя бы в эпистолярном жанре) быть обязаны.
Будьте открыты к общению и корректны. Да это страшное слово, корректны. Пренебрежение, экспрессивное матерное описание качеств кода, все это только накаляет атмосферу. В нормальном коллективе вы свободно можете признаться что не понимаете или что-то не получается и вам помогут ваши коллеги. В офисе, где каждый сам за себя, а зазнайки будто футболисты из американской молодежной комедии чморят новичков, это просто не возможно.
Не замалчивайте проблемы, после трех часовой медитации над кодом и гуглом, попросите помощи. Не забывайте задавать вопросы.
Ваша общительность должна передаваться и вашему коду. Стоит всегда помнить о том, что ваш код будет кто-то читать. Да и вы сами через пару лет вряд ли вспомните в чем тут было дело. Так что все эти советы по стилю кода, читаемым названиям переменных и осмысленных комментариях — совсем не глупость.
Обучаемость.
О да, это реальный навык для программиста. И его же проклятие. Учиться вам придется всю оставшуюся карьеру. Дело может быть даже не в том что вышел какой-то новомодный инструмент, а в том что программирование это поистине необъятная область знаний. И позанимавшись по книжке 1979 года выпуска, вы станете лучше как современный программист. А вы ведь хотите быть лучшим?
Для себя все обучение я разбиваю на три последовательные стадии:
1. Ознакомление — составление «словаря абстракций» и связывание уже известных абстракций.
- Быстро за 2 дня прочитать книжку по теме попытаться понять основные места,
- найти «знакомые слова» и подходы.
2. Применение — решение задачи.
- Вы изучаете что-то новое потому что хотели что-то сделать, так сделайте это,
- при необходимости обращаясь к книжке в конкретных места.
- Голая теория неполноценна без практики, а практика без теории.
3. Углубление — тщательная проработка темы.
- Дотошное выполнение заданий в книжке, вдумчивый разбор с заглядыванием во все
- закоулки и щели.
Новые понятия и задачи могут запустить точно такой же трехуровневый процесс и так может длиться бесконечно. Каждая стадия в таком процессе требует всевозрастающего времени. Поэтому важно уметь брать только то, что нужно конкретно сейчас и не тратить время на лишнее. Позже вы можете вернуться к той же книге, да и вообще прочитать книгу 10 раз подряд не проблема.
Выше я сам призвал брать только те знания которые нужны прямо сейчас. Но дело в том что такие знания становятся обрывочными или неполноценными. Так что обучаемость включает в себя еще и дотошность с которой вы будете стараться следить за собой. Заставляйте себя вернуться к частям книги, которые вы пропустили.
Книга конечно взята для примера, вместо нее может выступать гугл, набор статей, лекции и многое другое.
И к сожалению стоит сделать вывод что вы никогда не найдете всех знаний в одном месте.
P.S. Этот цикл постов - не гайд из нескольких последовательных пунктов, а попытка объяснить как вообще становятся программистами. И кодеры из предыдущей статьи не ругательное выражение, а ступенька на этом пути.