Veo la diferencia entre el programador y el ingeniero de software análoga a la diferencia entre un técnico y un arquitecto.
Un personal de mantenimiento sabe cómo hacer las cosas y tiene las herramientas para hacerlo. Sin embargo, el personal de mantenimiento está especializado. Un personal de mantenimiento en general puede hacer la mayoría de las cosas en la casa a menos que sea algo relacionado con plomería, calefacción, refrigeración o electricidad. Si necesita algo de fontanería, calefacción, refrigeración o electricidad, debe llamar a un técnico, que es más o menos un técnico especializado que ha aprendido las herramientas para reparar / mejorar ciertos sistemas complicados.
Un arquitecto, OTOH, tiene el conocimiento de todos los sistemas de la casa. Él / ella puede construir todo por sí mismo, aunque no lo hará. El arquitecto tiene la habilidad de comprender sus necesidades y traducirlas en ideas que pueda usar. El arquitecto no solo se preocupa por construir una casa para usted. Él / ella también se preocupa por cómo la casa interactúa con tu vida. ¿Que necesitas? ¿Qué necesitan tus hijos? ¿Cómo afecta su hogar a su vida laboral? ¿Cómo afecta tu vida social? ¿Cómo se adapta a tus pasatiempos? El arquitecto también sabe cómo hacer lo mismo de múltiples maneras, y puede elegir entre ellas. El arquitecto también se mantiene actualizado con las últimas herramientas y tecnologías, y se capacita en esas tecnologías. Y para mantenerse al tanto de los nuevos cambios, el arquitecto debe tener el conocimiento central de la ciencia detrás de las herramientas y tecnologías. Esto lo ayuda a aprender cosas nuevas más rápido. Esperas que el arquitecto sepa las mismas cosas que sabe el personal de mantenimiento, pero a un nivel más profundo de abstracción
- ¿Cuánto tiempo se tarda en ascender a ingeniero de software iii en Amazon?
- Cómo acercarse a colegas al cambiar su código
- ¿Cómo es trabajar en Oracle como ingeniero de software?
- Tengo 24 años y soy brillante sin experiencia en programación, ¿es posible convertirme en un ingeniero de software excepcional y bien pagado en los próximos 10 años?
- Soy ingeniero de software, pero ahora tengo una cuenta de GitHub y no tengo nada que poner. ¿Qué cosas puedo desarrollar para mostrar mis habilidades de codificación?
En pocas palabras, el arquitecto va más profundo y más amplio que el personal de mantenimiento. Él / ella no solo conoce las cosas con un mayor nivel de detalle, sino que él / ella se encarga de comprender las cosas más allá de la tarea actual. Esto le permite al Arquitecto trabajar con mucha confusión. Cuando las cosas no están claras, las deja claras. El personal de mantenimiento sería más o menos, “dime qué hacer, lo haré”. El personal de mantenimiento sabe cómo hacer las cosas. El arquitecto debe saber cómo hacer las cosas.
Del mismo modo, un programador debe tener la capacitación técnica para hacer el trabajo. Puede que se especialice en una tecnología de nicho (desarrollo web, base de datos, big data, bla, bla), pero es de esperar que el programador haga un trabajo con objetivos bien definidos. Dales requisitos y diseño; ellos saben cómo usar las herramientas / tecnologías. Deberían poder descifrar el código.
Un ingeniero de software, OTOH, debería poder ser mucho más amplio y profundo, y también lidiar con mucha confusión. Él / ella debería poder describir cómo funciona cada parte del sistema, y debería ser capaz de describir con un nivel de detalle más bajo. Al mismo tiempo, el ingeniero de software debería ser capaz de lidiar con los requisitos difusos. Debe saber cómo solicitar aclaraciones para que las necesidades del usuario puedan traducirse en algún tipo de idea de trabajo. El ingeniero de software debe poder capacitarse en nuevas tecnologías. El ingeniero de software debería preocuparse por cómo interactúa el sistema que se está construyendo dentro de su ecosistema. Debes poder pensar en Rendimiento / Integeración / Seguridad / Estabilidad. El ingeniero de software debería poder responder por qué las cosas se hacen de cierta manera
El problema está en la industria de TI, el ingeniero de software no existe (o existe, se llama Arquitecto y, a veces, se coloca en una torre de marfil). Y el programador puro tampoco existe. La mayoría de las personas que tienen títulos de TI tienen algún tipo de capacitación que los convierte en ingenieros. Se les da el conocimiento de la ciencia central detrás de la informática para que puedan capacitarse aún más. Sin embargo, los trabajos de programación junior los usan como programadores. Entonces, tienden a perder toda la capacitación y comienzan a llamarse a sí mismos como programadores. Cualquiera que se considere un programador está mirando las cosas de manera incorrecta. Tu trabajo no es programar. Tu trabajo es resolver problemas. Y resolver problemas es una función de ingeniería
Esta es la cosa # 1 que me frustra sobre los jóvenes en la industria de TI. A muchos de ellos se les ha hecho creer que su trabajo es programar. No No No No. No necesitamos programadores. Necesitamos ingenieros que puedan resolver problemas. Si está resolviendo problemas y puede trabajar con ambigüedades para producir una idea que funcione, entonces usted es un ingeniero, no un programador. No tengas miedo de llamarte ingeniero
Sí, en última instancia, los títulos no importan. La actitud importa. La actitud de que las personas que trabajan con código son programadores lleva a la idea de que deben recibir requisitos perfectamente escritos, con un diseño perfectamente hecho, y si no los tienen, entonces se sentarán en sus manos. Esta actitud es la cosa # 1 que frena a la mayoría de los desarrolladores jóvenes. Lo que necesitamos son personas capaces de decirme, decirme lo que necesita, y se me ocurrirán algunas ideas. Esa es una mentalidad de ingeniería.