Понять подходит ли вам работа программиста просто. Изучить какой-то не самый сложный стек технологий в какой-нибудь массовой отрасли программирования. И попробовать что-то сделать. Кроме домашнего компа и доступа в Интернет (второе нужно больше даже для изучения а не при разработках как таковых) никаких не зависящих от вас самих ресурсов для этого не нужно.
С большинством классических инженерных дисциплин несколько сложнее. Попробовать на вкус свою будущую работу на современном уровне вряд ли получится. Ну вам как минимум должно быть интересно как устроены технические системы вокруг вас. Почему они так устроены? На каких физических принципах основана их работа? Попытаться понять почему при их проектировании были приняты именно такие решения? Где в них техническая целесообразность, а где маркетология?… Хорошо если вы увлекаетесь кастомизацией вещей, скажем автомобилей, компьютеров, своего жилья… Но все это показатели, однако не гарантия (в отличие от предыдущего пункта). Одно дело "почемучка" или "самоделкин" (в хорошем не уничижительном смысле). И другое каждодневная работа. Если в программировании вы вполне можете сами работать несколько месяцев над собственным проектом и даже попробовать его потом реально раскрутить. То с классической инженерией сложнее.
Оговорка "классический" не случайна. Полное название профессии программиста, если у него есть высшее образование - "инженер-программист". Но я понимаю что ваш вопрос не про это.
А строго говоря в проектировании современных программных систем важно именно инженерное мышление. Большинство я думаю 80% современных систем не так сильно завязаны на математику как ранее. И большинство современных программистов плохо знают математику. Но зато системы сейчас очень велики по объему. И поэтому при их создании важен именно инженерный подход: разбить огромную систему на более обозримые подсистемы и заставить их взаимодействовать. Вокруг собственно этой простой на первый взгляд фразы и крутится все современное проектирование программ. Которое уже давно стало гораздо сложнее написания кода как такового.