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

Ни один космонавт не отправляется в космос со скрещенными пальцами. Мы не так справляемся с рисками

Крис Хэдфилд

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

Меня зовут Дэвид, я компьютерный инженер и разработчик программного обеспечения полного цикла, в настоящее время работаю в большом стартапе в США.

Полная картина

Любимый вопрос тех, кто хочет быть программистом, - С какого языка лучше всего начать?. Но проверьте это: самые известные языки (Python, Java, Ruby, PHP и т. Д.) - все декларативные языки, но мир намного шире, вы когда-нибудь слышали о логическом программировании или функциональном программировании?

Начать с Python нет проблем, потому что это легко, но если вы хотите быть профессионалом, мой личный совет - спросить себя, почему такие вещи: откуда появились языки? Какие бывают языки? Почему их так много?

То же самое и с разработкой приложений: какие фреймворки доступны? Почему они используют эти языки? Каковы тенденции базы данных?

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

История вычислительной техники

Новаторы (Книга)

Инфографика: Краткая история методологий разработки программного обеспечения

Разница между разработчиком программного обеспечения и инженером-программистом

Структура

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

Маргарет была директором команды, которая разработала бортовое программное обеспечение для полета для космического корабля НАСА «Аполлон», она запрограммировала код для посадки на Луну!

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

Когда астронавты Базз Олдрин и Нил Армстронг опередили посадку всего за несколько минут, радар начал отправлять на компьютер слишком много информации и пригрозил, что не останется места для вычислительных задач, необходимых для приземления. Маргарет предвидела подобную проблему и сделала операционную систему Apollo устойчивой к ней, позволив только наиболее важным процессам оставаться в памяти. Это решение спасло посадочный модуль от аварии.

Теперь, когда вы начинаете путь к профессиональному разработчику, вам необходимо изучить следующие области, чтобы составить хорошее резюме:

  • Структуры данных и алгоритмы
  • Условные обозначения кода: именование, форматирование, документация
  • Символьная логика и дискретная математика
  • Инструменты программирования: IDE, отладчики, наборы для тестирования.
  • Операционные системы: Linux / MAC, консольные команды, серверы.
  • Контроль версий: GIT.
  • Платформы и базы данных (выберите одну и освоите ее, прежде чем переходить к другой).
  • Аутентификация и API
  • Безопасность

Если вы только начинаете, вам понравится, как этот веб-сайт объясняет все простым и понятным языком: Tutorials Point.

Для полных курсов: CodeAcademy

Какие предметы необходимы для компьютерной инженерии?

Мышление

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

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

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

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

Вот некоторые ресурсы, которые могут помочь вам на вашем пути:

Как заводить друзей и влиять на людей, Google Primer, Лаборатория счастья, Препятствие - это путь.

Заключение

В 2019 году инженеры-программисты получали в среднем 92 046 долларов, и основная причина такой суммы в том, что очень сложно мотивировать себя на месяцы или годы на изучение всех этих тем.

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

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