Sou um engenheiro de software (comumente chamado de programador). Criar um software envolve muitas funções diferentes. Empresas diferentes têm funções diferentes e nomes diferentes para as funções, mas tipicamente isso envolve engenheiros de software, gerentes de produto e designers de UX (user experience, ou experiência do usuário).
Cada função tem seus próprios pontos fortes e sua própria responsabilidade. Os gerentes de produto identificam as necessidades do usuário e ditam o que devemos construir. Os designers de UX determinam a aparência do produto — o layout, telas diferentes, texto, imagens, marca, etc. Os engenheiros de software fazem a implementação real: eles resolvem os problemas técnicos necessários para construir o produto.