¿Qué debo hacer para seguir aumentando mis conocimientos y habilidades como ingeniero de software? Específicamente, ¿qué habilidades debería mejorar para trabajar en empresas como Google, Twitter, LinkedIn, etc.?

Hay muchas opciones. La parte más importante es encontrar algo interesante : ¡es mucho más probable que falle al aburrirse y nunca terminar nada de lo que está haciendo al elegir mal en qué trabajar!

Una cosa que realmente me ayudó cuando comencé fue aprender diferentes lenguajes de programación . Es una excelente manera de estructurarse y asegurarse de exponerse a un conjunto diverso de ideas y perspectivas.
Hay tanto que aprender …

Otra opción es trabajar en proyectos paralelos. Averigua en qué tipo de cosas te gusta trabajar. ¿Herramientas de desarrollo? ¿Juegos? Aplicaciones web? Robótica? Editores de texto? ¡Ve a por ello! Siempre he preferido saltar directamente sin preocuparme demasiado, aprendiendo conceptos bajo demanda. La pereza es una de las grandes virtudes de un programador, después de todo. Quizás podría intentar hacer algo concreto cada semana o incluso todos los días: 180 sitios web en 180 días es un buen ejemplo de esto.

Una opción divertida es aprender cosas y enseñar a otros . Escribe publicaciones de blog. Dar charlas en las reuniones. Responda en StackOverflow. (O Quora, supongo: P.) Ayudar a otros es a menudo la mejor manera de ayudarse, doblemente para aprender. He descubierto que esta es la mejor manera de obtener una gran cantidad de conocimiento: cuando tiene que explicar algo simplemente, no puede ignorar los casos extremos desafortunados. Es una buena manera de entrar en los rincones polvorientos de su conocimiento.

¡Una charla de encuentro no tiene que estar súper involucrada! Agitar las manos realmente ayuda.

Leer libros de CS es una buena forma de aprender los conocimientos básicos. No solo leería libros por sí mismos: son más una buena manera de apoyar las actividades que mencioné anteriormente. Si está buscando sugerencias, tanto Quora como StackOverflow tienen excelentes hilos.
La portada de uno de mis libros favoritos de CS, The Structure and Interpretation of Computer Programs.

Finalmente, aprendería un poco de matemáticas. Esta es una excelente manera de practicar el tipo de razonamiento lógico que es extremadamente crucial para la programación. También es valioso ampliar tu conocimiento general: las ideas matemáticas surgen con mucha más frecuencia de la que piensas en muchos más lugares de lo que imaginas. Personalmente, estoy a favor de un enfoque “de arriba hacia abajo”: tome un libro avanzado y especializado que se vea interesante y desarrolle todos los elementos básicos que necesite para completarlo. Dicho esto, no creo que este sea un buen enfoque para la mayoría de las personas: puede que le guste leer libros generales o seguir algunas conferencias de matemáticas en línea mucho más.

Vicious Circles es el último libro de matemáticas que he estado viendo. Se trata de conjuntos no fundamentados y establece un gran compromiso entre ser accesible para los no matemáticos y ser razonablemente avanzado e interesante.

La mejor manera de aprender matemáticas es si puedes encontrar una aplicación o biblioteca interesante para jugar. Esto ayuda a que los conceptos abstractos sean más concretos y, por lo tanto, más fáciles de comprender. Los idiomas como Haskell con muchas bibliotecas inspiradas matemáticamente son muy buenos para esto. ¡Por ejemplo, vea la biblioteca lineal!

Entonces sí: muchas, muchas opciones. Pruebe varias combinaciones hasta que encuentre una que se pegue . La parte más importante es disfrutar, porque esa es la forma más fácil de asegurarse de que realmente aprenda lo suficiente como para tener un impacto.

Haz cosas por ti mismo. Desarrolla algo que quieras o usarías en la vida cotidiana que debería resolver / simplificar algo.

Como usted es ingeniero de software, no se limite solo con conocimientos de software. Intenta ensuciarte las manos con cosas electrónicas también. [Intente codificar y crear algo útil usando raspberry pi. Tiene integración Windows 10 IOT y muchos proyectos útiles.]

