Краткий ответ: не обязательно начинать с таких глубин, но со временем хотя бы получить представление нужно.
Вообще зависит от того, каким программистом ты хочешь быть. Если каким-нибудь системным (драйвера писать например), то желательно. Если микроконтроллеры хочешь программировать, то знать, как работает железка просто необходимо.
Если не знаешь, то тебе это не надо. По крайней мере на первых порах. Лучше сразу начинать с какого-нибудь высокоуровнего. Си, паскаль, go. Твоя задача на первых порах - научиться составлять алгоритм решения задачи и научиться я записывать его на языке программирования. А чтобы научиться записывать на языке программирования тебе нужно изучить основы (что такое переменные, типы переменных, условия, циклы, массивы). Потом тебе надо определиться, каким программистом ты хочешь быть (если ты сразу не определился) и уже идти по той сфере. В большинстве случаев, архитектуру с ассемблером изучить можно на более поздних порах. Хотя бы просто, чтобы иметь представление. Впрочем, когда освоишься - ты сам поймёшь, на каком уровне тебе надо все это изучать.