¿Qué áreas de especialización dentro de la programación recomendarías a un principiante? [cerrado]

StackOverflow https://stackoverflow.com/questions/17320

  •  08-06-2019
  •  | 
  •  

Pregunta

Soy un estudiante de desarrollo de software y creo que la programación, en general, es un tema demasiado amplio para intentar saberlo todo.Para ser competente, debe decidir en qué áreas centrar su aprendizaje y comprensión.Ciertos conjuntos de habilidades crean sinergia entre sí, como el desarrollo web basado en datos y la experiencia en SQL.Sin embargo, es posible que toda la experiencia de API win32 en el mundo no se aplique directamente al desarrollo de Linux.Esto me lleva a creer que, como programador principiante, debería empezar a decidir dónde quiero especializarme después de tener una comprensión general de los principios básicos del desarrollo de software.

Esta es realmente una pregunta de varias partes:

  1. ¿Cuáles son las especializaciones comunes dentro de la programación informática y el desarrollo de software?
  2. ¿Cuál de estas especializaciones tiene más valor a largo plazo, como base para otras especializaciones y/o como habilidades comercializables?
  3. ¿Qué conjuntos de habilidades se complementan entre sí?
  4. ¿Existen áreas de especialización que obstaculicen su capacidad de desarrollar otras áreas de especialización?
¿Fue útil?

Solución

Ben, casi todos los programadores experimentados todavía son estudiantes de programación.Nunca dejas de aprender nada cuando eres desarrollador.Pero si realmente estás comenzando tu carrera, lo que menos deberías preocuparte es la especialización.Todas las API, marcos y habilidades que espera que le brinden una existencia a largo plazo en el campo no sucederán.La tecnología parece cambiar mucho y debes ser lo suficientemente versátil y flexible para aprender cualquier cosa.El conocimiento que adquiere en una plataforma/api/framework no desaparece.Puede aplicar las habilidades a la siguiente gran plataforma/api/marco.

Dicho esto, deberías dejar de preocuparte por el futuro y concentrarte en lo básico.Estructuras de datos, análisis y diseño de algoritmos, diseño de compiladores y diseño de sistemas operativos son lo mínimo que necesita.Y además, debería estar dispuesto a volver atrás y leer esos libros en ese campo en cualquier momento de su carrera.Eso es todo lo que se requiere.Buena suerte.

Lo siento si soné como un gran asesor;pero eso es lo que pienso.:-)

Otros consejos

No quiero rechazar directamente tu premisa, pero creo que ser generalista es una buena posición en programación.Seguramente desarrollará experiencia en áreas específicas, pero es probable que sea producto de un interés personal o de una necesidad laboral.Con el tiempo, las cosas que puedes transferir entre idiomas y dominios problemáticos son la esencia de lo que hace a los buenos programadores.

Creo que la pregunta más importante es:¿Qué áreas de especialización te interesan más?

Una vez que lo sepas, ¡comienza a aprender en esa área!

Creo que la mayor habilidad de todas sería adaptarse a los tiempos, porque si su empleador puede ver este potencial en usted, entonces sería prudente mantenerse firme.

Dicho esto, te aconsejaría que te sumerjas en la zona que TÚ disfrutarías. El aprendizaje está impulsado por el entusiasmo..

Dado que mi empleo actual es con un proveedor de Internet, he encontrado que el conocimiento de redes es particularmente útil.Pero algún día me gustaría jugar con gráficos 3D (no necesariamente juegos).

Profundice lo más que pueda comenzando en un entorno, win32, .net, Java, Objective C...lo que sea.

Es importante desarrollar una comprensión profunda de cómo funciona X...para que puedas traducir los mismos conceptos a otros idiomas o plataformas/entornos, si así lo deseas.

"¿Hay alguna área de especialización que obstaculice su capacidad de desarrollar otras áreas de especialización"? Más o menos, pero no hay nada permanente, creo.

Como yo mismo soy relativamente verde (menos de 4 años), tengo una mentalidad realmente orientada a objetos.Rara vez salgo de .NET, por lo que tuve dificultades en un trabajo cuando entré en contacto con el código incrustado.Los programadores integrados temen la creación de objetos y la pérdida de rendimiento de la herencia.Tuve que aprender el entorno, la memoria muy baja y los tiempos de reloj lentos, de donde venían.Son tiempos para crecer, lo pasé mejor porque entendía bastante bien mi área.

Diré que si eliges algo en lo que especializarte por su comerciabilidad y dinero, probablemente te agotarás rápidamente.Si empiezas a especializarte, elige algo que disfrutes.Me encanta la programación GUI y odio las cosas del lado del servidor, mi amigo es todo lo contrario, pero ambos amamos nuestro trabajo.Si él tuviera que hacer mi trabajo y yo el suyo, ambos nos volveríamos locos de aburrimiento.

Como estudiante, recomendaría olvidarse de lo que está programando y centrarse en el proceso del software en sí.Comprender cómo analizar un problema y hacer las preguntas correctas;aprende todos los patrones de diseño que puedas y, de hecho, aplicarlos todos obtener una comprensión y apreciación real del diseño orientado a objetos;escriba pruebas y luego codifique solo lo necesario para que las pruebas pasen.Creo que la mejor manera de aprender realmente es codificar tanto como puedas; el idioma y el dominio no son importantes, navega fuenteforja y carne fresca para cualquier proyecto que suene interesante y participe.Lo importante es comprender los fundamentos de la ingeniería de software.

Y sí, esto incluye a C.O ensamblador.Esta es la forma más sencilla de comprender bien cómo funciona su computadora y qué está haciendo realmente su código de alto nivel.

Por último, nunca dejes de aprender: la arquitectura orientada a servicios, la inversión de control, los lenguajes de dominio específico y la gestión de procesos de negocio están mostrando enormes beneficios, por lo que es importante tenerlos en cuenta. Pero cuando termines de estudiar y te unas a la fuerza laboral, ¿quién ¿Sabe cuál será el próximo gran acontecimiento?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top