Informatica e Tecnologia dell’Informazione, Programmazione/ingegneria del software, Tecniche di programmazione