Para alcanzar el dominio, ¿deberían los desarrolladores de software invertir tiempo en comprender profundamente el lado del hardware de las cosas?

Entiende, sí. Profundamente, no.

Sin duda es útil, pero también lo son muchos campos adyacentes. Si vas demasiado lejos por el agujero del conejo del hardware, te estás tomando el tiempo para aprender otras cosas más relevantes. Por ejemplo: seguridad, manejo de datos, HCI y UX, lenguajes de programación (el campo, no lenguajes específicos), usabilidad, redes, lenguajes y tecnologías específicos, tendencias y estándares, pruebas, etc. La informática no es una pila directa con hardware en la parte inferior y aplicaciones web en la parte superior: es un árbol con muchas ramas. En mi humilde opinión, un buen ingeniero de software tiene un poco de conocimiento práctico en todos ellos, y un conocimiento más profundo en los pocos que le interesan particularmente.

La pregunta es dónde dibujar esa línea. Diría que definitivamente quieres una comprensión más profunda que la persona promedio, pero no tan profunda como la de un ingeniero eléctrico. El lugar en el que dibuja esa línea depende exactamente de cuánto le interese esa área. Personalmente, sé más EE que cualquier otro no ingeniero que conozco, pero ni siquiera puedo seguir la conversación cuando se pone muy física o cuando hablamos de la industria. Estoy feliz con ese nivel. Nunca he necesitado más para el trabajo, y siempre puedo encontrar a otra persona de ojos brillantes que no esté interesada en hablar de eso cuando mis tontos amigos se meten en un bar.

¡Buena suerte!

Al entenderlo profundamente, creo que la principal ventaja es darse cuenta de que la Ley de Moore no es para siempre, y con la tasa actual de crecimiento de datos, es mejor que empiece a prestar atención a la eficiencia. Lo mismo ocurre con las aplicaciones móviles: por ejemplo, ¿debe “manchar” su computación con el tiempo, o amortiguar y explotar, al optimizar la duración de la batería?

De lo contrario, no creo que entender cómo funcionan los Transistores de efecto de campo, por ejemplo, te ayudará mucho con tus programas de Python. Pero, ¿puedes realmente evitar que lo aprendas? ¿No tienes curiosidad?

Alguna vez fue útil comprender las limitaciones físicas de cosas como los dispositivos de almacenamiento. Quizás no sea la teoría electrónica, solo características físicas, como la velocidad y los aspectos mecánicos.

Saber acerca del movimiento de la cabeza del disco fue más importante hace años. Mi primer trabajo en los años 70 fue evitar que las fuentes de disco en una pequeña mini computadora de 16 usuarios temblaran tanto. Se calentaron y el rendimiento sufrió largos tiempos de búsqueda. Me buscaban en casa para entrar y reiniciar el sistema cuando el procesamiento MRP se congelaba. Los discos de disco físicos de 5 MB eran del tamaño de pizzas.

Solucioné el problema moviendo el archivo maestro de piezas a un disco diferente del archivo de lista de materiales. Esto fue mucho antes de SQL, por lo que tuvimos que mantener los índices y punteros en nuestro código y, a veces, depurarlos a mano.

Aprendí sobre el impacto en el rendimiento de pedirle a un dispositivo mecánico que funcione en sus límites y el valor de colocar archivos de índice y datos en diferentes dispositivos físicos.

No tenía que saber CÓMO funcionaban en circuitos, o la teoría electrónica, solo que pedir datos requería un cabezal de disco para moverse.

Como conductor de automóviles, me resulta útil tener una comprensión general de cómo funcionan los diversos componentes mecánicos del automóvil. ¿Necesito saber cómo construir (o incluso mantener) un vehículo para ser un conductor competente? … no.

Si está desarrollando software en el extremo superior de la capa de la aplicación, la ingeniería eléctrica es más curiosa que útil.

No creo que la ingeniería eléctrica / física ayude mucho, pero comprender cómo funcionan los microprocesadores y los cachés puede ayudar en algunas situaciones. Por lo general, si desea maximizar el rendimiento o comprender problemas de subprocesos múltiples. Especialmente en el entorno multi core de hoy.

More Interesting

¿Eres capaz de obtener un trabajo de desarrollador de software a tiempo completo después de terminar un bootcamp programador?

¿La reutilización en el desarrollo de software es una broma?

¿Por qué un empleador debería preferir un matemático a un desarrollador de software para algunas tareas de programación?

¿Qué empresas ofrecen buenos servicios de desarrollo de software financiero y contable para grandes empresas?

Como persona técnica, ¿cuál es tu reacción cuando escuchas la frase "No es lo que sabes, es a quién conoces"? ¿Te hace repensar tu camino de desarrollo personal y alterar tus planes sobre temas en los que deseas estudiar o especializarte?

Cómo saber si sería un buen desarrollador de software

¿Qué puedo hacer para demostrarme que soy un gran desarrollador de software?

¿Cómo te convertiste en un desarrollador de software independiente?

¿Qué debo hacer para ganar experiencia en PL / SQL?

¿Cuál es la proporción de horas hombre entre el desarrollo y las pruebas de software?

¿Cuáles son las opiniones de los desarrolladores / programadores / diseñadores de software o aplicaciones profesionales sobre la piratería de software?

¿Pueden los programadores principiantes escribir código limpio?

¿Cuál es el ingreso por hora que obtienen la mayoría de los desarrolladores de software independientes?

¿Es cierto que debería "fingirlo hasta que lo sepa" cuando solicito un trabajo de desarrollador de software que requiere habilidades que no conozco?

¿Qué actividades extracurriculares puede hacer un desarrollador de software para aumentar su currículum y aumentar el valor de mercado?