Что должен знать каждый программист, независимо от того, какой язык (языки) программирования или операционная система (ы) используются, или среды, для которой они разрабатываются.
Немного предыстории:
Я заинтересован в том, чтобы стать лучшим программистом, которого я могу. В рамках этого процесса я пытаюсь понять, чего я не знаю, и принесу мне большую пользу, если я это сделаю. Несмотря на то, что существует множество списков по типу «n вещей, которые должен знать каждый [вставить язык программирования] разработчик», мне еще предстоит найти что-то подобное, не ограниченное конкретным языком.
Я также ожидаю, что эта информация будет интересна и полезна для других.
language-agnostic
skills
Matt Lacey
источник
источник
Как думать, как пользователь, а не как технарь-программист.
источник
Когда обращаться за помощью, а когда НЕ обращаться за помощью.
источник
Как читать чужой код.
источник
Знакомство с системами контроля версий. Это не должен быть каждый, но основные понятия, которые могут быть применены ко всем из них, должны быть известны.
источник
Вот мои 10 битов:
источник
Может быть, это слишком тонко, но я думаю о нем как о «знании, какую проблему решить». Многие программисты (и обычные люди) тратят огромные усилия на решение вещей, которые просто не очень важны; или они создают решение с большой дополнительной работой, которая не совсем то, что нужно.
источник
Как отдохнуть. Это секрет производительности.
В конце концов, силы воли и кофеина недостаточно. Это постоянное сокращение, которое мы делаем, очень разрушительно.
Это большое дело.
источник
Базовый тип данных и теория алгоритмов. Такие вещи, как нотация Big O, массивы, очереди и т. Д.
источник
Как правильно выбрать инструмент для правильной задачи, а не принимать участие в глупых пылающих войнах из-за своих любимых инструментов программирования.
источник
Ну, вот мой .02 $:
источник
Вы не можете проверить качество в продукте.
источник
Каждый программист должен понимать шаблоны проектирования .
источник
Я немного опоздал к этому, но я пойду со знаниями, изложенными Эдсгер Дейкстра:
Если вы не можете написать хороший абзац, скорее всего, вы тоже не сможете написать хороший код.
источник
if (BlowUpTheSystem = 1)
. Конечно, при условии правильного модульного тестирования вы, скорее всего, сэкономите только время. Но тогда время очень важно.Не будьте слишком эмоционально привязаны к какой-либо конкретной технологии, операционной системе или языку, привязаны к ней или религиозны - ни одна из них не идеальна - в конечном итоге вы, скорее всего, в конечном итоге захотите создать свой собственный меню из того, что вы как о каждом другом.
Думайте об этом как о машинах - возможно, вы раньше не водили какую-то конкретную машину, но у них у всех есть ключи, рули, акселераторы и тормоза - вы должны быть в состоянии сесть в одну и быстро уехать, как только разберетесь, что и где. Обращайтесь с операционными системами и языками одинаково и сосредоточьтесь на изучении основных концепций, лежащих в их основе, даже если вы разбираетесь в особенностях любого конкретного экземпляра.
И со временем постарайтесь понять и оценить происхождение, наследие и общность различных технологий, которые помогут вам сохранить перспективу. Например, осознайте, что, хотя эволюционное дерево активно ветвится и полно тупиков, с течением времени технологии имеют тенденцию неоднократно сходиться вокруг «лучших практик» и «эффекта масштаба» ( например, обратите внимание, что Mac не так уж отличается от ПК под капотом в эти дни ...).
И наконец, запомните, независимо от того, сколько удовольствия вы получаете от всего этого, технологии, по сути, представляют собой несовершенную линзу между тем, что ваш ум может представить, и тем, что вы на самом деле производите. Делай все возможное, учись учиться и оставайся приспособленным ...
источник
Как программировать на C.
источник
Что день, когда ты перестаешь учиться, должен быть днем, когда ты больше не программист.
источник
Модульное тестирование и отладка.
источник
Это было упомянуто ранее, но я думаю, что это заслуживает своего собственного ответа.
источник
Никто не хочет использовать программное обеспечение. Они хотят, чтобы проблемы решались.
источник
Кофе и IntelliSense - твои лучшие друзья.
источник
Как наблюдать за большим сложным объектом и разбивать его на маленькие простые объекты, которые по-прежнему выполняют ту же задачу при повторном соединении.
источник
Никогда не доверяйте пользователю ( особенно если приложение общедоступно!), Он часто будет делать все возможное, чтобы так или иначе сломать ваше приложение.
Сделайте его перспективным и расширяемым - вы никогда не узнаете, когда вы захотите расширить его через несколько лет, и поймете, сколько усилий потребуется для перекодирования плохо созданного кода.
источник
Что программист не знает всего и всегда должен изучать новые языки / технологии и т. Д.
источник
Основы хорошего UI-дизайна и коммуникационного (он же графического) дизайна .
Я вижу так много приложений и проектов, разрушенных плохим дизайном или плохим юзабилити. Простое изучение основ может изменить мир к лучшему. Кроме того, методы решения визуальных проблем (например, как визуально донести концепцию) являются стимулирующим вызовом, который должен открыть вам глаза на новые способы видения, которые в свою очередь должны оказать влияние на ваш код.
Рекомендованная книга Робина Уильямса «Дизайнерская книга не дизайнера»
Вот что Джоэл Спольски говорит об этом :
источник
Каждый программист должен знать, как быстро учиться. Часто вы приходите на работу, и вам будет предложено разработать технологию, которой вы никогда не пользовались. Они могут дать вам неделю или около того, чтобы встать на ноги (если вам повезет), прежде чем вас попросят написать качественный код.
источник
Контроль версий. И процитирую мою подругу: «Я не просто хочу, чтобы вы помыли посуду, я хочу, чтобы вам понравилось !»
источник
Требования меняются, ваш код должен будет адаптироваться, и это может или не может быть вам, кто должен адаптировать его.
Там было несколько вопросов здесь , связанных с тем, которые страдают от этого.
источник
С верхней части моей головы:
Очень немногие проблемы программирования требуют математики помимо сложения, вычитания, умножения и деления. Если вы думаете об использовании исчисления для решения проблемы, изучите альтернативные варианты, прежде чем делать это.
Каждый раз, когда вы начинаете догадываться о том, как что-то должно работать, вы делаете это неправильно. Это не твоя работа - быть телепатом.
Человек, дающий вам спецификацию, редко знает все, что он хочет, пока вы не угадали его.
Более половины того, кто является великим программистом, происходит от общения с людьми. Взаимодействие с вашей командой, управление вашим менеджером и поиск конечного пользователя - это половина работы.
Хороший код написан так, чтобы его читали люди так же, как и ваш компилятор.
Лучшая практика и практическая реальность будут конфликтовать больше, чем думает программист, но меньше, чем менеджер. Когда они, кажется, находятся в конфликте, вы должны определить и понять конфликт, а затем уступить практическому. Тонкое и умное решение только лучше, чем уродливое, грубое, если оно более рентабельно в долгосрочной перспективе.
Хорошие инструменты не могут сделать хороших программистов, но плохие инструменты делают нас такими же ужасными.
Никогда не смотрите свысока на технологию, но всегда ищите лучшую альтернативу.
Чем больше языков вы знаете, тем лучше вы будете на том, который используете.
Не беспокойтесь о медленном проникновении мыслей, ориентированных на программирование, в вашу повседневную жизнь. Даже когда мы не за компьютером, мы все страдаем от ограничений пропускной способности, у нас снижается производительность при переключении задач, и нам нужно загружать вещи из резервного хранилища. Предполагается, что компьютеры имитируют человеческое мышление, а аналоги есть везде.
источник
Чтение кода других людей не испортит ваш мозг, а скорее выяснит, почему вы не сделали бы это таким образом (лучше или нет - другой вопрос).
Это дает вам программирование gedankenexperiment , и иногда вы обнаруживаете, что кто-то реализует что-то лучше! Вроде лучше.
Этот ответ естественным образом расширяется до чтения вашего собственного кода, поэтому он расширяется для использования контроля версий и DIFF, и, следовательно, до 42.
источник