He sido desarrollador de software durante más de 6 años y aprendí 5 lenguajes de programación pero no domino ninguno de ellos, ¿debería centrarme solo en un idioma?

Si 6 años de desarrollo de software no pudieron enseñarle que el lenguaje de programación tiene muy poco que ver con ser un buen ingeniero de software, no sé qué lo hará.

Solo tengo alrededor de 2 años de experiencia antes de lo cual no tenía idea de qué es el lenguaje de programación y cómo funciona, todo lo que sabía era un poco de lenguaje ensamblador, pero a partir de ahora puedo decir con seguridad que me das internet o buen libro de cualquier idioma y puedo ser bueno en menos de un mes. No diré maestro en eso, ser maestro en algo lleva toda la vida.

Lo que quiero decir es que no se centre en el lenguaje, sino en la tecnología. Puede elegir la nube, la ciencia de datos, el desarrollo móvil (android, ios), la inteligencia artificial, el aprendizaje automático o cualquiera de estos e intentar dominarlos.

Si yo fuera usted, me importaría menos mi conocimiento sobre algún idioma. Aprender un idioma es fácil si tienes recursos, la tecnología de aprendizaje no.

Olvídate de “dominar” un lenguaje de programación. Si ha sido desarrollador durante más de 6 años, debe ser razonablemente competente en algunos de estos idiomas. Eso es lo suficientemente bueno. Deje que su trabajo y su carrera dicten en qué idioma (s) obtener más experiencia.

Entonces, aquí está mi lista de áreas en las que los estudiantes deben estar pensando:

* ** Los próximos mil millones de clientes **: La revolución de TI probablemente ha llegado a mil millones de personas en el mundo hasta ahora. En los próximos 5 años, alcanzará los próximos mil millones. Estos serán un conjunto muy diferente de personas. Muchos de ellos serán analfabetos, por lo que debe centrarse en interfaces que no sean de texto ni en inglés: video, animaciones, reconocimiento de voz. Busque “English Seekho” para tener una idea de lo que quiero decir. La mayoría no tendrá dinero ni electricidad para las computadoras, por lo que los dispositivos móviles prevalecerán, por lo que debe comenzar a jugar con plataformas móviles como Android. En general, busque “los próximos mil millones” y encontrará material interesante elaborado por personas como Nokia y MIT, que le dará ideas sobre en qué concentrarse.

* ** Usabilidad **: a medida que TI toca la vida de más y más personas, cada vez menos serán “conocedores de la computadora”, y cada vez menos verán los dispositivos informáticos como algo que necesita ser aprendido. En consecuencia, los productos que tendrán éxito serán los que sean fáciles de usar. Y hacer que algo sea fácil de usar es bastante difícil. Es una subdisciplina de la informática, y hay mucha teoría y un montón de algoritmos y prácticas bien definidos que puedes usar para hacer que las cosas sean fáciles de usar. Toda el área se llama HCI (interacción hombre-computadora (interacción hombre-computadora – Wikipedia)), y UCD (diseño centrado en el usuario (diseño centrado en el usuario – Wikipedia)) es parte de ella. Es un área con la que debes estar familiarizado

* ** Fundamentos de Ciencias de la Computación **: Esto nunca pasará de moda, y sí, cuando miro a los estudiantes que salen de nuestras universidades, este parece ser un área bastante descuidada. Demasiado énfasis en lenguajes de programación específicos (lenguaje de programación – Wikipedia), y “tecnologías” específicas es un error. Independientemente de lo que depare el futuro, conocerá la teoría básica de las ciencias de la computación. Aprenda estructuras de datos y algoritmos. Si no tiene una estructura de datos favorita (Estructura de datos – Wikipedia) y un algoritmo que le parece hermoso, entonces su educación en informática está incompleta. Si, después de ver un algoritmo, su primer pensamiento no se trata de la complejidad del algoritmo (O (n), O (log n), etc.), entonces necesita volver a sus libros. Si solo aprendió Java y C #, y realmente no comprende los punteros, los montones, las pilas, tarde o temprano estará en desventaja. Comprender los conceptos básicos. Y mientras lo hace, también aprenda matemáticas y estadísticas.

* ** Habilidades de presentación **: Esta no es una habilidad de informática, pero es una de las habilidades más importantes que los estudiantes de informática no tienen. Debe tratar la presentación como igualmente importante o más importante que su programa, diseño y algoritmos. Y debe pasar tanto tiempo aprendiendo presentaciones (de libros, en clases y en la práctica) como dedicando a lenguajes de programación y materias de informática. Estoy seguro de que no lo ha hecho, de ahí este artículo en mi lista. Debes saber cómo escribir bien. No solo documentos y documentos, sino mucho más importante, correos electrónicos y publicaciones en blogs, publicaciones en paredes de Facebook y tuits. Debe pensar en lo que el usuario / lector / cliente quiere saber (en lugar de lo que sabe y quiere decir). Y, por supuesto, debes saber hablar bien. Cómo contar una historia en lugar de enumerar algunos hechos arcanos sobre tu trabajo. Cómo dejar de lado cosas que te parecen extremadamente interesantes, pero que el oyente no.

