Pull to refresh

9 вещей, которые я узнал, будучи программистом, и которые я хотел бы знать, поступая в магистратуру

Reading time 9 min
Views 69K
Original author: Manuel Ebert
Три года тому назад я работал в лаборатории нейробиологии в Барселоне, занимаясь тем, что ставил на людей различные электроды и вел курсы по когнитивным системам. А сегодня я проектирую и пишу программное обеспечение для жизни.

В рамках науки я много писал о программном обеспечении, что-то вроде — если вы хотите разобраться в 40 гигабайтах данных, полученных при сканировании мозга, вы должны закатать рукава и написать парочку сортировочных скриптов. И я всегда был действительно неплохим программистом, хотя и не осознавал этого, пока не выпустился из академии и не начал работать над одним небольшим и очень амбициозным стартапом, — именно тогда я узнал всю правду о разработчиках программного обеспечения и — что еще более важно — о том, что значит, быть в этом бизнесе. Разработка программного обеспечения — это не просто знание языков, библиотек, алгоритмов и проектировочных шаблонов. Это — особый образ мышления.

И этот образ мышления мне здорово помог бы в моей работе, если бы был мне известен до моего поступления в магистратуру.

Следующие записи — это своего рода указание мне молодому — те вещи, о которых я узнал, порой при весьма болезненных обстоятельствах, за прошедшие три года.

1. Наш интеллект слишком переоценен


Когда вы молоды, вы учитесь, и учеба занимает вас полностью. Вы как крупная рыба в небольшом пруду. Или как рыба, которая еще в два раза крупнее, когда вы умеете выражать свои мысли достаточно красноречиво. Фактически, умение казаться умным и быть хорошим собеседником позволяет пройти весь курс обучения в старшей школе и большинстве учреждений специального образования, толком не занимаясь учебой вовсе (что, впрочем, не касается физики — формулы все-таки приходится заучивать). В таком случае, вы можете поздравить себя — вы счастливец. А с другой стороны — неудачник, так как, пока вы пальцем о палец не ударяли в школе, пропуская мимо ушей те или иные вещи, другие успели узнать кое-что очень впоследствии важное: они приучили себя быть усердными и настойчивыми. Научились работать в команде. А также еще восьми вещам, о которых будет сказано далее.

В нашем обществе понятию интеллекта придают слишком большое значение. Когда я говорю людям, что работал в лаборатории нейробиологии, они обычно реагируют следующим образом: «Ого, да ты, наверно, очень умный». Да, не глупый — отмечу я — но в то же время я знаю множество людей, которые, будучи менее умными, чем я, являются куда более успешными нейробиологами.

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

2. Придавай значение всему, что делаешь


Возможно, эта «мантра» также слишком «затаскана», тем не менее, это очень важный урок для тебя, мой молодой друг: чем бы ты ни занимался, расценивай это как явление максимально важное. Никогда не следует делать работу просто для того, чтобы покончить с ней. Конечно, каждому нравится читать свое имя в публикациях, но намного более важно здесь то, какой вклад ты внес в решение того или иного вопроса и сколько гипотез ты перебрал в процессе поиска этого решения; важно грамотно анализировать данные и составлять статистику, как важно то, сколько раз тебе пришлось всё переделывать, так как в определенный момент ты заметил маленькую ошибочку, из-за которой все накрылось медным тазом. А если вы занимаетесь написанием программного обеспечения, важно также умение планировать свою работу, находить исходные коды, изучать новые парадигмы и языки программирования, править свои баги, обрабатывать и апгрейдить собственные алгоритмы. И если вам это не доставляет удовольствия, и вы делаете работу только потому, что её нужно завершить, чтобы после опубликовать или выпустить в качестве законченного продукта, вы никогда не станете специалистом своего дела. Если у вас нет к этому стремления, тогда, наверно, следует задуматься: возможно, быть ученым или инженером, или чем-нибудь в этом роде для вас — просто пустая трата времени?

