¿Es una mejor idea aprender 15 tecnologías a un nivel básico o enfocarse en una sola tecnología a la perfección?

Depende de si te gusta el trabajo en equipo o no. Más precisamente, depende de si se trata de contenido relacionado con las API de caja negra entre usted y el lugar de donde provienen sus datos y adonde sea que vayan.

Personalmente, me gusta ver el panorama general, por lo que si el trabajo es dibujar un gráfico de temperatura dentro de su navegador web, quiero saber que esto comienza con:

  1. componente del sensor conectado a un microcontrolador (C) sobre I2C,
  2. pasa a través de CANBus a otro microcontrolador (C) con soporte de Ethernet
  3. Pasa a un SBC (Single Board Computer – un poco como una Raspberry Pi) (Python)
  4. pasa a un motor de análisis de datos en Linux con PostgreSQL (Python)
  5. Pasa a una aplicación de servidor web ASP.NET Core (C #)
  6. Pasa a una aplicación web Angular 2 (TypeScript)

Si no entendiera todas esas tecnologías hasta el punto de poder corregir errores en cualquier punto de la cadena, entonces me molestaría. Eso no significa que escriba todo el código, solo significa que me gusta tener la suficiente familiaridad para entenderlo todo. No quiero trabajar en un gráfico de TypeScript y escuchar a alguien sugerir que mueva el sensor a diferentes pines de entrada en el microcontrolador sin tener una idea sólida de las consecuencias para el sistema en general. Con lo que puedo vivir es no ser un experto en esto.

Es mejor resolver los problemas a medida que surjan.

No muchas personas se limitan a seguir un plan durante años. Cambiarás de opinión, usarás diferentes tecnologías, probarás cosas nuevas. Tan fácil como suena decir “aprende programación de Python”. Te encontrarás con artículos que dicen “fuck Python learn java” y “google solo usa java”. Y ahora probarás Java. O incluso diferentes marcos web, clientes de bases de datos, arquitecturas de aplicaciones o empresas de alojamiento.

Los mejores ingenieros tienen cicatrices de batalla. Hemos usado tecnologías que odiamos y apenas conocemos. Hemos utilizado proveedores de alojamiento que nunca has escuchado. Hemos probado nuevos idiomas y hemos pasado tiempo en ellos solo para lamentar el tiempo perdido y nunca volver a leerlo. Leímos los primeros capítulos de un libro de texto sobre aprendizaje automático avanzado y nos rendimos.

Se trata de hacer crecer tu pasión. Déjate enamorar de los proyectos de construcción. Aprenderás idiomas que no necesitas y marcos con fallas importantes. Seguro que querrás un montón de pan y mantequilla para conseguir un trabajo lo más rápido posible, pero no entenderás el análisis que hay detrás, solo entenderás la tecnología que estás usando. Algunas personas se quedan con Python toda su vida. Bien por ellos, no hay nada malo en ello. Me gusta probar cosas nuevas, así que hago eso mucho. Todos somos diferentes, pero una cosa que todo ingeniero tiene en común es que nos encanta hablar y debatir sobre la mejor manera de hacer las cosas. Todos tomamos un camino diferente.

Explora las nuevas tecnologías. Amo los que te gustan. Aprende de los que no. Deja que tus intereses te encuentren, no te obligues ciegamente a seguir un camino.

Como ya se ha dicho, realmente depende de lo que quieras hacer. Pensé que quería ir a la construcción de compiladores y optimizaciones de bajo nivel en la universidad. Luego me di cuenta de que las cosas eran realmente aburridas (para mí) y me costó mucho esfuerzo con comparativamente pocas recompensas reales.

Me topé con el desarrollo web a través de un compañero de habitación y me encantó porque hubo un bucle de retroalimentación instantánea. Nunca he mirado atrás desde entonces. He agregado más y herramientas a lo largo del camino, pero todas están relacionadas con mi enfoque central del desarrollo web de back-end. No debería sorprender a nadie que soy competente en PHP, MySQL, HTML, CSS y Javascript, y varios de los marcos comunes para PHP, Javascript y CSS.

Tengo un poco de experiencia con .NET, C ++ y algunos otros lenguajes como Lisp, Prolog y Haskell, pero nada profesional. Dicho esto, la experiencia en esos idiomas se puede aplicar directamente a lo que hago en mi trabajo diario.

Si desea trabajar en microprocesadores, o cualquier cosa que cierre el hardware, querrá enfocarse en lenguajes como Java y C y realmente aprender esos lenguajes de adentro hacia afuera.

Elija su enfoque y empuje en la dirección. Si sientes que estás en un callejón sin salida, elige un nuevo enfoque y comienza de nuevo. La experiencia de cada incursión será invaluable a largo plazo.

Depende de cuáles sean sus intereses y requerimientos. No hay mejor, solo diferentes conjuntos de habilidades para diferentes trabajos.

Hay ingenieros de sistemas como yo, que son una combinación de todos los oficios y saben un poco acerca de 15 cosas, o hay tecnólogos realmente profundos que realmente conocen las profundidades de su dominio.

Algunos trabajos, como los ingenieros de sistemas requieren, conocimiento variado

Algunos trabajos, como, por ejemplo, un ingeniero de software de controladores de dispositivos, requieren un conocimiento profundo del dispositivo y de los aspectos internos del O / S en particular (Windows, Linux, OSX)

En mi experiencia, llegar a ese nivel de “perfección” en una tecnología requiere varias disciplinas. Eryk también lo golpeó en esa nota. Por ejemplo, como un ingeniero de control uno:

  1. Ser capaz de escribir e interpretar código PLC (posiblemente lógica de escalera o un lenguaje de texto estructurado).
  2. Tenga un fuerte sentido de la aptitud mecánica, ya que para controlar una máquina debe comprender cómo funciona.
  3. Tiene la capacidad de generar programas para mover datos, como métricas de compilación, tanto a usuarios finales como a otras aplicaciones / servidores para procesar. Eso puede estar basado tanto en Windows como en Linux.
  4. Comprensión completa de la electrónica y los sistemas eléctricos, como las unidades de CA y CC, los controles del motor, la robótica si es necesario, las tecnologías de código de barras y RF, etc. Hay una gran cantidad de sensores con los que uno debe estar familiarizado en su uso adecuado y cómo configurar y programar.
  5. Buenas habilidades técnicas de escritura.

Mantén las cosas simples y diviértete aprendiendo. En el momento en que domines, tendrás varias habilidades útiles en tu haber.

¡jaja! El viejo dilema: ¿Mejor saber algo sobre nada o nada sobre nada?

Probablemente termines con algo en el medio. ¿Ese “medio” es igual a 15? Depende de lo que necesites hacer y de lo que esté a tu alrededor.

Encuentre un negocio central, encuentre su campo de aplicación, luego conozca los detalles de su negocio central y los conceptos básicos de todos los campos que aplica. Esto nos permite escuchar y hablar con sus “clientes” y, de manera progresiva, moverse a un campo diferente a lo largo de su vida.

Ninguno.

Si aprendes 15 tecnologías, serás una mierda con 15 cosas.

Si intentas aprender una cosa a la perfección, fracasarás, nunca lograrás la perfección .

Sólo tienes que aprender a escribir software, software real real.