Родился 19 июля 1920 года в деревне Паршино Мантуровского района Костромской области в семье крестьянина. Осенью 1940 года был призван в Пограничные войска. После окончания школы младшего начсостава в 1941 году, проходил службу командиром отделения в Гродековском пограничном отряде на Дальнем Востоке (Приморский край). В действующую армию был направлен только в феврале 1942 года. Участвовал в боях на Курской дуге, форсировании реки Десна. Отличился при форсировании реки Днепр.
15 октября 1943 года старший сержант Смирнов в числе первых со взводом преодолел реку в районе посёлка Лоев (Гомельская область Белорусской ССР). После того как лодка была разбита вражеским огнём, вплавь добрался до берега. К его взводу присоединились бойцы других групп, оставшихся без офицеров. Взвод под командованием Смирнова выбил гитлеровцев из первой траншеи, уничтожил несколько огневых точек и закрепился на высоте. Захват небольшого плацдарма содействовал успешному форсированию реки батальоном. В бою Смирнов был ранен в ноги. Очнулся уже в госпитале. Указом Президиума Верховного Совета СССР от 30 октября 1943 года старшему сержанту Смирнову Николаю Яковлевичу присвоено звание Героя Советского Союза с вручением ордена Ленина и медали "Золотая Звезда".
После лечения в госпитале Смирнов Н.Я. с января 1944 года служил химиком-инструктором в 82-м пограничном отряде. В 1947 окончил Ленинградское военное училище войск МВД. С 1947 по 1954 год проходил службу в армии. Член ВКП(б)/КПСС с 1948 года.
С 1954 года капитан Смирнов - в запасе. Вернулся в родные края. Жил в городе Мантурово. Работал начальником районной организации Всесоюзного добровольного пожарного общества.
Умер 19 марта 1979 года.
Именем Героя названа улица в городе Мантурово Костромской области.
В городе Кострома на ул. Верхняя Набережная установлена мемориальная доска с фотографией.