Прекрасный признак того, что вы относитесь с почтением к своей работе, — это, когда вас занимают даже так называемые just4fun проекты: т.е. те проекты, выполнять которые, казалось бы, совсем не обязательно, которые на первый взгляд никак не способствуют продвижению вашей основной работы. А вам просто нравится их разбирать. И что интересно, часто в среде разработчиков именно такие проекты дают жизнь множеству программных продуктов, которые широко используются в нашей повседневной жизни и не особо тяготеют к научным кругам. Одной их моих излюбленных цитат по этому поводу, является изречение Конрада Лоренца:
«Отличное утреннее упражнение для любого исследователя: отвергнуть парочку вымышленных гипотез перед завтраком».

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

3. Изучай новые средства


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

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

К полезным средствам, которые я рекомендовал бы каждому студенту, относятся:
  • Git и Github. Git помогает вам управляться с работой и позволяет никогда не беспокоиться о создании резервных копий, плюс, к нему прилагается тонна кодов, с помощью которых вам не придется каждый раз заново изобретать колесо. Ах да, и еще: пожалуйста, всегда делитесь своими кодами с другими людьми, сослуживцами и коллегами по цеху. Пускай они их просматривают. Никогда не используйте для анализа код, который никто кроме вас не читал (никогда бы не поверил, что буду акцентировать на этом столько внимания, но теперь я совершенно точно знаю, что 30% от результатов в любом научном исследовании составляют ошибочные данные, которых можно было легко избежать, своевременно передав коды на рассмотрение своим друзьям).
  • Иллюстративные приложения: лично я предпочитаю Inkscape, но стандартный Adobe Illustrator или относительно новый Sketch — также хороши. Используйте их в целях пост-обработки своих графиков и диаграмм — это гораздо проще, чем писать графики в Matlab или Matplotlib.
  • Научитесь максимально эффективно использовать свой редактор текстов и кодов. Кстати, одним из лучших, на мой взгляд, редакторов является Sublime Text — научиться работать с ним намного легче, чем с VIM или Emacs. Учите горячие клавиши — они сэкономят вам кучу времени.
  • Учитесь говорить. Смотрите выступления на TED и особо учитесь тому, как некоторые говорящие умудряются завоевать внимание аудитории в отпущенные им 15 минут. Тренируйтесь перед зеркалом. Ваши тело и голос — это тоже средства.
  • Изучение основ Python, R, HTML и Javascript может занять у вас очень много времени. Если вы уже не профан в программировании, всегда старайтесь учить новые аспекты и библиотеки. Интересуйтесь компьютерным зрением, обработкой естественного языка и робототехникой, читайте как можно больше информации в Интернете, занимайтесь созданием музыки и т.д.

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

Если вы учитесь в институте, я настоятельно советую вам выделять один из дней недели для изучения новых средств. А когда наступит время подготовки вашей кандидатской работы, выделяйте на это два дня. Вы сможете сэкономить много времени, и люди будут поражаться вашей эффективности. Если же для вас это слишком, и вы считаете, что у вас попросту нет на это времени, посоветуйтесь с вашими кураторами — они, наверняка, смогут указать вам, на что в первую очередь следует обратить внимание.

4. Будь заинтересованным лицом, и пусть твоя повестка дня всегда будет всем известна


Логично предположить, что ваш куратор или управляющий всегда действуют в интересах своего учреждения или компании. Это — их работа.

Однако никакая компания или лаборатория никогда не является чем-то, обладающим живым сознанием, т.е. в них отсутствует внутренний интерес. Когда мы рассуждаем об основной цели той или иной компании, мы в первую очередь подразумеваем цели отдельных заинтересованных лиц. Главный вопрос здесь: кого ваши кураторы расценивают в качестве заинтересованных лиц и насколько важны их интересы.

И если ваш босс считает, что он — единственное заинтересованное в предприятии лицо (которое старается выпустить максимальное количество готовых продуктов и ищет быстрых и эффективных путей), выписывайтесь из такого коллектива как можно быстрее, иначе на вас повесят всех собак. А на кого же еще? Не на инвесторов же их вешать. И не на студентов. Да и остальная часть человечества вряд ли здесь будет при делах. Суть в следующем: узнайте как можно скорей, кто и чем занят. И если у вас не окажется возможности оставаться одним из заинтересованных лиц, бегите. В противном случае ваша любимая работа превратится в бестолковое занятие, преследующее чужие интересы.

