О, Колледж!! Прекрасные воспоминания. Как штатный программист (по крайней мере, в моих ближайших комнатах и ​​рядом с ними), я тратил большую часть своего времени на последние причуды в области технологий. Я буду первым, кто загрузит новейшую и блестящую IDE. Мой ноутбук всегда загружал новый дистрибутив Linux или последние обновления ОС для Windows или просто какую-то новую базу данных, которую мне просто нужно было установить. Я, должно быть, потратил (или, скорее, потратил впустую) сотни часов на настройку виртуальных машин (или бродячих ящиков), чтобы создать идеальную систему, в которой я мог бы быть продуктивным геймером (Aoe 2, детка) и переключиться на код/назначения на никсе. машина когда мне было нужно. И, конечно же, всегда будет работать торрент — ладно, может быть, это не совсем технология. И, конечно же, бесчисленные часы, потраченные на исправление систем людей и, во многих случаях, их отладку. Каждые несколько месяцев мы всегда возвращались к какой-нибудь проблеме с кодом и повторяли наши алгоритмы обучения удаче из книги Кормена. Я также не могу представить, сколько времени я потратил впустую на настройку/изучение инструментов сборки, таких как Ant, Maven, gems, npm, Make и т. д., ничего не зная о языке или во многих случаях о том, почему я его изучал.

Благо и проклятие технических переговоров и технических групп

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

Жестокая правда заключалась в том, что прежде чем вы успеете что-то понять и проверить, вы будете отвлекаться на то, что происходит где-то еще. Новое соревнование по коду, может быть, новый язык, какой-нибудь странный проект, который, как мы думаем, никогда не был реализован — Или, если вам особенно не повезло, новая любовь :D

Новый лист — Высшая школа, США

Проработав 2 года в Ascendant tech. — компания, которая в основном занималась вещами IBM и год в Snapdeal. Я отправился на MS, и я был полон решимости лучше использовать свое время на этот раз. Во время работы, как правило, труднее тратить много времени на изучение чего-то совершенно нового, и я был уверен, что на этот раз в аспирантуре смогу работать намного лучше.

Я, правда, тоже стал лучше и мудрее за те 3 года, которые помогли мне избежать ловушек с моим УГ. Добавьте к этому — профессора, по общему признанию, были намного лучше, поэтому у меня действительно были задания, которые во многих случаях были разработаны с использованием лучших практик. Для тех, кто на самом деле не написал достаточно модульных тестов, было здорово увидеть задания, которые были исправлены путем запуска на них кучи неизвестных модульных тестов — это было просто круто. Я чувствую, что многие из этих проектов и работа, которую я проделал в моем RA с профессорами/исследователями, которые были пугающе хороши в программировании, — это то, что в конечном итоге сделало меня лучше, чем мой жалкий уровень после колледжа.

Хватит разглагольствовать, позвольте мне рассказать вам, что я узнал

  • Алгоритмы — это лишь очень небольшая часть информатики. Это определенно не единственная часть, поскольку соревнования по коду заставляют вас чувствовать себя
  • Используйте цикл «тик-так», попробуйте написать что-нибудь полезное или изучить что-то новое, прежде чем приступать к этой новой IDE, новой системе сборки или в современном мире, возможно, какой-нибудь настройке облака, докеру или kubernetes. Основные концепции CS гораздо важнее этого, и человек с Notepad и CS знает, как лучше, чем крутой парень с настройкой hi-fi eclipse или настройкой emacs с блестящим SDK и учетной записью AWS.
  • Взимать плату с людей за настройку их системы деньгами или услугами. Сделай это, поблагодари меня позже. Нынешние ОС достаточно легко установить для этого технического новичка из Mechanical — скажите им, чтобы они погуглили и вышли из комнаты.
  • Не тратьте время на настройку последней версии IDE или нового DSL, потому что вы думаете, что это поможет вам быстро создать новое приложение с меньшим количеством кода. Идите по пути наименьшего сопротивления и выполняйте самые подробные инструкции, которые вы сможете изучить позже. [Возможно, это повторение 2, но его нужно подчеркнуть]
  • Пишите грязный, но работающий код. Я не могу не подчеркнуть этого достаточно, не поддавайтесь на хорошие практики кода, разделение проблем, шаблоны MVC (если это не задание: D). Делайте дела и делайте их быстро. Новое блестящее приложение будет поддерживать вашу мотивацию, а не красивый код, который просто делает что-то большее, чем привет, мир. Кроме того, большинство людей просто узнают об этом на собственном горьком опыте или на работе :D
  • Пишите блоги, статьи независимо от того, публикуете вы их или нет. Вы узнаете так много о том, что вы узнали и что вы пропустили, когда записываете это. Кроме того, это становится постоянной памятью, и достаточно одного взгляда, чтобы вернуться.
  • Изучение SDK — это не изучение информатики. Пример: изучение Android Api (или его запоминание) не сделает вас лучше. Но определенно создание классного нового приложения может помочь (или, по крайней мере, поддержать огонь). Я помню свои бесчисленные часы (с несколькими попытками) над набором инструментов Qt и ничего не примечательного
  • Если вы что-то хорошо чувствуете/понимаете, то стремитесь к этому до предела. Короткая продолжительность концентрации внимания, вероятно, ваш самый большой враг. Я не могу представить бесчисленное количество языков или SDK, которые я должен был написать 3-4 программы только для того, чтобы на чем-то застрять и больше никогда не возвращаться. (Легенда гласит, что некоторые из этих проектов до сих пор лежат на моих старых жестких дисках и ждут завершения)
  • Каждая область CS — это, в конечном счете, математика. В конечном итоге вам придется иметь дело с ней, если вы действительно заинтересованы в ней. Код не имеет к этому никакого отношения, хотя и помогает быть хорошим кодером. Хорошая новость заключается в том, что большая часть этого абстрагируется в библиотеках в реальной рабочей жизни.

Ну, это только мой опыт. Это может на самом деле не относиться к вам, но есть вероятность, что это может быть не слишком далеко от вашего опыта. Мой опыт, вероятно, больше подходит для студентов бакалавриата в Индии, но многие из этих моментов применимы ко мне даже сегодня и, вероятно, даже к работающим людям. Когда дело доходит до этого, если бы я знал то, что знаю сейчас — я, вероятно, был бы компетентным программистом в два раза быстрее (и, вероятно, тратил бы больше времени на важные вещи, такие как победы в турнирах AOE :D )