Ingenieros de software son una moneda de diez centavos
Así que necesitas hacerte un nicho para ti mismo. Nicho donde hay menos expertos y más por hacer. Tales nichos existen en la especificación y el diseño de un buen software. Cualquiera puede escribir código. Demasiados pueden escribir buen código. Pocos pueden diseñar sistemas grandes y complejos que resuelvan un problema empresarial real. Así que estas pocas personas con habilidades de diseño están en demanda.
La experiencia en el dominio siempre es extremadamente valiosa. Ser un experto en dominios significa que usted también comprende los aspectos internos de los procesos de negocios. Y esto le permite cerrar la brecha entre los negocios y la ingeniería.
La diferencia a la que me refiero es cuando su Gerente de Producto dice “Quiero una interfaz de usuario fluida y eficaz” y usted puede traducir eso a especificaciones reales. ¿Son 2 segundos suaves para tu usuario? ¿Su usuario necesita 10 ms lisos? Tienes una aplicación de chat, entonces 10 ms suave es mejor. Usted opera una herramienta de inteligencia empresarial, entonces 1 segundo está bien. Necesitas conocer tu dominio y tus usuarios para decidir esto.
- ¿Qué es un buen paquete para mantener 21 lkh en Hyderabad o 23 lkh en Pune?
- ¿Por qué a algunos hombres blancos no les gustan las mujeres asiáticas en TI?
- ¿Por qué los indios nunca pagan por software o servicios?
- ¿Qué cursos de tecnología de la información debo hacer en mi segundo año de ingeniería?
- Cómo obtener una pasantía en TI cuando no tengo experiencia o excelentes calificaciones
Ambos estos te hacen un activo. Un activo indispensable ya que aprender el dominio o ser bueno en el diseño requiere tiempo, esfuerzo y práctica.
No hay “Aprende a diseñar sistemas de software en 24 horas”
En cuanto a mi desarrollo personal hago lo siguiente.
- Desarrollar habilidades de resolución de problemas. Ser capaz de tomar un problema más grande y romper en pedazos pequeños, luego resolver los pedazos y juntarlos. Ser capaz de diseñar una solución antes de implementarla.
- Buena comunicación. Necesita explicar a los demás (tomadores de decisiones en su empresa) sobre lo que está haciendo.
- Listo para aprender cosas nuevas. Aprender nuevos paradigmas como la programación funcional. Lea sobre patrones de diseño y diseño de software a gran escala. Aprende al menos unos pocos idiomas. Mi selección sería C (para saber cómo funcionan las cosas), Java (para trabajo), Scala (para programación funcional), JavaScript (para asíncrono y funcional)
- Adáptate a lo que quieras para trabajar. Es posible que tenga que hacer UI y Back-end y Base de datos todos juntos.
- Un poco de algoritmos y estructuras de datos , solo lo básico, los implementados en JDK son suficientes para la mayoría de los casos.
- Aprende de los demás. Lee blogs de programación, mira proyectos de github.
- Responda y ayude a sus compañeros en la oficina y en quora o stackoverflow.
- Conscientemente dedicar tiempo al aprendizaje. Establezca algún tiempo fuera de su horario para esto.
- Amas lo que haces. Si no te gusta, entonces no irás lejos.
- Habilidades matematicas.
- Aprendizaje automático y IA.