¿Qué habilidades, conceptos o competencias se consideran útiles o necesarias tanto en el desarrollo web como en el desarrollo de software?

¿Depende de lo que quieras decir con desenfoque? La programación siempre ha sido parte del desarrollo web con JS en los idiomas del lado del cliente y del servidor, incluido C.

Los desarrolladores web se están liberando de una gran cantidad de código específico del navegador y tienen acceso al desarrollo orientado a componentes, la comunicación con el servidor se está volviendo más fácil y con él el acceso a bases de datos y otros servicios web. Al mismo tiempo, las aplicaciones se están volviendo más modulares y descentralizadas.

Lo que es común a ambos es cómo se están volviendo los sistemas modulares, tanto que puede implementar algunos módulos en tecnologías que podría considerar desarrollo web y otras en métodos más tradicionales. Entonces, tanto los ‘desarrolladores web’ como los ‘programadores’ deben comenzar a pensar en términos de sistemas y módulos. Aquí hay algunas áreas que todos deberían saber

Arquitectura orientada a servicios, página más antigua pero casi mejor
http://msdn.microsoft.com/en-us/…

Patrones de diseño de software
http://msdn.microsoft.com/en-us/…

Un lenguaje de modelado de sistemas, UML / SML / WebML:
http://en.m.wikipedia.org/wiki/W…

HTTP
http://en.m.wikipedia.org/wiki/H…

Colas de mensajes
http://www.rabbitmq.com/getstart…
http://www.rabbitmq.com/devtools…

Intercambio de datos
XML: https://developer.mozilla.org/en…
JSON: http://www.json.org

Diseño de bases de datos
http://dev.mysql.com/doc/
http://www.mongodb.org/

Ingeniería de sistemas seguros
https://www.owasp.org/index.php/…

Cada programador debe tomar un curso de diseño y usabilidad. Es absolutamente esencial. En el pasado, creamos aplicaciones exclusivamente para empresas y profesionales de software. Las largas curvas de aprendizaje fueron aceptables. Un servicio de transmisión de video para mi abuela debe ser bonito, intuitivo y fácil de usar.