¿Cuáles son las habilidades transferibles en la programación de computadoras?

A continuación hay algunos que puedo extraer de la parte superior de mi cabeza:

  1. Estructura de datos y fundamentos del algoritmo : es una buena idea tener una idea completa de esta área. Incluso si no puede utilizar muchos de los conceptos en su trabajo diario, vale la pena invertir tiempo en aprender matices de básicos a intermedios. Estos fundamentos están por encima de los idiomas y han seguido siendo importantes mientras los idiomas han ido y venido. Personalmente, aprender las complejidades de las estructuras de datos me ha convertido en un mejor programador. Para moverse en la industria de la tecnología, no tiene más remedio que obtener un buen dominio de esta área.
  2. Conceptos de programación distribuida : los datos son el nuevo recurso. En lugar de agotarse, solo aumentará con el tiempo. Para que las aplicaciones funcionen con una gran base de usuarios y una gran cantidad de datos, la informática distribuida es la clave. Aprender estos conceptos lo mantendrá por delante de la multitud general que se enfoca en solo herramientas. Una vez que tenga una sólida comprensión de los conceptos de computación distribuida, puede aprender herramientas fácilmente. Por lo tanto, le sugiero que invierta algo de tiempo en esta área.
  3. Domina dos idiomas : elige un idioma de cada mundo, dinámico y estáticamente escrito. Además de estos, también debe ser un experto en estilo de programación imperativo y funcional. Me encantan los idiomas como Scala, que ofrecen lo mejor de ambos mundos (mientras están mecanografiados estáticamente). Si está familiarizado con Java, domínelo junto con Python o Ruby en el otro lado. La sabiduría proviene de la experimentación. A menos que experimentemos mundos diferentes, no podremos apreciar la belleza en la diversidad. Además de mantenerlo ’empleable’, ayudará a diversificar tanto su habilidad como su experiencia.
  4. Fluidez en moldear pensamientos para codificar : esto es absolutamente esencial. Las ideas son baratas, la ejecución es importante. Incluso podemos ir un poco más allá y decir que “la ejecución RÁPIDA es importante”. Así que codifique tanto como pueda en los dos idiomas anteriores. No hay mejor habilidad para lograr en el mundo de la computación, que ser un codificador competente. Si los proyectos relacionados con el trabajo no son interesantes, comience su propio proyecto, escriba el código y publíquelo en GitHub.
  5. Aprenda a codificar en colaboración, publique proyectos en GitHub : el software de código abierto está aquí para quedarse. Abraza y contribuye a ello. Aprenda el sistema de control de versiones distribuido como Git. Contribuya a proyectos de código abierto o publique sus propios proyectos en GitHub.
  6. Aprenda a expresar sus pensamientos de manera efectiva : esto puede no estar directamente relacionado con las habilidades de ‘programación de computadoras’, pero es importante. Mientras trabajas, interactuarás con muchas personas en todos los equipos. Poner sus pensamientos frente a los demás de manera efectiva es tan importante como convertirlos en código.

Habilidades transferibles:

– Capacidad para definir el problema de un negocio específico en una situación particular, comprender y expandir los elementos de amplia generalidad que se pueden aplicar en otros negocios, y desarrollar los casos de uso que resuelven el problema específico de la misma manera que se puede aplicar la herramienta desarrollada. al caso más amplio.

– Las arquitecturas de E / S de computadora y las API como puntos de cuello de botella combinados con la construcción inteligente de consultas basada en la verdadera comprensión del problema comercial a resolver … para minimizar los requisitos para atravesar estos cuellos de botella con el mínimo, pero suficiente conjunto de datos para procesar la investigación y / o el negocio problemas.

– Cómo comunicarse con los simples mortales que no entienden las herramientas técnicas disponibles para usar, ni las limitaciones técnicas que limitan el uso de aplicaciones, datos y plataformas en la solución de problemas prácticos. No importa cuán inteligente / experto / capabe el geek, la incapacidad de permanecer en la discusión hasta que el problema se acuerde mutuamente y se resuelva a través de la aceptación reflexiva del usuario, dicho geek también puede ser un simple mortal.

Tom

En primer lugar, creo que estás algo equivocado. Puedes dominar un lenguaje de programación. No creo que pueda, ni quiero hacerlo, pero ha habido personas que saben mucho acerca de un idioma en particular (Jon Skeet -> C #). Sin embargo, creo que hay muy poca ventaja real en eso.

De todos modos, la respuesta a su pregunta para 5,10,15, 20 y posiblemente los próximos 100 años de programación de computadoras es esta:

La habilidad más transferible, la habilidad que siempre te distinguirá, es la capacidad de comunicarte bien con los demás. Para poder escuchar y comprender y también para ser entendido. Tanto verbalmente como en comunicación escrita.

Si estás leyendo esto y dices, espera, ¿qué? Quiero ser un programador de computadoras No quiero hablar con la gente, entonces me temo que tengo que venderte una pequeña decepción aquí.

Aunque, ciertamente puedes ser una programación de computadora y sentarte en tu cubículo y golpear tu computadora y hacer lo que te digan si eso es lo que quieres. Pero tengo que decir que descubrirá que la vida se vuelve muy vieja (o tiene muy poca motivación personal).

Sin embargo, si desea crear software para las personas y no ser marginado como algún tipo de código mono, entonces debe participar en el proceso. Parte de ese compromiso es comunicarse con gerentes, otros desarrolladores, clientes, analistas de negocios y jefes. Tendrás que convencer a la gente de que te contrate, convencer a la gente de que tus ideas son buenas y evitar que la gente cometa errores estúpidos (muchas veces, como todo el tiempo).

Así que mi mejor y más sincero consejo para ti es que si quieres hacer una carrera de esto, entonces necesitas aprender a comunicarte de manera más efectiva.

Esto no quiere decir que debas convertirte en alguien que habla de un gran juego pero no puede cumplir. No importa lo bueno que seas en algo si no eres capaz de explicar o convencer a la gente de que eres.

Y es la habilidad más transferible del mundo.

More Interesting

¿Cuáles son las ventajas de trabajar como ingeniero de software en TCS?

¿Qué habilidades necesitarías para ser un ingeniero de software decente más allá de simplemente conocer la programación / sintaxis?

Tengo 28 años, me gradué en ciencias sin un MBA y trabajo en un banco. ¿Hay alguna posibilidad de convertirse en ingeniero de software?

¿Ha perdido la industria de TI el encanto con el que estaba asociada anteriormente?

Como estudiante universitario de ciencias de la computación y aspirante a ingeniero de software, ¿vale la pena actualizar a un MacBook Pro?

¿Cómo adquiere experiencia un desarrollador web en diseño UX, diseño de interacción, arquitectura de información y disciplinas relacionadas en el área de Nueva York?

Cómo aprender la interfaz de la computadora del cerebro como ingeniero de software

¿Pueden los ingenieros / programadores / ingenieros de software / ingenieros mecánicos hacer artes marciales (sin que esto afecte sus habilidades mentales)?

Cómo encontrar un Tutor de Algoritmo que me haga un buen Ingeniero de Software

Como ingeniero de software junior, no soy fuerte con ningún lenguaje de programación fuertemente tipado. ¿Es esto un problema?

¿Sabes cómo revertir los cambios en SublimeText en un archivo cerrado?

¿Puedo ser ingeniero de software si tardo en comprender las cosas?

¿Qué capacitación / calificaciones se pueden obtener durante la carrera como ingeniero de software después de la universidad?

¿Podría literalmente alguien convertirse en ingeniero de software y hacer 6 figuras?

Cómo verificar si un archivo es ransomware o no