второе. Первое можно поднаверстать в процессе или на крайняк решить проблемы через коллег-профсообщество, а вот если тупишь в сфере применения-реализации, в сути программируемых процессов, то тут будет худо
И то и другое важно. В крупных проектах могут быть специальные люди, которые исследуют задачу и разъясняют её программистам, в этом случае программисты не общаются с клиентом.