Conoce gente nueva, visita nuevos lugares. Esto te ayudará a ser enérgico y entusiasta. Al hacerlo, puede encontrar problemas a los que se enfrenta la gente común y, de hecho, puede tener una idea para resolverlos utilizando la tecnología. Resuélvelo..

Sigue presionando tus límites y ponte incómodo. Estar con personas que son más inteligentes que tú. Te sugiero que encuentres un trabajo a tiempo parcial en cualquier startup en la que estés interesado. Tendrás muchos desafíos y aprenderás mucho.

Lo más importante, enseña a otros lo que has aprendido. Elige un gobierno. escuela o universidad y obtener permiso para enseñar a los estudiantes de forma gratuita. Principalmente el HOD / principio estaría de acuerdo. Cuando enseñas, te vuelves más fuerte en lo que has aprendido. Otro aspecto es que se le harán muchas preguntas en las que quizás ni siquiera haya pensado. Tómelo como una oportunidad para aprender cosas en profundidad.

En tu propio tiempo, construye cosas que quieras construir. Sea un poco ambicioso y termine lo que comienza. Hágalo de manera profesional siguiendo las mejores prácticas y utilizando las herramientas adecuadas para el trabajo. Aprenda lo que necesite para aprender a hacer esto.

Aconsejo no específicamente “apuntar” a grandes empresas. Concéntrese en implementar cosas que sean interesantes para usted y desafiantes, y eventualmente las grandes compañías vendrán a usted, confíe en mí.

Y les aconsejo que no se preocupen demasiado por las “conferencias en línea”; no, ofendan, pero su generación parece convencida de que pueden aprender a ser grandes ingenieros viendo videos en YouTube. Esto es un error. Aprender haciendo.

Comprende que estás fuera de la escuela ahora y que no es el trabajo de tu empleador continuar tu educación o mantenerte entretenido. Aprenda lo que pueda de su primer trabajo pero no se sienta casado con él. Esté atento a otras oportunidades. Cultive relaciones con desarrolladores de otras compañías. Cuando sienta que ha aprendido todo, puede comenzar a buscar otra cosa: no tome cualquier cosa. Encuentre algo más interesante para usted con más responsabilidad, basándose en lo que ha aprendido en el trabajo y fuera de él.

Así funciona el mundo de los trabajos de software …

– Bueno, una excelente manera es seguir haciendo cursos desde Coursera, edX, udacity, openhpi, openclassroom y tales plataformas MOOC.

– Si puedes hacer incluso 6 cursos en un año, estarás muy por delante de cualquiera para mantenerte actualizado. Hice unos 22 cursos en 8 meses en 2012. Y aprendí muchísimo en esos 8 meses. Todo lo que aprendí me ayudó a comenzar mi propia puesta en marcha, que realmente está funcionando muy bien ahora.

– Lo mantengo como un objetivo personal para hacer al menos 12 cursos en un año. Pero para alguien nuevo en estas plataformas, 4 a 6 es un buen número.

Vaid, Abhishek
Cofundador
Frrole Inc.

Primera etapa:

  • Juega con el código.
  • Siga los blogs de tecnología para ver lo que está de moda e interesante (estas son dos cosas diferentes, ambas son importantes).
  • Experimente con nuevas tecnologías creando aplicaciones realmente pequeñas.
  • Utilice sitios técnicos de preguntas y respuestas (por ejemplo, stackoverflow) para aprender de las experiencias de otras personas con esas tecnologías.

De esta forma, se mantiene actualizado, bien informado y con experiencia práctica sobre una amplia gama de tecnologías actuales.

Segunda etapa:

  • Crea algo presentable en tu tiempo libre. No tiene que ser grande o una aplicación completamente terminada.
  • Es algo que puede incluir en su CV y ​​debe incluir una variedad de tecnologías que le interesen.

Tercera etapa:

  • Busque un trabajo en una empresa interesante, no necesariamente una de las que mencionó. Las nuevas empresas son mejores como un lugar para aprender rápidamente.

Hay buenas respuestas aquí. Me gustaría enfatizar algunos puntos:

