Это краткое руководство для вас, от любопытного новичка до опытного SWE, ищущего ответы.

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

Вы не просто изучаете его в течение 12 недель, 6 месяцев или 2–4 лет, а затем просто «готово». Вы постоянно растете. С 7 лет я выполнял миссию по подражанию человеческому мозгу в машинах. Конечно, я не могу сделать это в одиночку. Нам необходимо создать армию единомышленников, гибридных технологов, которые активно стремятся понять как человеческий мозг, так и то, как машины вычисляют информацию. Один маленький шаг в этой большой схеме - направить моих товарищей-строителей, мастеров-мастеров и мечтателей, чтобы они стали лучше в своем ремесле в качестве инженеров-программистов.

Вот 5 моих главных советов, которые помогут вам стать лучшим инженером-программистом.

Узнайте, как использовать структуры данных и алгоритмы

Это больше, чем знание того, что они собой представляют, это также знание того, как их использовать, почему вы их используете и каковы компромиссы одного подхода по сравнению с другим. Например, в чем разница между связанным списком и массивом? В чем преимущества бинарного поиска и когда вы им пользуетесь? Знаете ли вы, как распознать проблему реального мира, которая может быть отображена как проблема динамического программирования, например, знаменитая задача о рюкзаке 0–1 или как самая длинная общая подпоследовательность?

Знать основы компьютерных сетей

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

  • Как программное обеспечение, которое вы пишете, подключается к внешнему миру?
  • Вы знаете, как работают WiFI и LAN?
  • В чем разница между UDP и TCP?
  • Как 7 уровней Open System Interconnect обрабатывают данные при переносе информации с одного устройства на другое?
  • Как распределяется труд между такими компонентами, как маршрутизаторы и хосты?
  • Или как распределяется труд между разными параллельными протоколами и что это за параллельные протоколы?

Знать основы Linux или UNIX

На данный момент UNIX существует уже более 30 лет, и знание того, как работать в командной строке с Linux или UNIX, поможет вам стать более эффективным.

  • Вы знаете, что это за розетка?
  • Убить процесс?
  • Что такое потоки?
  • Можете ли вы использовать регулярное выражение?

Изучите основы баз данных

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

Иметь мышление роста

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

Например, реализации Clojure и Haskell отлично подходят для функционального программирования. Напротив, парадигмы объектно-ориентированного программирования (ООП) используются в Python, Java и Ruby.

Однако в 1990 году FORTRAN, COBOL и C ++ были среди доминирующих игроков для языков, которые были «в моде».

Поэтому всякий раз, когда вы думаете: «Я никогда не смогу этому научиться», ПРЕКРАТИТЕ. Перестань думать об этом немедленно.

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

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

Итак, вам также нужно верить, что вы можете чему-то научиться и что вы всегда можете расти.

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

Как вы думаете, что является самым важным навыком инженера-программиста? Пожалуйста, оставьте свои мысли в комментариях ниже.