Различия между изучением программирования самостоятельно и программированием на рабочем месте

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

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

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

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

  • Изучая что-то, люди просто следуют стандартному методу из какого-то учебника или видео на YouTube, чтобы решить фиктивную задачу. В то время как на работе нет шаблонного метода, и люди решают настоящие реальные проблемы.
  • Изучая что-то, люди часто делают что-то с нуля и делают это от начала до конца во время работы, большую часть времени вы будете вносить изменения в уже существующую архитектуру. > включить новый вариант использования в бизнесе. Поэтому также очень важно научиться строить из чужой работы.
  • Во время обучения большинство из нас используют фиктивные данные или уже обработанные данные с какого-нибудь веб-сайта, такого как Kaggle, и включают их в свой код. А когда вы на работе, в некоторых случаях данные действительно беспорядочны и несовершенны, и нам нужно придумать, как их очистить или обработать.
  • Локальный хост против реального хоста. Когда вы чему-то учитесь, мы просто хотим увидеть, как это работает, поэтому в конечном итоге мы размещаем нашу работу локально. Нет, http://localhost:8080 недоступен из Интернета :) Во время работы вы никогда не будете размещать что-либо локально.
  • Изучая что-либо, мы не учитываем стоимость инфраструктуры. Мы просто хотим создать что-то одно, используя этот новый специальный инструмент, о котором все говорят. Хотя на самом деле в работе учет затрат является важным фактором во всех основных решениях по инфраструктуре, поскольку все может масштабироваться очень быстро, и мы не хотим в конечном итоге платить 100 000 долларов.
  • Когда мы что-то изучаем, нам все равно, надежна ли определенная инфраструктура. Мы просто хотим увидеть, как это работает. Неважно, если он развалится через два часа (Виновен :)). Во время работы мы хотим, чтобы все оставалось в порядке на долгие годы.
  • Git — это также инструмент, который вряд ли пригодится вам, когда вы изучаете программирование. Мы просто нажимаем CTRL + S на нашем компьютере и считаем, что наша работа за день сделана :) В то время как в реальном сценарии работы весь наш код будет контролироваться версиями с использованием Git.
  • Нехватка времени также сильно отличается, когда вы чему-то учитесь, и когда вы на работе. Во время обучения вы чувствуете, что у вас есть все время мира. Хотя, когда вы на работе, и ваша команда работает над проектом, который необходимо выполнить за два дня, чтобы решить бизнес-вариант, все может стать довольно напряженным.

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

1

Изучая что-то, люди просто следуют шаблонному методу из какого-то учебника или видео на YouTube, чтобы решить фиктивную задачу. В то время как на работе нет шаблонного метода, и люди решают настоящие реальные проблемы.

Когда вы чему-то учитесь и следуете руководствам, на самом деле вы не решаете никакой реальной проблемы. Вы копируете все, что говорит человек в учебнике. Это может помочь вам лучше узнать инструменты, которые вы используете, но это может стать проблемой на собеседовании.

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

  • Набор данных «Титаник» — очень известный набор данных, легко доступный в Интернете, и его получение не требует усилий.
  • Построение модели машинного обучения поверх этого не решает бизнес-проблем.

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

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

2

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

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

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

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

Вот несколько советов, которые облегчат понимание вашей работы.

  • Оставляйте комментарии при написании кода.
  • Включите логирование в свой код.
  • Иметь описательные имена переменных. Не называйте переменные как a,b,c,x,i,er. Ты знаешь кто ты есть. Мы все виноваты в этом.
  • Включайте строки документации в свои методы всякий раз, когда вы их используете.
  • Старайтесь следовать объектно-ориентированному подходу при написании кода.
  • Следуйте принципам абстракции и инкапсуляции. Это также очень важно с точки зрения интервью.
  • Включите линтер в свой код, например Pylint, если вы программируете на Python.

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

3

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

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

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

Вот что я рекомендую.

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

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

4

Локальный хост против реального хоста. Когда вы чему-то учитесь, мы просто хотим увидеть, как это работает, поэтому в конечном итоге мы размещаем нашу работу локально. Нет, http://localhost:8080 недоступен для Интернета :) Во время работы вы никогда не будете размещать что-либо локально.

Хотя это, безусловно, похоже на достижение, когда вы пишете http://localhost:8080 в своем браузере, видите свою работу в виде веб-страницы и хотите рассказать о ней миру. В реальной бизнес-среде все работает немного иначе.

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

Вот что я рекомендую

  • Перейдите в консоль AWS и запустите экземпляр EC2 уровня бесплатного пользования.
  • SSH в инстанс и выясните, как разместить там свою работу.
  • Разместите его, а затем получите к нему доступ через определенный IP-адрес, специфичный для этого экземпляра.
  • Настройте группы безопасности соответствующим образом, чтобы вы могли показывать их всем остальным.
  • Возможно, купите доменное имя и установите его поверх IP-адреса. Доступ к сайту через доменное имя.

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

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

5

Когда мы что-то изучаем, мы не учитываем стоимость инфраструктуры. Мы просто хотим создать что-то одно, используя тот новый специальный инструмент, о котором все говорят. Хотя на самом деле в работе учет затрат является важным фактором во всех основных решениях по инфраструктуре, поскольку все может масштабироваться очень быстро, и мы не хотим в конечном итоге платить 100 000 долларов.

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

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

Вот что я рекомендую делать в этом случае.

  • Подумайте о том, что если бы ваши данные были в тысячу или даже миллион раз больше, чем сейчас. Что бы вы сделали?
  • Подумайте, что если посещаемость вашего сайта вдруг вырастет в тысячу раз. Что бы вы сделали?

Постарайтесь учитывать стоимость ваших подходов в этих сценариях и то, как вы будете принимать решение.

Обычно принятие решения состоит из следующих факторов

  • Это рентабельно?
  • Это масштабируемо?
  • Это надежно?
  • Легко ли интегрироваться с другой нашей инфраструктурой?
  • Легко ли это понять и подобрать для нового сотрудника?

Хотя, возможно, вам не придется иметь дело с этими вещами во время обучения, но прохождение этого мыслительного процесса и объяснение его на собеседовании на 100% поставит вас впереди других кандидатов :)

6

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

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

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

Вот что я рекомендую нам сделать, чтобы преодолеть разрыв

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

Это снова один из тех моментов, о которых вам, возможно, не придется думать во время обучения. Но знание этих вещей на собеседовании и четкое их объяснение наверняка поставит вас впереди других кандидатов.

7

Git также является инструментом, который вряд ли пригодится вам, когда вы изучаете программирование. Мы просто нажимаем CTRL + S на нашем компьютере и считаем, что наша работа за день сделана :) В то время как в реальном сценарии работы весь наш код будет контролироваться версиями с использованием Git.

Git — это то, чему я научился на работе, так как я не сталкивался с ним на этапе обучения.

Хотя также можно сохранить код на жестком диске и получить его в любое время. Но спросите себя об этом.

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

Вы видите проблему неиспользования Git?

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

Но я бы все же посоветовал продолжить и отправить свой код в реальный репозиторий Git, то есть в GitHub или GitLab. Это не только даст вам все вышеперечисленные преимущества, но, в конце концов, у вас также будет очень богатый профиль Git, который вы сможете продемонстрировать в своем резюме, а затем вы сможете поговорить об этом со своим интервьюером.

Вы просто не ошибетесь, если воспользуетесь Git :)

8

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

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

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

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

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

Надеюсь, вам понравилось читать!