Чему я научился в университете

Стек — C#

Опыт — 7 лет

Работа — студент университета + фрилансер

Моя первая оплачиваемая работа

Позвольте мне создать настроение: бедный студент университета, первый курс физики, слишком много курсов одновременно, недостаточно сна; я думаю, вы поняли идею (и, возможно, то, что вы чувствуете). Я знаю, что все мы хотели бы иметь немного денег, чтобы гулять и наслаждаться своим временем. Мы все можем найти минимальную зарплату на 9-5, но я искал что-то лучшее и думал, что смогу использовать свои навыки разработчика, чтобы найти какую-нибудь работу.

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

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

Работа с клиентом/на клиента в качестве фрилансера

Теперь для всех вас, разработчиков, я уверен, что вы думаете: «Хорошо, он получил некоторые документы с требованиями о том, как/что строить». Это не может быть дальше от истины (и, на удивление, встречается чаще, чем я ожидал). Мне пришлось опросить всех сотрудников компании, чтобы получить представление о том, что нужно. После этого я садился и писал свои собственные документы с основными требованиями, которые затем обсуждал с клиентом.

Если есть что-то, что вы вынесли из этого: «Всегда обсуждайте требования с клиентом в письменном виде».

Это много раз спасало меня.

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

Мне повезло (в каком-то садистском смысле), что мой первый клиент понятия не имел о том, как писать требования и как вести цикл разработки. В последующие годы я получал множество «требований» типа «поставьте кнопку там-то, сделайте то-то»; и в 9/10 случаев находился лучший способ сделать то-то и то-то, который решал проблемы клиента лучшим образом. Я призываю вас взглянуть на все, что вы разрабатываете, и попытаться понять, что за этим стоит, и посмотреть на картину в целом. Вы с удивлением обнаружите, что это очень поможет вам писать более качественный код.

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

Чему нельзя научиться в университете

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

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

  1. Понять бизнес — Как я уже говорил, поймите, «зачем» вашему клиенту нужна функция, а не только то, как он видит ее реализацию.
  2. Принцип 80/20 — Постарайтесь потратить свое время с умом, чтобы покрыть большинство потребностей, а «известные проблемы» оставьте для действительно редких крайних случаев.
  3. KISS — «Keep it, simple stupid» (или иногда я думаю, что это «Keep it simple, stupid»), старайтесь упростить свой код, разбить его на более мелкие кусочки, это принесет дивиденды в долгосрочной перспективе.
  4. Производительность — это еще не все (или даже не все) — Современные компьютеры быстры (действительно очень быстры), и тот причудливый алгоритм двоичного поиска, который вы изучали, не имеет значения в реальной жизни (в большинстве случаев), когда вы фильтруете список даже из нескольких десятков тысяч, это не изменит время выполнения.
  5. Используйте открытый исходный код везде, где это возможно — Существует так много замечательных проектов с открытым исходным кодом, и они могут сократить ваше время программирования в разы. Кроме того, они могут (обычно) сделать это лучше, чем если бы вы пытались написать это сами.

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

Оцените статью
devanswers.ru
Добавить комментарий