* ** Economía **: Scott Adams (Scott Adams – Wikipedia), el creador de Dilbert dice: “Cuando tienes un conocimiento práctico de economía, es como tener un súper poder leve”. Básicamente, si entiendes los fundamentos de la economía , puede ver y comprender lo que impulsa a las personas y las tecnologías y el éxito y el fracaso mucho mejor que las personas que no lo entienden. Odiaba el hecho de que me hicieron estudiar economía en IIT para mi curso de informática. Parecía una completa pérdida de mi tiempo. Ahora, mirando hacia atrás, creo que probablemente fue el curso más importante.

No se olvide de seguir -> CodingLio: aprenda a programar con profesionales

No ha habido un tiempo desde que he estado trabajando en el que puedas aprender solo una sintaxis. Siempre hay un lenguaje de control de trabajos, o un lenguaje de script de Shell, o un lenguaje que obtiene datos de un almacén de datos que necesitan ser aprendidos.

Lo dividiría en dos categorías. Los idiomas en los que te han enseñado o has aprendido es el primero. La segunda categoría son los idiomas que has atrapado. Por atrapado quiero decir que no fue una decisión estratégica de tu parte, sino algo que necesitabas tácticamente para resolver un problema en particular o debido a una tecnología que lo requería.

Hay tres áreas que son estratégicas porque conocerlas lo ayudará con muchos otros idiomas que necesita aprender.

Primero, un lenguaje de interfaz de usuario de front-end que es impulsado por eventos. Como es el lenguaje del navegador web, diría JavaScript. Nota. La sintaxis no es lo más importante. Pero, para acostumbrarse a trabajar con una interfaz de usuario y con un modelo basado en eventos.

Segundo, un nivel medio, lógica de negocios, (lenguaje principal). Esto podría ser C # si está orientado a MS o Java si desea ir en esa dirección. C ++ encaja aquí. Quizás PHP etc.

Tercero, un lenguaje que introduce y saca datos de un almacén de datos de algún tipo. Sugeriría SQL porque sigue siendo el más destacado. Pero si quieres aprender el HQL que usa Hibernate, está bien. También está bien usar la sintaxis utilizada para Mongo para el tipo de trabajo de consulta ad-hoc.

Recogerá nuevas sintaxis para las secuencias de comandos, tratará con datos, expresiones generales, análisis y una serie de actividades diferentes a lo largo de su carrera. Pero muchos de estos son muy similares entre sí, o puede evitarlos con materiales de referencia.

Si ha estado trabajando como desarrollador de software durante seis años y todavía piensa que los lenguajes de programación son una parte importante del problema, no ha aprendido mucho de su experiencia.

Concéntrese en solo dos idiomas: Python y C #. Domínalos y puedes hacer casi todo con ellos

UH no. En todo caso, podría, en el campo del idioma, planear exponerse a los lenguajes funcionales. Ser maestro de un idioma (por el bien de él) puede convertirse en un lastre cuando te enfrentas a una plataforma / entorno / problema para el cual tu herramienta de elección no encaja.

¿Está trabajando para alguna empresa o tiene un trabajo estable? En caso afirmativo, tendrá que programar de acuerdo con su empleador. Si no tiene trabajo, puede programar uno o dos lenguajes de programación comunes. Depende de lo que desee para hacer. uso bash para la aplicación del sistema, java para android y javascript para algunas aplicaciones y se necesita javascript para desarrollar web o pirateo … etc. sé cómo programar C, java pero no los uso. Entonces, en mi mente, siempre tengo la sintaxis bash y la sintaxis javascript porque son comunes y universales.

Debe centrarse en dominar las soluciones a los problemas mundiales, no las herramientas en sí.

More Interesting

¿Dónde está el mejor lugar para comenzar su carrera de ingeniería de software, lugares como Facebook, Google y Microsoft o una startup bien financiada?

¿La introducción de herramientas de programación informática más sofisticadas reducirá la necesidad de conjuntos de habilidades de matemáticas e informática para la mayoría de los puestos de TI?

¿Puedo ser productor musical, diseñador gráfico, artista de efectos visuales y desarrollador de software al mismo tiempo?

¿Cuáles son algunos problemas en astronomía que podrían resolverse (pueden ser resueltos fácilmente por los astrónomos) mediante el uso del software adecuado, pero no hay ningún software que los ayude?

¿Cómo es la transición de Stanford a la ingeniería de software en South Bay?

¿Es esencial una alta 'inteligencia emocional' para ser un buen gerente de ingeniería?

¿Cómo evitar o lidiar con frustrarse mientras se programa?

Como desarrollador de software, ¿cuáles son los 5 libros que deben leerse?

¿Qué software se convirtió en un software fallido en 2016?

¿El administrador de sistemas tiene un problema de imagen?

¿El certificado NIIT me ayuda a lograr mi sueño de convertirme en ingeniero o desarrollador de software?

¿Cuáles son las mejores formas de escribir blogs de desarrolladores de software?

¿Cómo hace Google las pruebas de integración?

¿Cómo se ve un algoritmo de código? ¿Qué es lo que necesita saber para poder hacerlo cuando esté programando?

¿Cuáles son las diversas propiedades de corrección de los modelos de software que se verifican con mayor frecuencia durante la verificación del modelo?