5. Держи свои наработки на подхвате


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

Будучи студентом, я чаще всего писал программы, которые должны были выстрелить лишь раз на заведомо определенной системе. Но когда пишешь коды для ПО, которым будет пользоваться полмиллиона человек, все воспринимается иначе — и когда я начал писать коды профессионально я в этом очень скоро убедился.

Нет смысла в затягивании работы на годы в целях выпуска идеального продукта: гораздо лучше двигаться маленькими, но уверенными шажками. Пишите небольшими частями, из которых потом можно будет собрать единое целое. Не забивайте голову тем, насколько сложным должен быть конечный продукт. Занимайтесь основами основ, держите свои наработки на подхвате.

6. Знай правило 80/20


Правило 80/20 заключается в том, что для достижения 80% желаемого эффекта вам необходимо затратить лишь 20% времени, а оставшиеся 80% времени вам понадобятся на грамотную доработку оставшиеся 20% работы. Это похоже на путешествие с окраин до центра города: за 20% времени вы покроете 80% расстояния, после чего попадете в пробку, на прохождение которой вы затратите гораздо больше времени.

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

Если у вас такого опыта нет, просто умножьте время, которое, как вы полагаете, вам понадобится, на 5 и затем можете расценивать работу, как почти сделанную, по прошествии одной пятой от рассчитанного времени.

7. Не продавай свою душу


Свое обучение в качестве кандидата наук я начал, руководствуясь причинами, которые совершенно не заслуживали внимания. Для одной из них я даже придумал свой термин — «академическая повинность». Я свято верил в то, что, если я не буду следовать основной программе обучения, я просто закопаю свой талант в землю. Я чувствовал ответственность перед людьми, которые помогали в становлении моей академической карьеры — т.е. перед профессорами и теми, кто оплачивал мое обучение. Это неправильно. Люди, которые инвестируют в будущее, всегда могут упрекнуть вас в том, что их инвестиции не окупились. Но это — их проблемы, а не ваши.

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

8. Покинь свою зону комфорта


Вот, как я смотрю на мир:


В привычных обстоятельствах вы учитесь очень медленно. С другой стороны, если вы обеспокоены чем-либо, вы можете не выучить вообще ничего.

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

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

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

«Забудьте о безопасности.
Находитесь там, где вы не можете быть в чем-либо уверены наверняка.
Разрушьте свою репутацию.
Станьте притчей во языцех». — Руми

9. Приручи свой ум


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

Как много времени понадобится твоему уму, чтобы переключиться на что-то другое? Пять минут? Не думаю. Может, минута? Уже лучше. Двадцать секунд — или даже меньше? Скорее всего, так. Твой ум подобен обезьяне, которая цепляется за ближайшую ветку. Впрочем, когда дело касается обучения, здесь следует пользоваться другими выражениями. Есть, к примеру, такое: ассоциативное мышление. Превосходная вещь, когда необходимо сделать что-то творческое, и самый страшный враг концентрации. Но есть и хорошие новости: ты можешь научиться концентрироваться. Для этого существует миллион специальных техник, которые, по сути, не очень эффективны. Вам не нужны массажеры для локтей и особый софт. Вам нужно приручить свой ум — раз и навсегда.

Впрочем, то, что сработало в моем случае, может оказаться совершенно неприменимым для вас. К примеру, я достиг поразительных результатов посредством медитаций (которые, к слову, дают массу других полезных «побочных эффектов»), но даже здесь существует огромное множество различных стилей и техник, которые выбираются индивидуально. Так что единственное, что я могу посоветовать в этом вопросе, — стараться держать свой ум в максимально хорошей форме и относиться к этому крайне серьезно. Считаете, что медитация — это потеря времени? Тогда вперед, в тренажерный зал, и занимайтесь с усердием: несколько сожженных кило приравниваются к сожжению нескольких фунтов абстрактных мыслей. Также развивайте свой мысленный взор. Укрепите позиции сейчас, чтобы в будущем ваш ум сослужил вам добрую службу, не отвлекаясь на посторонние вещи.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+56
Comments 33
Comments Comments 33

Articles