1) Práctica, práctica y más práctica.
Escribir código, revisar otro código, garabatear en JSFiddle son cosas buenas que hacer

2) Motivación y selección del proyecto más realista.
Si encuentra un proyecto paralelo, de código abierto o pagado, debería entusiasmarlo. Al mismo tiempo, debería ser real.

3) Disfruto de tomar cursos en línea (complemento egoísta aquí), tomé una clase de aprendizaje automático de Andrew Ng y repasé mis habilidades en esa área. Fue asombroso. Hay muchas buenas clases en línea ahora. Prueba.

Hay dos partes en un trabajo.

1. Trabajo que te gusta.
2. Trabajo que pone comida sobre la mesa.

Supongo que el trabajo que está haciendo es el último. En cualquier trabajo, siempre tendrá ambos tipos de trabajo en distintos grados. Desafortunadamente, no siempre puedes tener algo que te guste. Lao no será del todo lo que tú no. Por lo tanto, como la mayoría de las sugerencias ya escritas en este hilo, debe intentar encontrar cosas fuera del trabajo para complementar lo que hace en el trabajo. También pregunte en la oficina y sienta curiosidad por otras cosas que sucedan que tal vez sean interesantes. Por supuesto, no te olvides de hacer tu trabajo correctamente.

Sin embargo, tenga una mente abierta de lo que es y aún puede estar aprendiendo, incluso si cree que no está aprendiendo.

Aprenda sobre alguna tecnología que le interese, posiblemente una de las plataformas móviles, y aprenda. Haga un proyecto paralelo en su tiempo libre para usar la tecnología. Únase a un proyecto de código abierto y envíe parches.

Creo que sabes la respuesta a tu pregunta … si el proyecto en el que estás trabajando no te toma la mayor parte de tu tiempo, entonces no importa si es el mismo proyecto una y otra vez … todo lo que tienes que hacer es seguir aprendiendo y siga explorando otros campos en la ciencia de la computadora … cree un proyecto para usted … cargue, publique su código en github, lea sobre otro campo de TI, desarrolle pasión para resolver problemas también … y CRECE …

Muy buenos aportes a su pregunta de otros contribuyentes.
El programador pragmático es un buen libro. Agarra una copia.
-Bhaskar.

More Interesting

Si la característica más importante de Twitter es el tiempo real, ¿por qué optó por Java en lugar de C ++?

¿Pueden los ingenieros de software tener un cuerpo sano dado que trabajan en una silla la mayor parte del día?

¿Cuáles son los mejores 'grupos cerrados' de Facebook para programar como principiante?

Green Card: ¿Qué categoría de peticiones de green card (EB2 o EB3) patrocina Google / Facebook para sus ingenieros de software de nivel básico?

Después de fallar las entrevistas en la primera ronda, dos veces, ¿cómo puedo hacer frente al hecho de que soy demasiado estúpido para convertirme en un SDE en Google?

¿Cuáles son los problemas más desafiantes que encuentra en su trabajo como ingeniero de software?

¿Cuál es un mejor lugar para trabajar como ingeniero de software: LinkedIn o Yelp?

Lo que es más difícil de lograr; ¿está dentro del rango de los 100 mejores en el primer intento en el examen UPSC o se coloca en Google como ingeniero de software?

¿Cuáles son las estimaciones típicas de esfuerzo de las tareas de programación?

¿Alguien ha sido contactado por alguna consultora de visas para una visa de relaciones públicas en Canadá bajo el Programa de trabajadores calificados? ¿Es esa una buena opción para un ingeniero de software de India que tenga 3.5 años de experiencia laboral?

Aunque C no es un lenguaje orientado a objetos, ¿puede hacer todo lo que Java o C ++ pueden hacer?

¿Debo comprar una computadora portátil con Windows y descargar el sistema operativo Linux, o debo comprar una computadora portátil con sistema operativo Linux?

¿Cómo es un día típico para el ingeniero de software en Mindtree?

¿Qué idiomas debo aprender para ser ingeniero de software?

¿Pueden los ingenieros de software hacer videojuegos?