Должен ли инженер-программист знать, как собрать собственный компьютер?
Исходя из опыта Mac, я никогда не тратил много времени на настройку / сборку / настройку своего компьютера, за исключением случайного обновления ОЗУ и замены жестких дисков. Я чувствую, что хорошо понимаю, как работает компьютер на концептуальном уровне, процессор, шина, память и т. Д., Но у меня нет особого практического опыта, чтобы собрать все воедино или разобрать.
Мой вопрос заключается в том, можно ли что-то получить с точки зрения навыков разработки программного обеспечения, научившись собирать собственный компьютер? Если вы потратили всю свою жизнь на сборку аппаратного обеспечения, как это повлияло на то, как вы пишете или думаете о программном обеспечении?
18 ответов
Вы не узнаете много полезного для программиста, когда собираете компьютер. Знание того, куда положить карты PCI и как подключить процессор, не очень полезно ни для чего, кроме сборки компьютеров.
Я думаю, что вам нужны знания низкого уровня о том, как работают компьютеры, но все, что интересно программистам, уже спаяно на материнской плате. Вы узнаете намного больше из программирования c или ассемблера и, возможно, прочитав книгу Чарльза Петцольда "Код"...
Остерегайтесь программистов, которые несут отвертки. (Леонард Брандвейн)
Вы не учитесь программисту на сборке ПК. Я могу нормально пользоваться туалетом, не устанавливая канализационную систему.
Зависит от того, какой вы ученик. Если у вас хорошее воображение, вы, вероятно, сможете узнать все, что нужно знать об оборудовании, не затрагивая ничего, кроме книги, есть люди, которым нужно взглянуть на вещи, чтобы улучшить их понимание.
Тем не менее, вы могли бы многому научиться, если бы вы воспользовались возможностью создания нового компьютера в качестве обучающего, например, нашли бы время, чтобы посмотреть, где находится южный мост, какой это чип и посмотреть, найти SATA Контроллер, какой это бренд, и посмотрите, посмотрите их характеристики и так далее и тому подобное. Если вы просто сложите все так быстро, как сможете, то вы, вероятно, узнаете, что делать в случае неудачи, и сэкономите несколько долларов, не более того.
Кроме того, создание вещей увеличивает интерес к ним, что не может быть плохо.
Создание собственных компьютеров делает вас лучшим универсалом, а не лучшим специалистом. Если вы рассматриваете программирование как специализированное приложение кода в редакторе, превращающемся в приложения, то создание ваших собственных систем не поможет этой практике.
Тем не менее, если вам нужно поместить сервер в одно целое, администрировать его, выяснить, когда он выйдет из строя, будь то ваше приложение, или плохой диск, или плохой поклонник, который пошел на юг, тогда да, зная, что все части, понимая, что они сделайте, какие из них вы купили и почему, будь то аппаратное или программное обеспечение, вероятно, проблема, тогда создание компьютера - это минимальный первый шаг на этом пути. Если вы не несете ответственности за фактическое выполнение и полезность вашего кода, то это пустая трата времени.
Человек должен быть в состоянии сменить подгузник, спланировать вторжение, убить свинью, соединить корабль, спроектировать здание, написать сонет, сбалансировать счета, построить стену, установить кость, успокоить умирающего, принять приказы, дать приказывайте, сотрудничайте, действуйте в одиночку, решайте уравнения, анализируйте новую проблему, разбрасывайте навоз, программируйте компьютер, готовьте вкусную еду, эффективно сражайтесь, доблестно умирайте. Специализация для насекомых.
Преимущества очевидны:
- Вы можете сэкономить пару долларов для хорошего использования
- Если вы потеряете должность инженера-программиста из-за большого интереса к SO, вы можете заработать деньги на сборке компьютеров.
В прошлый раз, когда я купил собранный компьютер, я обнаружил, что между процессором и радиатором не было теплопроводящей пасты.
Что касается навыков разработки программного обеспечения, я не нашел никаких преимуществ.
Эх.
Честно говоря, я чувствую, что сам процесс сборки компьютера на самом деле не существенно улучшает ваше понимание компьютеров. Вы не строите эти детали, вы собираете их в футляр, следуя инструкциям.
Однако необходимо добиться некоторого улучшения в том, чтобы заставить операционную систему корректно работать с компонентами и устранить проблемы, связанные с этим.
И точка зрения Аку о том, чтобы экономить деньги, хорошая.
Процитирую одного из наших отцов-основателей ( Джефф Этвуд):
В моей книге один из лучших способов понять аппаратное обеспечение - это испачкать руки и собрать их вместе, включая установку ОС самостоятельно. Жаль, что программисты Apple не могут этого сделать...
Хотя я не уверен, что это делает вас лучшим программистом, но это инструмент, который вы используете. Эти машины постоянно ломаются или нуждаются в модернизации. Я думаю, это хорошая идея, чтобы быть в состоянии сделать это, и построить его с нуля, это способ научиться этому.
Нет, не обязательно, но я думаю, что программисты должны знать о том, как можно оптимизировать код для оборудования, на котором он работает.
Процессор, память, сетевые и дисковые ресурсы сильно влияют на производительность. Программисты должны знать, когда и как использовать кэширование для повышения производительности приложения, а также как использовать код для использования больших ресурсов, когда они доступны.
Будучи выродком, я бы сказал, научиться собирать компьютер для удовольствия.
Как программист, который создавал компьютеры годами, я бы сказал, что это не оказало мне существенного влияния на качество или структуру моего кода, но дало мне хорошую основу для того, как качество вашего оборудования влияет на конечного пользователя. опыт работы с кодом.
Кроме того, и я думаю, что это, пожалуй, самое большое преимущество: создание собственного ПК дает вам достаточно знаний, чтобы сказать, является ли система разработки, предоставленная вам как сотрудником, хорошей или нет. Предоставление информированного мнения ИТ-специалисту / руководству о том, почему система, которую они предоставили, хуже, может быть ключом к получению обновления.
Да, но не в том смысле, о котором ты думаешь. Я думаю, что это невероятно ценно узнать о базовом дизайне микропроцессора, архитектуре памяти и т. Д. Еще лучше, если вы сможете заставить проектный комплект сделать что-то базовое с PIC или Stamp. Уберите абстракции с пути и учитесь немного на уровне битов. Рекомендуется также просмотреть соответствующие книги Паттерсона и Хеннесси.
Сборка ПК из компонентов - это хорошее одноразовое упражнение, просто для того, чтобы понять проблемы совместимости различных компонентов.
Я имел обыкновение создавать свои собственные компьютеры Windows и Linux, прежде чем я присоединился к Культу Mac. Я немного научился, я не думаю, что это сделало меня лучшим программистом.
Это не бесполезное знание, хотя. Это как повар, который также немного знает о сантехнике. Знания на самом деле не относятся к вашим основным задачам, но могут пригодиться, когда что-то пойдет не так.
Редактировать:
Существует большая разница между пониманием основ работы компьютеров и их совмещением с деталями Newegg. Понимание того, как процессор, кэш и функция памяти неоценимы для программирования. Знание того, как обновить видео, - полезный навык, но он не помогает в повседневной разработке программного обеспечения.
Честно говоря, я бы не знал, какие детали выбрать для сборки первоклассного разработчика или игрового ПК. Я знаю, как все сходится, я знаю узкие места программного обеспечения и т. Д.
Что я делаю, когда мне приходится собирать ПК, так это сначала найти цель. Дев ПК? игровой? мультимедиа? Офис? Тогда я думаю о требованиях. Очевидно, что простой офисный ПК работает с гораздо меньшим объемом жесткого диска, встроенным графическим процессором и т. Д. Когда я понял это, я обыскиваю Интернет для обзоров, уже составленных систем, аппаратных тестов Тома, чтобы попытаться найти наилучшую комбинацию в своем бюджете., Еще одна вещь, которую следует учитывать, это новые разработки. Если, например, Intel выпустит новую модель процессора в течение месяца, я бы подождал, чтобы цены на младшие модели упали. Когда у меня есть список необходимых компонентов, я либо иду в свой локальный компьютерный магазин, либо нахожу лучшую цену в сети. Я предпочитаю местный магазин, потому что это экономит мне много времени, когда я получаю неисправный компонент или требую гарантии. Обычно немного дороже, хотя.
Сборка - это в основном логическое мышление, немного терпения и сосредоточенности;)
Если вы носите обувь, вы, вероятно, должны знать, как ее завязать. Но, скорее всего, если вы достаточно умны, чтобы носить их, вы можете понять это.
Если нет, у вас есть проблемы.
Я построил свой собственный компьютер, но я не думаю, что он добавил мою способность быть инженером-программистом. Знание того, как создать одну из них, не сделает вас лучшим инженером.
Понимание того, как компьютер работает и как программное обеспечение взаимодействует с оборудованием, - вот что делает вас лучшим инженером.
То, что я могу поместить многоядерный процессор в материнскую плату, не означает, что я понимаю, почему параллельные процессы помогают мне, или что означает ввод критической части вызова функции. И поскольку он имеет 4 МБ кеша, это не значит, что я понимаю, что делает кеш и как работает пейджинг.
Есть много людей, которые могут создавать компьютеры, но меньше людей могут разрабатывать программное обеспечение для них. Если бы это было так, то разработчики программного обеспечения заработали бы намного меньше, чем они.
Я склонен думать, что каждый раз, когда вы чему-то учитесь и расширяете свои знания и горизонты, это хорошо, поэтому я собираюсь сказать "да".
Если все в серии "Напиши отличный код" имеет смысл, то я бы сказал, что нет, ты не собираешься больше зарабатывать, создавая систему для своей работы. Теперь работа в качестве технического специалиста и диагностика проблем, аппаратного и программного обеспечения, расширяет ваши возможности по решению проблем и поможет. Проблема не в том, что вы можете узнать, собрав пару компьютеров для удовольствия. В конечном итоге вы упускаете все маленькие странные вещи, которые делают разные производители, и если вы сможете применить их, это поможет вам расширить общее представление о хороших и плохих дизайнерских решениях.
Все, что связано с технологиями, над которыми вы работаете напрямую, поможет вам стать лучше во всех задачах, связанных с этой технологией.
Знание компьютерного оборудования сделает вас лучшим программистом. Возможно, он этого не сделает напрямую, но будут случаи, когда это принесет вам пользу.
Это действительно зависит от того, что вы хотите, чтобы ваши навыки были. Если вы хотите специализироваться на сложной математике или конкретных типах программного обеспечения (например, ИИ), было бы напрасно тратить время на работу с оборудованием.
Однако, если вы хотите заниматься такими вещами, как создание роботов с собственным умом, вам необходимо знать как программное, так и аппаратное обеспечение. Если вы хотите разрабатывать игры, особенно как инди или даже соло, вам нужно будет подражать множеству рабочих мест и специальностей. Какой это был бы кошмар, если бы инди-разработчик не понимал, как аппаратные средства различают системы.
ИМО, вы не можете называть себя настоящим ботаником, если вы не знаете, как делать программное и аппаратное обеспечение. Когда я встречаю программистов, которые не знают, как установить видеокарту, у меня возникает вопрос, смеяться мне или плакать.
Конечно, не все достаточно умны или полны энтузиазма в отношении технологии, чтобы интересоваться ею до такой степени, чтобы узнать, как создается аппаратное обеспечение, не говоря уже о его сборке и программировании. Когда я вырос, я научился реже смеяться над другими, и вместо этого понимаю, что им, возможно, не нужно узнавать об оборудовании, сосредотачиваясь на программном обеспечении. Это, конечно, не требование.