Estoy planeando dejar mi trabajo y estudiar algoritmos a tiempo completo durante un año. Mi objetivo es entrenar mi habilidad de algoritmos para preparar una entrevista de Google. ¿Alguien me puede dar un consejo?

Felicitaciones por ese pensamiento. Es una idea audaz, y te felicito por siquiera pensar en ello; no muchos pueden Todos quieren ganar, pero muy pocos quieren prepararse para ganar.

Como fundador de Coding Interview Bootcamp, Interview Kickstart, rutinariamente hablo con ingenieros que aspiran a entrar en algunas de las mejores empresas de Silicon Valley. [BTW, nos estamos inscribiendo para los próximos lotes!]

La mayoría de ellos no tienen el lujo de pasar un año a tiempo completo en ello. Pero si lo haces, eso es increíble y lo siguiente es lo que te aconsejaría:

Versión corta : IMHO, dejar o no es una decisión secundaria. Su decisión principal es averiguar qué hará con su tiempo, de modo que maximice sus posibilidades de lograr su objetivo.

Versión más larga:

(La versión más larga es más larga de lo que pensé que escribiría inicialmente, pero espero que a quien la lea lo encuentre útil):

1. Haz un plan meticuloso.

El plan que has dado es un buen comienzo, pero profundiza con eso. Lo que necesitas, es un plan para la práctica deliberada. Lee todo sobre la práctica deliberada y apuesto a que resonará contigo. Desea saber exactamente cuántos días tomará, cuántas horas puede dedicar por día, cuántos temas estudiará y cuántos proyectos o problemas de entrevistas (aproximadamente) desea exponer, por tema Y quieres hacer esta preparación con entrevista-orientación.

Cracking the Coding Interview (libro de 2011) es un muy buen libro, pero dependiendo del equipo que entreviste en Google, puede que no lo encuentre adecuado. Yo diría que también ir a través del libro Elementos de entrevistas de programación. Entre esos dos libros y Glassdoor (compañía), deberías tener suficiente forraje. También puede usar Introduction to Algorithms (libro de Cormen, Leiserson, Rivest y Stein), pero le sugiero que lo use más como referencia, en lugar de un libro de preparación de entrevistas, de lo contrario puede sentirse abrumado.

En la misma línea, no estoy seguro de si una clase de Algoritmos va a ser muy útil. Puede ser útil como sistema de disciplina (vea mi siguiente punto), pero no es muy útil para la preparación de la entrevista. Es probable que cubran una gran cantidad de material que no es útil para la entrevista, y no dan suficiente práctica en el material que realmente es.

Cuando estés practicando problemas, asegúrate de escribir el código. Codifica cada problema que estudies y tómate el tiempo. Si excede los 45 minutos en cualquier problema, hágalo una y otra vez hasta que lo reduzca a 45 minutos. Use TopCoder o Codeforces o HackerRank o Leetcode o similar para practicar un poco más competitivamente.

Muchas personas le aconsejarán que practique en una pizarra en lugar de codificar. Si bien eso definitivamente ayuda y es necesario, el primer paso es obtener fluidez con los algoritmos de escritura y las estructuras de datos en el código real. Una vez que te sientas cómodo con eso , entonces transferir esa habilidad a una pizarra no es mucho trabajo.

El momento en que se hace un plan detallado es cuando sabrá qué hacer a continuación y se integrará en su decisión de ir / no ir.

2. No puede llevar un año completo.

¿Cómo sabrás que estás listo?

a. Ir primero en amplitud, en lugar de profundidad primero.

Con la ayuda de alguien, decida sobre un conjunto de temas que necesita practicar (Arrays, Strings, Recursion, DP, Trees, etc.) ,. Luego divida su plan en fases progresivamente más profundas con problemas de entrevista más desafiantes. Haga un bit medido de todos los temas en cada fase en lugar de dedicar una fase a un tema completo. De nuevo, no olvides escribir el código para cada problema que estudies.

segundo. Mídete con entrevistas simuladas después de cada fase.

Cuando te veas mejorando en entrevistas simuladas, tendrás más confianza. Sabrá cuándo detenerse y es muy probable que no necesite un año completo. Asegúrate de encontrar a los entrevistadores adecuados para hacer entrevistas simuladas. Una buena entrevista es una función de la experiencia en la entrevista.

Para justificar el tiempo libre en el currículum, le aconsejo que haga un trabajo independiente en el lateral.

3. Crear un sistema de soporte.

Si usted es tan humano como la mayoría de los humanos, entonces mantener el enfoque, la disciplina y la motivación durante su año libre (o incluso a tiempo parcial) será difícil. Muy duro.

Para mantener esa adrenalina en alto, debe crear el mejor sistema de soporte que pueda, con algunos o todos los siguientes

a. Crear un sistema de estudio: nadie lo dice mejor que Scott Adams. Lea esto, con paciencia: Scott Adams Blog (Goals vs Systems).

segundo. Encuentre un compañero: estudien juntos, verifiquen el trabajo de los demás, rindan cuentas unos a otros. Ambos retendrán el conocimiento por más tiempo y se harán más fuertes juntos. ¿Sabías que los colegios de CS en Israel dan tarea conjunta? A menudo funciona como magia.

do. Encuentre un mentor (o mentores): alguien que ya trabaje en Google y confíe en lo que usted es, sería genial. Solicite orientación, entrevistas simuladas, evaluaciones, revisiones de códigos, etc.

re. Mídase constantemente: después de alcanzar cada objetivo secundario, asegúrese de evaluarse / juzgarse / medirse con alguna medida objetiva, por ejemplo, una entrevista simulada o un desafío de codificación.

mi. Seguro de salud: si tienes un compañero que puede apoyarte, eso es increíble. De lo contrario, debe tener en cuenta la prima de Obamacare como parte de sus ahorros (solo en EE. UU., Por supuesto).

4. Trabajar para dominar, no para descifrar Google.

Es lo contrario a lo intuitivo que suena, pero es lo más importante: no apuntes a Google. Trate de obtener dominio sobre los algoritmos de entrevista / estructuras de datos. Google seguirá. Cuando ganes el dominio, muchas otras compañías también lo seguirán.

Trabajar para Mastery vs Performance es una teoría bien conocida en educación. Cuando apuntas a Mastery vs. Performance es cuando podrás salir de los momentos difíciles. Y solo entonces, muchas de las cosas que sugerí anteriormente se volverán fáciles de entender. escribir código, programar tu tiempo, hacer entrevistas simuladas, hablar con personas de ideas afines, etc.

5. El dominio de la entrevista se traducirá en un rendimiento superior en el trabajo.

Es difícil de creer, pero he visto que eso sucede en varios casos. Las preguntas de la entrevista son un gran medio para aprender. Son los conectores más rápidos de la teoría y la práctica. Te exponen a desafíos reales y te hacen pensar más duro.

Lo más importante es que no te preocupará volver a encontrar un trabajo, lo que te hará sentir más seguro en tu trabajo actual.

6. Medirse continuamente

Repetir y resaltar este punto, porque no puedo enfatizar esto lo suficiente. Las entrevistas simuladas son una excelente manera de medir tu progreso. Haga una ronda antes de comenzar y una ronda después de cada fase de su preparación. De esa manera, sabrás cuándo parar y qué tan lejos ir. No hay otra forma de saberlo objetivamente.

7. Saber claramente para qué estás optimizando

Date cuenta de que este es un experimento caro para ti. No solo gastará sus ahorros de un año, sino que también perderá el salario durante un año. Si estás en Silicon Valley, eso puede significar fácilmente un total de $ 200K, después de impuestos. Incluso si te unes a Google, tardarás unos 2 años en recuperar esa cantidad de dinero.

Aunque, por supuesto, el dinero no es lo único que importa y hay muchos otros beneficios intangibles de craqueo en las mejores empresas. Solo quiero decir que debes tener una buena idea de eso en general y estar cómodo con eso.

Por último:

Tu última línea es acertada y muestra tu gran actitud. Las entrevistas no son ni ciencia exacta ni pruebas estandarizadas, y hay más que eso más allá de los algoritmos y las estructuras de datos. Así que aún puedes fallar en las entrevistas de Google después de todo esto. Pero si ha trabajado con el objetivo de obtener dominio, y ha utilizado todos los momentos de vigilia de ese año con un plan, aún saldrá adelante y su preparación lo beneficiará de manera invisible. Tiene que.

Si decides dar el paso, te deseo lo mejor. Como dicen, ¡ Que la fuerza te acompañe!

( Prepárese para ganar una cita adaptada de una cita similar de Paul Bryant)

(Edit 1: Destacó algunas preocupaciones importantes que fueron enterradas

Edición 2: Se agregó una versión corta, y se le atribuyó la cita)

Estoy a punto de molestar a mucha gente, pero …

YAGNI

No lo vas a necesitar.

Primero debes leer este artículo: No te llames un programador y otros consejos profesionales

Segundo, lea esta respuesta mía aquí: la respuesta de James Leonis a ¿Qué tan difícil es para una persona promedio convertirse en un programador de computadoras?

Cuando vuelvas, abordaré algunos de tus planes específicos.

1. Tengo ahorros para sobrevivir por un año.

¿Tienes seguro médico? Un mal día acabará con sus ahorros y probablemente lo arrojará a la bancarrota.

Del mismo modo, ¿qué sucede cuando le quedan cuatro meses de ahorro? ¿2 meses? ¿Cuál es su plan para aplicar este conocimiento para obtener el trabajo que desea?

Puede aprender los algoritmos importantes (búsqueda de gráficos, recorrido de árboles, búsqueda, ordenación, etc.) en un par de fines de semana. Si no eres un programador fuerte, entonces tal vez una docena de fines de semana como máximo.

Puedes aprender algoritmos mientras mantienes tu trabajo diario. Sí, se le podría pagar y aprender sobre algoritmos al mismo tiempo.

2. Estoy planeando enfocarme solo en algoritmos y resolución de problemas, trabajaré tantas preguntas como pueda en el código de Google jam, codechef, topcoder, etc.

Hay muchos algoritmos de búsqueda por ahí. ¿Cuál debo usar?

En su lugar, debe escuchar lo que su empleador quiere lograr y luego diseñar la solución técnica . Usted es el experto en la materia y esta es la razón por la que fue contratado . Las empresas tienen que lidiar con mil platos giratorios y delegaron la experiencia técnica a usted y su equipo. Convertir esos problemas de negocios en soluciones (con una computadora) es su trabajo .

Entrar en la cabeza de su jefe o cliente le permitirá comprender mejor lo que temen y lo que consideran un éxito. Luego construyes tu código para alinearte con esas esperanzas y temores. No les importa cómo funciona, les importa que funcione.

3. Estudie Cracking the Coding Interview u otros libros relacionados para mejorar las habilidades de entrevista técnica.

Aquí están mis preguntas de la entrevista:

  • ¿Qué problema enfrentaste y cómo lo superaste?
  • Problema de codificación aleatoria para demostrar que realmente puede codificar. Guíame a través de tu solución.
  • Aquí está . ¿Cómo lo resolverías? Guíame a través de tu solución.

Aprenderé más sobre usted, cómo resolverá los problemas y cómo trabaja en equipo con esas preguntas que con cualquier algoritmo que pueda usar.

Dicho de otra manera, nunca he visto fallar un proyecto debido a un algoritmo incorrecto. Todos mueren de mil maneras diferentes, pero nunca por razones técnicas.

¡Oye, dejé mi trabajo hace 2 meses, estudié a tiempo completo y ahora estoy trabajando en Google para que se pueda hacer!

Mi situación para que pueda evaluar cuánto se aplica a usted: estaba trabajando en una empresa de nueva creación como ingeniero de software con muchas horas de trabajo y por la misma razón: quería irme y necesitaba tiempo para entrevistarme. Tenía una maestría en CS y antes de eso estaba en Física, así que pasé un mes explorando los fundamentos de CS ya que no era una de esas personas que comenzó a programar a los 8 años (más como 21). En mi caso, fue un tiempo bien invertido, ya que realmente me gustan todas las cosas de CS (de ahí el cambio de carrera), así que me divertí mucho estudiando, pero no recomiendo quedarme sin trabajo durante más de 2 a 3 meses, ya que la soledad y la falta de una rutina constante pueden volverse caóticas (tuve la suerte de tener un montón de amigos increíbles que pasaron el tiempo conmigo en sus días libres y me esforcé mucho por mantener siempre una rutina de estudio 10-5 y después de un mes Me entrevisté regularmente), sin mencionar que después de 2 o 3 meses, la falta de empleo comienza a verse mal en su currículum para los empleadores.

Todos los factores que lo hicieron funcionar:

1. Sabía que estaba bien porque los Algoritmos eran de un fondo de Física y era débil en Diseño Orientado a Objetos, codificación real en general y sistemas. Así que resolví todos los problemas en Cracking the Code Interview y algunos de los problemas en Coding Interview Questions (algunas de las soluciones podrían no ser correctas, pero hicieron buenos ejercicios de codificación). Implementaría el código en Python y Java y los ejecutaría a término y Eclipse para asegurar que el código realmente se ejecute correctamente. Esto es crucial para Google y Amazon, ya que buscan el código de trabajo de inmediato. Otro libro realmente bueno con buenas preguntas es el Algorithm Design Manual de Steven Skiena. También Programming Pearls de Jon Bentley realmente puso todo en foco para mí: por qué los entrevistadores están tan obsesionados con los anagramas y los palíndromos, para qué sirve cada tipo diferente, etc. También rastreé el libro Design Patterns (Gang of Four) y llegué a El fondo de la inyección de dependencia. No estoy seguro de si eso ayudó a resolver los problemas, pero definitivamente me hizo un mejor programador.

2. Tenía un compañero de práctica para las sesiones de pizarra. Uno de mis colegas anteriores también estaba buscando un nuevo trabajo, por lo que nos turnamos para practicar sesiones de pizarra durante un mes. Esto fue crucial para mí, ya que solía congelarse ante el pizarrón y escribir por todo el lugar. Mi compañero de trabajo también me recomendó varios documentos de sistemas clave: Bittorrent (p2p), Google BigTable, Google GFS, Google Spanner y Amazon Dynamo, y fueron útiles para las preguntas de diseño del sistema (Google no me hizo ninguna, ya que me consideraron para ser de nivel junior, por cierto, pero Amazon lo hizo). Los consejos de intercambio y la comarería realmente me impidieron volverme loco por no tener un trabajo por primera vez desde que me gradué de la universidad.

3. Otra razón por la que opté por esta opción nuclear de “renunciar primero, buscar trabajo más tarde” fue que ya estaba reclutado por Facebook y Tumblr en ese momento y confiaba en encontrar un trabajo, incluso si esos fracasaban. Terminé no avanzando en ninguna de las compañías, por cierto, pero mis aplicaciones a Google, Amazon y LinkedIn se publicaron y me entrevisté con ellas, por lo que FB y Tumblr terminaron siendo una buena práctica. Por lo tanto, mi consejo es entrevistar primero con un grupo de otras compañías para que practique un poco explicando a los entrevistadores lo que está haciendo en la pizarra, dando un discurso al ascensor sobre su currículum, etc. Sin embargo, hubo un inconveniente en el hecho de espaciar las entrevistas: Terminé esperando recibir noticias de Google y tener que posponer la respuesta a Amazon y no pude negociar adecuadamente por un mejor salario, pero al menos conseguí el trabajo, así que no es la peor situación.

En definitiva, si decide llevar a cabo este plan, probablemente no necesite 1 año, y si puede encontrar un grupo de apoyo, es altamente recomendable. ¡La mejor de las suertes!

En realidad tengo un montón de consejos. Me gustaría hablar desde dos perspectivas: horarios y consejos de preparación.

En cuanto a su tiempo de preparación, no creo que la preparación a tiempo completo para un año sea necesaria. Hay varias razones. En primer lugar, dado que ya tienes varios años de experiencia en desarrollo móvil, en realidad no necesitas aprender todo desde cero como un estudiante. Incluso si sientes que tienes una terrible base de informática, por lo general, será mucho más rápido para las personas experimentadas recoger todo lo que aprendiste de la escuela.

En segundo lugar, es un poco exagerado dejar su trabajo para preparar entrevistas. No estoy seguro de lo ocupado que está, pero si puede asignar ~ 3 horas por día, es suficiente. También hablar con su gerente para negociar con un proyecto menos ocupado es otra opción.

Por último, a partir de mi experiencia pasada, generalmente es mejor pasar de 3 a 4 horas (o incluso más) por día en la preparación durante unos meses, en comparación con la media hora durante todo un año. Es realmente como prepararse para las finales cuando estábamos en la escuela. Así que un año parece demasiado largo.

También me gustaría compartir con ustedes algunos consejos de preparación para la entrevista. Lo más importante es centrarse en el conocimiento básico: estructura de datos / algoritmo. Esto es más cierto si se dirige a empresas como Google / Facebook. La estructura de datos y los algoritmos son realmente los cimientos de todas las preguntas de codificación. Si los comprende bien, será mucho más fácil para usted seguir mejorando.

El segundo consejo es seguir practicando. Sitios como Leetcode proporcionan toneladas de preguntas de entrevista y es altamente recomendable practicar el mayor número posible. También Gainlo (gainlo.co) le permite tener entrevistas simuladas con empleados de Google, Amazon, etc. y obtener comentarios reales para mejorar. También deberías comprobarlo.

Recursos:

  • Leetcode
  • Gainlo
  • Puerta de cristal

Conclusión

En resumen, le recomendaría que mantenga su trabajo actual por ahora, pero aproveche el tiempo libre para preparar entrevistas. Definitivamente no es tan difícil como esperabas.

No renuncies a tu trabajo.

Un año es tiempo suficiente para prepararse para la entrevista de Google mientras está en un trabajo.

Sugeriría que no solo apunten a una empresa como google. Hay una serie de buenas empresas como google. Si te preparas para uno, preparas para muchos. El proceso de la entrevista puede variar, pero desde una perspectiva más amplia, todos son iguales.

Adquiera el hábito de resolver algunos problemas a diario y dedique su tiempo a las estructuras y algoritmos de datos.

“Estructuras de datos y algoritmos” es el tema favorito de las empresas entrevistadas.

Cuando su experiencia aumenta, más de 4 años y luego el diseño del sistema se vuelven importantes.

Si buscas preparación para la entrevista. Puede comenzar con ” Resolución de problemas en estructuras de datos y algoritmos ” escrito en varios idiomas como C, C ++, Java, C #, Python, etc. Estos libros son fáciles de seguir y están escritos para el punto de vista de la entrevista . Además, estos libros tienen el último capítulo sobre Diseño de sistemas , que también se requiere en las entrevistas.

Los enlaces de los libros sobre amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos usando C

2. Resolución de problemas en estructuras de datos y algoritmos utilizando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Solución de problemas en estructuras de datos y algoritmos utilizando C #

5. Solución de problemas en estructuras de datos y algoritmos utilizando Python

6. Estructuras de datos y algoritmos en Go

Descargo de responsabilidad: Soy autor de todos los libros anteriores.

Después de hacer lo que quieres hacer, encontré estos:

  1. no obtendrás lo que quieres solo porque has demostrado algo en algoritmos, es mucho más complicado
  1. piense en escenarios como, ¿qué sucede si no ingresa en esas compañías selectas a las que apunta?
  • Pasar entrevistas es una bola de juego diferente.
    1. necesita velocidad – 3 preguntas en 1 hora (por ejemplo, Google)
    2. algunos preguntan matemática y aptitud MCQ en estos días (ubicaciones de LinkedIn)
  • En algunos países como India, etc., al menos en la mayoría de las entrevistas, no les importan los algoritmos.
    1. Se preocupan más por las estructuras de datos y sus complejidades, algoritmos comparados
    1. necesita saber qué se usa detrás del mapa STL, cómo funciona todo, ok ahora aplique a todos los demás contenedores STL: biblioteca de contenedores
  • Algunos escenarios de entrevista un poco negativos.
    1. si conoce la asignación “nueva” de C ++, pero no sabe qué es el vector STL, está fallando (no sabe STL)
    2. Si conoce el vector STL, pero no conoce la asignación “nueva” de C ++, r sigue fallando (no sabe lo básico) (esto le sucedió a un Top 100 en SPOJ)
  • estos son perfectamente [correctos / incorrectos]
  • Los algoritmos tratan sobre la resolución de problemas. Si busca ayuda, es mejor que esté en Wikipedia, no en otros, porque de lo contrario está buscando una respuesta, y su resolución de problemas no será mejor en los próximos días, y dependerá más de la búsqueda. En busca de respuestas (solución a pregunta) en lugar de ayuda (un algoritmo bien conocido), los entrevistadores tienen la experiencia suficiente para descubrir si usted es un verdadero solucionador de problemas o no
  • No les importan muchos sitios web competitivos, muy pocos se preocupan por hackerearth y hackerrank, aunque escribimos pruebas en ellos, como LinkedIn Placements, etc.
    1. todo lo que les importa es que el trabajo se realiza en topcoder, projecteuler (número de preguntas resueltas), leetcode y codeforces
    1. obtendrás abundantes pruebas en quora
    2. así que empieza bien porque vas a tomar una gran decisión
  • Lo más importante si sabes lenguajes de programación.
    1. java – 50%
    2. . neto – 30% (principalmente Asp. neto, C #. neto)
    3. pitón – ~ 10%
    4. angular 2 / reactjs – ~ 10%
    5. node.js, golang, etc. – ~ 1%
    1. A pesar de que los números anteriores no son perfectamente correctos, son algo así, les importa la experiencia en los anteriores, como la más alta prioridad.
    2. obtendrás un trabajo seguro si aprendes uno de ellos muy bien y haces algunos proyectos (personales / profesionales), muestra el caso en GitHub (si es personal)
    3. ((Si eres un generalista como yo, conociendo muchos idiomas, entonces será muy difícil preparar entrevistas con diferentes lenguajes de programación))
  • Algunos se preocupan por los patrones de diseño
    1. Apenas unos 20 de ellos, pero ¿puedes aplicar correctamente?
  • A algunos les importa el diseño que también el Diseño Orientado a Objetos
    1. Piden principios SÓLIDOS, y otros.
  • Para algunas empresas esta es la clave para entrar en ellas.
  • ¿Cuáles son algunos sitios de seguimiento para los trabajos?
    1. linkedin – obtienes entrevistas la próxima semana después de aplicar
    2. bit de entrevista – lento pero obtienes entrevistas
    3. un montón de otros sitios de carrera de su área: naukri, de hecho, monstruo, etc.
  • Suponiendo que obtienes lo que quieres, todavía es un desafío explicarlo en una entrevista.
    1. Suponiendo que no lo logres, será muy difícil recuperarlo – posiblemente un salario más bajo, etc., serían opciones en ese momento
  • Es una ilusión que tus fondos serán válidos por un año.
    1. Si crees que son buenos por 2 años, entonces es solo por 1 año.
  • la salud es lo mas importante
    1. Coma dieta de proteínas, también varía con diferentes verduras, etc.
    2. tener un ambiente limpio
    3. Si pierde esto, durante o antes de unirse a la próxima compañía, será una experiencia horrible y su plan se caerá, así que tenga cuidado.
  • Ningún cuerpo escucha a nadie, porque es su vida decidir.
    1. ¿mi sugerencia?
    1. no renuncies a tu trabajo
    2. con una certeza de% 100, puede hacer todas las cosas sin dejar el trabajo, es decir, la mayoría de las cosas que realmente puede hacer, solo un poco más lento, pero lo hará

    no conseguirás trabajo, inmediatamente, como ahora, es cuando quieres, tomará tiempo, por lo que deberías considerar todo lo anterior, si necesitas consejos específicos, pídeme un mensaje de mi biografía.

    la mejor de las suertes

    Regresar a: Recursos todo en uno de CS y CP por Manohar Reddy Poreddy en AlgorithmsAndMore

    He hecho algo similar un par de veces en mi historia, de forma secuencial e interrelacionada. Quería hacer un cambio sustancial en el enfoque profesional, y me encontré con problemas que se estaban separando de mi enfoque anterior (había trabajado principalmente en Defensa e incluso después de salir oficialmente de eso, me encontraba en situaciones en las que incluso en una empresa comercial más general Fui el tipo ideal para trabajar con clientes de Defensa, Aeroespacial y Gobierno.

    Así que enseñé durante unos años. Me dio MUCHO tiempo para trabajar en la teoría, desarrollar un conjunto diferente de habilidades, dedicar una gran cantidad de tiempo a explorar grandes ideas. Me tomé más tiempo del que necesitaba porque fue un momento muy productivo para mí y fue uno de los períodos más agradables de mi vida. Fue un recorte en mi carrera anterior, pero la libertad y el estrés comparativamente mínimo fueron un beneficio enorme.

    Durante ese tiempo escribí mucho. Publiqué muchos tutoriales, contribuí a una serie de foros de discusión profesionales, escribí artículos y desarrollé herramientas que tratan con procesos técnicos de alto nivel. No solo desaparecí, me hice un nombre. Cuando terminé, tenía una larga lista de contactos profesionales y mi trabajo ya era conocido (y utilizado) por las personas en el campo al que me dirigía.

    Al final de ese período, terminé con un par de meses por mi cuenta y luego cargué el auto y conduje a Los Ángeles. No anuncié un trabajo cuando anuncié que me iba a mudar, pero cuando llegué a una empresa de ensueño tenía un trabajo haciendo exactamente lo que me esperaba.

    Recomiendo encarecidamente hacerlo, siempre y cuando se tome en serio el uso de este tiempo, no solo para “ser mejor” sino para ser * notable *. Hay un cierto escepticismo que aparece cuando alguien me dice “Me tomé un par de años para trabajar en mi arte” o “Pasé ese verano convirtiéndome en un mejor ingeniero”, porque sé que lo que * probablemente * significa es “bebí mucho, jugaba algunos videojuegos, vivía con mis padres y finalmente me dijeron que tenía que conseguir un trabajo, así que armé un currículum y ¡aquí estoy! ”

    Ten algo que mostrar para ese momento además de tu palabra de que eres increíble ahora. Escribir, desarrollar, compartir y crecer. Eso valdrá mucho la pena, ya sea por un año, un mes o media década.

    He estado contratando en Google durante el último año y medio, y me entrevisté para un puesto de tiempo completo en Google el verano pasado. No conseguí el trabajo, y volveré a solicitar este verano.

    Google está perfectamente contento de tener que entrevistarte varias veces, con aproximadamente un año entre entrevistas. Conozco personalmente a varios Googlers, y solo uno de ellos fue contratado en su primera entrevista con Google. Varios otros entrevistaron a tres o incluso cuatro veces en Google antes de ser contratados.

    Por lo tanto, mi mejor consejo es que dedique aproximadamente un mes a las tardes y los fines de semana revisando uno de los buenos libros de “entrevistas de codificación” y practicando la codificación de la pizarra con sus amigos, y luego aplique en Google. No espere un año y posiblemente tenga que esperar varios más. La entrevista en Google no tiene ningún costo en absoluto, y muchos beneficios: obtendrá experiencia con el proceso de contratación de Google, tendrá una idea de en qué necesita trabajar para su próxima entrevista de Google, y puede ¡Apenas consiga contratado la primera vez!

    Sin embargo, si es como la mayoría de la gente y no es contratado en Google después de su primera entrevista, dedique el tiempo y la energía que necesita para mejorar sus habilidades de programación y algoritmo. Eso puede significar renunciar a su trabajo, o simplemente significar resolver problemas de programación en su pasatiempo de fin de semana para el próximo año.

    Pero no se limite a dedicar tiempo a “resolver problemas de entrevista”: estudie la teoría de grafos y el algoritmo de Dijkstra, los árboles de búsqueda binarios y tablas hash balanceadas y la notación Big-O y las compensaciones entre la complejidad del espacio y la complejidad del tiempo. Manipule bits en C y diseñe modelos de sistema basados ​​en clase en Java. Escriba una aplicación web, desplácela y haga que la gente la use. Instale Linux en una PC antigua y escriba su propio monitor de red para perfilar y analizar el tráfico entre su computadora y el mundo exterior. Juega con código y algoritmos. Diríjase a los grupos de interés especial de OOP en su área y busque a alguien con quien debatir sobre la herencia frente a la composición.

    Acabo de terminar de enseñar un curso de graduación avanzada de algoritmos y estructuras de datos en UW Bothell. Hicimos referencia al libro de texto tal vez dos veces en todo el curso, porque todo lo que necesitábamos para aprender los temas del curso (tutoriales, video conferencias complementarias, descripciones de algoritmos, implementaciones de muestra en varios idiomas, casos de prueba, etc.) estaba disponible de forma gratuita en el Internet. Lo único que se interpone entre usted y el conocimiento equivalente al de una maestría en CS es el tiempo que debe dedicar al aprendizaje.

    Y como lo señaló otro póster: si obtiene o no el trabajo de sus sueños en Google, prepararse para la entrevista allí lo hará un programador mucho mejor y hará cosas maravillosas para el resto de su carrera.

    En primer lugar felicidades por tu determinación. Si siente que algo le impide realizar un esfuerzo dedicado, es mejor si elimina ese obstáculo. Dicho esto, no creo que nadie con alguna experiencia en codificación requiera un año de preparación. 4-5 meses de esfuerzo enfocado con la planificación es más que suficiente. Una de las cosas más importantes que se requieren para un largo período de preparación es la paciencia. Debe dejar de compararse con sus amigos y familiares. Pueden estar disfrutando de sus vacaciones y festividades, pero no dejen que esas cosas lo disuadan o lo hagan sentir mal. Solo tenga en cuenta que eventualmente llegará su momento, y debe estar preparado para ello cuando la oportunidad llegue.

    Ahora hablemos de los pasos de preparación:

    1. Recoge el libro de CLRS. Sé que es intimidante, pero para todo lo que no entiendes, simplemente buscalo en Google. Hay un montón de material de referencia en CLRS. Comience desde Estructuras de datos elementales (pilas, colas, tabla de hash / mapa, árbol, BST) y luego pase a montones. Asegúrese de que entiende / puede implementar cada uno de estos. Comprender las complejidades del tiempo. Los algoritmos de clasificación son, por ejemplo, la ordenación de pila, la ordenación de combinación, la ordenación rápida (comparación y cuándo usar qué).
    2. Mover a la programación dinámica y algoritmo codicioso. Es muy importante que entienda DP, hay algunas técnicas de programación que serán necesarias en todo el diseño de algoritmos.
    3. Gráficos: Google ama los gráficos. En 2 de mis entrevistas de Google me enfrenté a preguntas de Graph. Trate de entender cómo las preguntas normales se pueden convertir en gráficos. geeksforgeeks.com tiene un muy buen recurso de tales preguntas.

    Eso es todo, tienes todas las municiones que necesitarás para resolver cualquier pregunta sobre el algoritmo. Ahora la siguiente fase es la parte más importante. Todo no tiene sentido sin esta fase. Se llama práctica.

    Algunos de los recursos, y su orden sugerido:

    1. Leetcode.com Resuelve alrededor de 150-200 preguntas aquí. Una vez que resuelva cada pregunta, vaya a Discutir y leer soluciones alternativas. Resolver preguntas con enfoque tanto recursivo como iterativo.
    2. interviewbit.com El concepto de gamificación es muy útil cuando comienza a sentirse frustrado con la resolución de preguntas día tras día. Agrega a tus amigos y desafíalos. Ten una tabla de clasificación y observa el progreso de todos. Trate de guiar a las personas que buscan ayuda. Aprendes más cuando enseñas. Interviewbit.com ha introducido recientemente muchas preguntas sobre el diseño del sistema que son realmente buenas.
    3. glassdoor.com/careercup.com Míralos una semana antes de tu entrevista. Pero tenga cuidado, no se deje engañar por las soluciones que se ofrecen en esos sitios web. Usa tu juicio.

    Una de las cosas más efectivas es tener un grupo de compañeros para prepararse. Resolver preguntas y discutir enfoques dará el mejor aprendizaje posible. Y, por último, sugeriría que, si está dejando su trabajo actual, intente trabajar en algunos proyectos personales, que resuelvan algunos problemas de la vida real, o que faciliten el proceso, etc. Estos resultarán ser excelentes temas de conversación durante una entrevista y mostrarán Entrevistador de que eres un solucionador de problemas con la voluntad de construir cosas geniales.

    Solo quería hacer un comentario amable sobre el tema de ‘brecha’ tocado por otras respuestas. Creo firmemente que esto es una tontería y es totalmente ridículo. No debo una explicación sobre cómo estoy planeando mi tiempo y cómo estoy organizando mi vida a nadie, y mucho menos a algunos tipos de RR.HH. totalmente extraños que nunca he conocido. Trabajar durante varios años seguidos puede ser realmente agotador y todos necesitan recargar sus baterías de vez en cuando. Simplemente no creo que deba explicarle esto a nadie en el mundo. Personalmente, tengo suficiente dinero para vivir más de 10 años sin trabajo, pero por supuesto no estoy haciendo esto, ya que solo son ahorros para “días realmente malos”. La vida es un regalo precioso y lo viviré como lo decida, sin prestar demasiada atención a lo que otras personas puedan pensar. No estoy insultando a nadie al decidir hacer algo diferente a ser un empleado, por un período de tiempo. Nunca me han pedido que explique las deficiencias de los RRHH, e incluso si me preguntan, responderé solo una cosa “eso es personal”. En el extremo, uno podría incluso juzgar preguntas como el acoso / discriminación, similares a preguntas como ‘¿Eres gay / judío?’ o ‘¿Cuál es su estado de VIH?’ Soy de Europa del Este y al menos aquí, los trabajos de ingeniería de software son relevantes solo para la experiencia, habilidades, desempeño de entrevistas, recomendaciones, etc., y no para lo que haces con tu vida. Tal vez en otras partes del mundo la cultura empresarial y el pensamiento corporativo sean diferentes, puedo entender y respetar eso. Pero nunca sacrificaré mi libertad a cualquier costo. La libertad es lo más preciado.

    Tengo algunos amigos que hacen lo siguiente con regularidad: trabajan un par de años y luego hacen una pausa ‘recreativa’ que les brinda la oportunidad de explorar y dedicarse a pasatiempos, actividades, áreas que de otra manera nunca tendrían tiempo de pagar. practicar. Y cuando regresan están aún más entusiasmados con su trabajo, mejor motivados y con mejor desempeño que antes. De hecho, las cadenas corporativas brindan muchos beneficios, pero son una carga pesada que uno necesita deshacerse de vez en cuando. En algunos países occidentales, los empleados incluso tienen algunas pausas similares garantizadas por las leyes, llamadas “sabáticos” o “smth”. Y esto claramente habla de la importancia de estas pausas refrescantes que ha sido oficialmente reconocida por la sociedad. Sin embargo, si no tiene tal cosa en las leyes de su país (donde está respaldado por algún tipo de pagos durante su pausa), tendrá que ahorrar algo de dinero para pagarlo.

    Para resumir, no hay tal cosa como ‘brecha’; Este es un producto de tu imaginación. Es más bien tu vida. Lo único que tendrá que hacer con cuidado es una comparación a favor / en contra para las dos opciones posibles: tomar la pausa o no. Ambos tienen ventajas y desventajas. El aspecto más importante de dejar de trabajar temporalmente es la cuestión financiera. Si no tiene su vida confiando completamente y dependiendo de los préstamos / créditos (esto es más común en el estilo de vida occidental que en Europa del Este, por ejemplo), pero tiene algunos ahorros decentes, entonces todos están listo para ir

    Así que, simplemente dicho, haz con tu vida lo que quieras y desees. Visite algunos lugares exóticos, inscríbase en una clase de salsa, conviértase en un voluntario en África, estudie de manera intensiva un nuevo lenguaje (natural, no informático) que puede abrirle dimensiones totalmente nuevas. ¡Tienes la libertad de perseguir tu felicidad de la forma que consideres adecuada! Si realmente deseas estudiar algos de manera intensiva y puedes pagarlo, solo hazlo 🙂 ¡Y disfrútalo!

    Recomiendo encarecidamente no hacer esto. No le ayudará a alcanzar sus objetivos establecidos, y probablemente lo arruine.

    Otras personas han dicho cosas similares; sin embargo, considero que tanto consejo malo en otras respuestas como buenas respuestas, por lo que quiero ser una voz para hacer algo razonable.

    ¿Por qué no deberías hacerlo?

    La razón clave por la que su plan no es excelente es que los algoritmos no son lo único que necesita para tener éxito en una entrevista. Entiendo que los problemas de la entrevista de Google son bien publicitados, pero no se deje engañar pensando que si los acepta, ya está. En la escuela secundaria, puede prepararse para el SAT, y eso realmente lo ayudará a mejorar. Universidad; pero es muy poco probable que esa técnica funcione en una de las principales firmas de software. Lo que necesitas es un fondo fuerte y uniforme.

    (Hay respuestas que indican que los algoritmos no son importantes. Esto no tiene sentido. Los programadores principales utilizan algoritmos sofisticados a diario, como segunda naturaleza. Los dominios de aplicación diferentes utilizan algoritmos diferentes, por supuesto, pero todas las subdisciplinas bien desarrolladas los usan. Como ejemplo, Si está escribiendo software sensible al rendimiento en un lenguaje de la familia C o similar, y es un gran programador, conocerá los diferentes tipos de algoritmos de clasificación, cómo se implementan y cuáles son más rápidos para cada aplicación posible. no será una trivialidad que tenga que memorizar; será un conocimiento nuevo porque la usará con frecuencia.)

    Una razón secundaria por la que su plan no es bueno es que, a menos que tenga una disciplina excepcional, es probable que no funcione; y tampoco es probable que un año sea la mejor manera de gastar su tiempo para alcanzar su objetivo declarado.

    Finalmente, como alguien que revisa con frecuencia los currículos para las contrataciones de candidatos a programadores, sí, la brecha en el currículum se verá muy mal. Es mejor que el chico que se tomó un año de descanso para encontrarse en una comunidad hippie, pero no por mucho.

    Esto es lo que debes hacer en su lugar:

    Es muy comprensible que un desarrollador de dispositivos móviles pueda escribir muchas aplicaciones y nunca requiera o adquiera el conocimiento de algoritmos avanzados. Y como ha notado, esto lo detendrá, incluso en el espacio móvil. Necesitas entrenar tus fundamentos si quieres hacer un cambio de carrera fácil.

    1. La forma formal.

    Si realmente quieres dedicar una gran cantidad de tiempo para estudiar, usa lo que tenemos para esto. Se llama una escuela. Sí, la academia tiene muchas fallas y desperdicia mucho tiempo, por ejemplo, haciendo que hagas tareas tontas e irrelevantes para saciar el ego de tu instructor. Pero a pesar de sus serias fallas, no hay un sistema mejor y obtendrás resultados mucho mejores de lo que pretendes.

    Si tiene un título básico de tipo BS, debe aspirar a obtener una maestría de dos años. (Se pueden obtener en un año, si tienes poco tiempo, pero esto es un compromiso.) Haz la opción donde tienes que escribir una tesis y hacer una investigación real. Haga una beca de investigación, no una maestría, a menos que realmente desee ser profesor. Te pagarán, por lo que no tendrás que gastar tus ahorros. Obtén esto de una universidad que hace investigación real.

    Si no tienes un título de tipo BS, la vida es más difícil. Es posible acceder a programas de EM con experiencia profesional equivalente, pero dada su situación, tal vez no sea fácil. Es posible obtener una licenciatura en menos de cuatro años, y tienen programas de seguimiento rápido para profesionales. Pero, por favor, vaya a una universidad de investigación real, acreditada regionalmente. No vayas a un colegio técnico o vocacional; Ya tienes lo que te darán.

    Finalmente, dependiendo de sus objetivos, podría ser razonable tomar solo algunas clases nocturnas. Hay programas para profesionales de la mayoría de las universidades. Sin embargo, mi observación desde lejos es que estas no son tan duras como las de los no profesionales; La multitud es muy diferente, demasiado casual. Los profesionales olvidaron lo difícil que es la escuela y, con frecuencia, no están preparados para enfocar lo suficiente como para aprender material realmente difícil (qué algoritmos son) y realizar las correspondientes horas de autoestudio (“tarea”) para obtener el máximo beneficio.

    2. El camino informal.

    Acercarse a esto como una tarea de desarrollo profesional podría atraerle mucho más. Te permite continuar desarrollando todas las habilidades que Google (o quien sea) querrá tener en un solicitante, mientras concentras tus esfuerzos en las áreas en las que crees que eres débil.

    ¿Crees que podrías concentrarte durante un año en algoritmos para convertirte en un experto? Bien, demuéstralo: hazlo todas las noches después del trabajo, durante una hora más o menos. Si no puede encontrar el enfoque para hacer esto por un tiempo, debe reconsiderar seriamente si dejar su trabajo va a marcar la diferencia. Para la mayoría de las personas, los trabajos proporcionan una estructura que les facilita hacer las cosas.

    Sugeriría un enfoque basado en la academia. Obtenga un libro de texto real utilizado por una clase real en una escuela real, y trabaje a través de él, haciendo los ejercicios. Intente obtener uno actualizado, porque los algoritmos en realidad cambian bastante rápido. (Últimamente me di cuenta de que durante el transcurso de los últimos cinco años, se han inventado varios algoritmos nuevos importantes que ahora se considerarían fundamentales para el dominio de la aplicación en el que trabajo. Knuth fue un gran texto en la década de 1970. cambiado fundamentalmente desde entonces.)

    Otro consejo

    Estudiar para entrevistas es una especie de trampa. Puede ser efectivo en algunos casos, especialmente contra compañías con procesos de entrevista especialmente malos. (“Cuénteme sobre un momento en que tuvo un desacuerdo con un compañero de trabajo” [por ejemplo, diga algo malo sobre usted mismo.] Estas preguntas solo le dicen al entrevistador qué tan bueno es el candidato para entrevistar a los malos entrevistadores, que es bastante fácil de dominar estudiar y practicar.)

    La verdadera manera de hacerlo bien en las entrevistas es ser realmente bueno. Un poco de repasar puede ayudar mucho también, si conoce un área de enfoque. Google incluso alienta esto. Si quieres ser el tipo que Google (o quien sea) realmente quiere contratar, tu enfoque debería ser en ser un programador realmente bueno.

    ¡Me has inspirado !

    He reunido 10 citas poderosas de grandes hombres que han impactado al mundo debido a su coraje para seguir lo que creen.

    Te felicito. Sinceramente, creo que es una gran decisión. Los algoritmos son una industria en crecimiento con abundantes oportunidades.

    Mi mejor consejo: ¡No pierdas un minuto! Ser disciplinado. Ejercicio. Come sano. Necesitas un cuerpo sano y un cerebro sano para lograr tus objetivos.

    1. Ten el coraje de seguir tu corazón e intuición. De alguna manera ya saben en lo que realmente quieres convertirte. Todo lo demás es secundario. – Steve Jobs
    2. Que sus elecciones reflejen sus esperanzas, no sus temores – Nelson Mandela
    3. El que no es lo suficientemente valiente para tomar riesgos no logrará nada en la vida. – Muhammad Ali
    4. Solo aquellos que se arriesgan a ir demasiado lejos pueden descubrir cuán lejos se puede ir. – TS Eliot
    5. O decides quedarte en el extremo poco profundo de la piscina o sales al océano. – Christopher Reeve
    6. El hombre no puede descubrir nuevos océanos a menos que tenga el coraje de perder de vista la costa. – Andre Gide
    7. ¿Qué sería la vida si no tuviéramos valor para intentar algo? – Vincent van Gogh
    8. El cambio es doloroso. Pocas personas tienen el coraje de buscar el cambio. La mayoría de las personas no cambiarán hasta que el dolor de donde están supere el dolor del cambio. – Dave Ramsey
    9. Es fácil estar de pie con la multitud, pero se necesita coraje para estar solo.
    10. Estar paralizado por el miedo al fracaso es peor que el fracaso – Arnold Schwarzenegger

    . . . .

    Entreno a comerciantes en MultichannelSecrets.com para aprovechar el poder de la tecnología en la nube para ampliar el alcance de sus clientes y establecer nuevas fuentes de ingresos sin grandes costos iniciales. ¡Sígueme en Quora para más consejos de negocios!

    Creo que es una idea bastante razonable. Una cosa a tener en cuenta es que muchos de los ingenieros que contratan a Google vienen de una escuela de posgrado y puedes apostar a que todos pasan una muy buena cantidad de tiempo preparando.

    Sin embargo, no hagamos esto sobre google. Porque en mi opinión, no se lo merecen! Ni siquiera cerca. No son los últimos otorgadores de dominio algorítmico. En serio, no gobiernan CS, ¿por qué dejar que sean tu último juez? En estos días hay muchas otras opciones muy interesantes. Nadie considera algo como esto que no esté muy interesado en CS en primer lugar, así que concéntrate en avivar ese interés, no en un gran corpulento como Google.

    Aquí está mi consejo. Puede tomar más de un año o menos de 6 meses, dependiendo de lo riguroso que seas y de tu entorno.

    1. Leer Knuth
    2. Clrs (o tardes)
    3. Haz todos los ejercicios que puedas de estos libros. Knuth tiene soluciones, CLRS las puedes encontrar online.
    4. Hacer los cursos de algoritmos de Coursera.
    5. Aprende haskell. Es un lenguaje muy conciso que te permitirá expresar algoritmos de forma bastante idiomática. Aprende realmente cómo funciona el lenguaje y por qué tiene ventajas para el paralelismo y la concurrencia.
    6. Leer la programación funcional de las perlas de Bird.
    7. Leer estructuras de datos puramente funcionales.
    8. Entrevista estándar de preparación de libros y páginas web Guardar esto para los últimos 2 meses.

    Ahora, el problema aquí es que te divertirás tanto que el trabajo que realices una vez que tomes un trabajo podría ser un poco monótono y en última instancia, podrías ser miserable … Pero ese es un problema diferente … buena suerte

    Hola,

    Hice esto durante 3 meses, preparándome para esa entrevista de Google. Al final no apliqué, sino que opté por otra startup en el desarrollo de juegos, principalmente porque esto es lo que me gusta hacer.

    Toda la experiencia fue genial La sensación de que estás mejorando después del entrenamiento es una recompensa en sí misma. Incluso si no aplica / pasa la entrevista, seguirá siendo una buena inversión.

    El recurso más importante para esto es su motivación personal: si le encanta resolver rompecabezas, problemas matemáticos / problemas CS, entonces podrá concentrarse 12 horas al día en esto y al final del día se sentirá divertido. Pero bueno, si alguien realmente no ama la resolución de problemas, entonces la programación podría no ser la mejor opción de carrera para ellos.

    Otros consejos:
    – Estarás trabajando solo la mayor parte del tiempo – para contrarrestar que hagas lo mejor para ser socialmente activo.
    – Duerma bien. Comience temprano en la mañana.
    – Mantenerse en forma

    Centrarse en los aspectos fundamentales, no solo en los problemas genéricos de la entrevista:
    Introducción a los algoritmos (Cormen, 2ª edición). Ni que decir.
    Matemáticas para la informática . Sí, las matemáticas son realmente una necesidad, he visto muchas preguntas sobre Quora últimamente tratando de socavar esto. (Matemáticas para Ciencias de la Computación por Eric Lehman y Tom Leighton)
    – Además de código atascado, codechef, topcoder, también puedes usar acmtimus : tienen una gran cantidad de problemas perfectamente organizados.
    – Clases online de informática.

    Personalmente no me preocuparía por tener un hueco en mi currículum. La pregunta importante es: ¿realmente desea trabajar para un empleador que tiene un problema con usted tomando un descanso para mejorar sus habilidades?

    Disfrutar

    Cada respuesta tiene alguna interpretación válida y depende de la OP para abordarla. Me gustaría compartir mis pensamientos sobre esto.

    – Primero, es un movimiento muy valiente para tomar esta acción y probablemente cumplirla.
    – Pero un año es un período muy largo. Tienes que estar absolutamente seguro, quieres hacer esto. Esencialmente, esto debería haberse hecho, cuando realmente podría haberlo hecho junto con el estudio, pero por lo general hay muchas cosas que tienen prioridad.
    – Si está haciendo esto solo por la preparación de la entrevista, creo que debería reconsiderarlo. Cualquier estudio, en cualquier forma y de cualquier manera, siempre produce algún resultado positivo. Pero el factor tiempo es crítico y el objetivo también es importante.

    Creo que un enfoque alternativo podría funcionar y ser un poco más práctico (pero, por supuesto, la practicidad varía de un individuo a otro, por lo que este es solo mi pensamiento)

    – Continúa con lo que estás haciendo actualmente y crea un calendario para practicar deliberadamente la habilidad que te interesa.
    – Pase algún tiempo regularmente, sin importar qué, los 7 días de la semana durante un año, junto con su trabajo o actividad actual.
    El tiempo puede variar, pero al menos una hora dedicada por día, sin importar la hora del día .
    – Observe su progreso bimensualmente. Mira, si estás mejorando. Apuesto que lo harás.
    Puedes ir despacio. No hay necesidad de apurarse. Tome una habilidad a la vez, un algoritmo a la vez. Pero hazlo hasta que puedas hacerlo doblado a ciegas.
    – Ser realmente bueno en esa habilidad y luego pasar a otra.
    – Comparte y anota tu experiencia.

    Creo que si sigues esto o algo similar, estarás obligado a ganar mucho conocimiento y definitivamente estarás muy por delante de tus compañeros.

    El bono, ya estás haciendo lo que estás haciendo y tu experiencia también está ganando y mejorando.

    Solo para información, algo como esto vino a mi mente. Pero luego se dio cuenta de que no es muy práctico (pero como dije prácticamente varía de un individuo a otro, así que lo que no sea práctico para mí también podría ser muy práctico para usted).

    Lo que decidí fue aprender algo nuevo, un nuevo lenguaje, una nueva habilidad y luego, como mínimo, un compromiso por día, lo más posible.

    El commit no necesita ser grande. Debería enseñarte algo y deberías escribir algún código. Y debería generar confianza para el siguiente nivel. Inicialmente, podría ser el tipo de programa “hola mundo o algoritmo de hola”, pero poco a poco puedes entrar en cosas avanzadas.

    Estoy haciendo esto durante los últimos 36 días, sin descanso. No importa a qué hora del día, me permito cometer al menos un pequeño fragmento de código. La práctica continua y deliberada impone una especie de hábito que permanece con usted durante un período más largo.

    Todavía no he cometido nada bueno, pero con cada compromiso aprendo algo. En mi caso, python, jquery, javascript, spa y mucho más.

    Para que sea más fácil comenzar con cualquier recurso que cumpla con su objetivo. Para python estoy empezando con Learn python de la manera más difícil y algunas otras referencias. Pero no importa lo que elijas. Mantente consistente. Para aprender TDD usando javascript, me estoy refiriendo a las series de código JavaScript de James Shore.

    En caso de que esté interesado, puede consultar mi página de github para ver cómo estoy o más bien estoy progresando.
    https://github.com/rajeshpillai.&nbsp ; (perdón por la desvergonzada auto promoción, pero creo que el contexto es correcto).

    Hace algo que cambia después de 36 días. Sí, una gran mejora en mi nivel de confianza y una mejora del 100% en el código / prototipo de producción que estoy creando.

    Los efectos secundarios positivos de aprender un nuevo idioma, nuevas habilidades y DP es que ahora puedo ver muchas oportunidades, que ya existían, pero no estaban a la vista. La práctica consistente abre tu visión y comienzas a ver cosas que antes parecían distantes.

    ¡Te deseo todo lo mejor en cualquier forma que elijas! Pero DP te ayudará a llegar allí !!

    PD: Ya tengo más de 16 años de experiencia en desarrollo de software, pero aún así, aprender una nueva habilidad, paso a paso, es la forma más efectiva de dominar cualquier cosa, dado que eres consistente en tu enfoque.

    Estoy de acuerdo con James y el enfoque de YAGNI, pero hay una cosa que agregar: aprenda lo suficiente sobre los algoritmos para saber qué hay en la caja de herramientas.

    Sepa que hay varios algoritmos de clasificación y aproximadamente algunos de ellos son mejores que otros. No se obsesione con cuál es cuál, solo aprenda lo suficiente como para saber que algunos son bastante buenos en todos los ámbitos pero apesta con listas casi clasificadas y demás.

    Sepa qué es una tabla hash, y aproximadamente cómo funciona y dónde se aplica, pero no se preocupe por cómo optimizar una.

    Su objetivo es saber lo suficiente como para reconocer cuándo necesita una herramienta en particular.

    Luego, cuando lo necesites, búscalo.

    El 95% de los desarrolladores en el mundo no necesitan los algoritmos con la frecuencia necesaria para tener la colección completa de forma clara y brillante todo el tiempo.

    … pero si pules una cosa, elige mapas hash. Están por todas partes.

    Tiene un plan muy audaz y creo que podría hacer mucho con el tiempo si puede mantenerse enfocado. Lo único que agregaría es asegurarme de que la educación y el conocimiento que acumulas durante ese tiempo tengan un impacto en tu futuro.
    Si está planeando conseguir un trabajo en un corp grande, tendrá que pasar por un portero de Recursos Humanos antes de entrar por la puerta. Tan pronto como vean “Abandonados por un año para estudiar algos” se van a confundir y ser extremadamente escépticos. Eso es lo último que quieres cuando intentas conseguir una entrevista.
    Mi sugerencia sería utilizar ese año para involucrarse en proyectos del mundo real, donde pueda mostrar fácilmente los conocimientos que ha aprendido. Averigüe en qué proyectos de código abierto en los que Google está involucrado y trátelos como su trabajo durante el año. Demuestra que eres un gurú haciendo contribuciones serias, no solo estudiando en la oscuridad. Recorrerá un largo camino para conseguir la carrera que desea.
    Mi experiencia personal fue trabajar en Quantitative Analytics mientras gestionaba un fondo comercial privado. Obtuve una cantidad inmensa de conocimientos, pero una vez que se terminó esa parte de mi vida, casi nada se tradujo en otras carreras. La gente de recursos humanos no tenía forma de encajar lo que sabía en las casillas de verificación que utilizaban para seleccionar candidatos. Hasta el día de hoy, me he mantenido por cuenta propia porque nunca he encontrado un buen ajuste en las empresas estadounidenses.
    Una segunda sugerencia es dedicar al menos parte de su tiempo durante ese año a la creación activa de redes. En muchos casos, el conocimiento puro no lo llevará muy lejos para iniciar una carrera. El conocimiento es un objetivo muy valioso que en muchos casos encontrará inútil.
    Recuerda que estarás compitiendo contra currículos que son mucho mejores que los tuyos, incluso con este año de estudio enfocado. La forma de entrar por la puerta es encontrar personas en el interior que puedan abrirla. Elija las empresas para las que desea trabajar y empiece a involucrarse activamente con las cosas que están haciendo. Familiarízate con las personas que trabajan allí. No tenga miedo de hablar con ellos y pedirles orientación y ayuda. En la mayoría de los casos, las personas disfrutan ayudando a otros. Mientras tengas una buena personalidad, encontrarás muchas oportunidades para avanzar en tu carrera.
    Buena suerte con tu plan.

    ¡Un año entero! ¡Para estudiar nada más que algoritmos y resolución de problemas! Ya eres un desarrollador de aplicaciones. La entrevista de Google no depende únicamente de su capacidad para implementar algoritmos. Los algoritmos no son algo que se estudia una vez y ¡tada! Usted sabe todo acerca de cada algoritmo y puede implementar cualquier cosa en cualquier situación. No soy un Googler ni deseo trabajar en Google, pero creo que Google no necesita que usted implemente todos los algoritmos de la memoria. Dicho esto, algunos conceptos básicos hacen mucho.

    Aquí está mi sugerencia. Tome sus ahorros y viaje por 6 meses con una computadora portátil. Explorar el mundo. Salir afuera. Leer libros. Viajar te ofrecerá dos cosas:

    1. Un entorno que no es universitario como para que estudies y aprendas sobre algoritmos. Pero todavía es un cambio lo suficientemente grande como para comprometerse con sus objetivos actuales. Puede responder preguntas en Google Code Jam, CodeChef, etc. en cualquier lugar que tenga Internet.
    2. Perspectiva. ¡Al viajar, tal vez encuentre cosas mucho mejores que hacer con su vida que trabajar para Google y estudiar algoritmos durante un año!

    Mi consejo es: no lo hagas.

    1. ¿Cómo explicará la brecha en su currículum? “Estudié algoritmos por un año” suena loco. Si te estuviera entrevistando, creo que estás mintiendo o escondiendo algo.
    2. Los algoritmos son una tarea cognitivamente intensa, de todos modos no puedes dedicarle un día completo. Entonces, ¿por qué registrarse para hacer esto a tiempo completo? Encuentra unas pocas horas por semana para estudiar algoritmos. (No estás trabajando los fines de semana, ¿verdad?) Toma un curso de coursera o usa CLRS para estudiar una sección de un capítulo a la vez.
    3. Tome un curso nocturno (pregúntele a su empleador sobre esto, pueden permitirle aligerar su carga de trabajo).
    4. Pídale a su empleador que le permita manejar los proyectos / tareas más algorítmicamente intensos.

    Si realmente no puedes hacerlo mientras trabajas, obtén una maestría en CS y toma algoritmos (+ teoría de computación + otros cursos de análisis + cursos de matemáticas aplicadas) como parte de esto. Esto al menos tendrá sentido para algún futuro empleador y le dará una medida objetiva de su progreso. Sin embargo, esto puede llevar un poco más de un año. Probablemente puedas encontrar un programa de maestría relativamente barato.

    Esto es totalmente increíble. Estoy seguro de que has imaginado cuánto cambiará tu vida profesional cuando tu cabeza esté llena de muchas más herramientas y conceptos profundos de informática, y, para ser sincero, envidio la oportunidad.

    Algunas, muchas, de las respuestas que recibes a esta pregunta te dicen que no lo hagas, o que una brecha no se verá bien en tu currículum, bla bla. Mira, es tu vida. Haz lo que sea que te haga feliz. Y, por cierto, he sido un gerente de contrataciones (escribí un libro sobre contrataciones de ingenieros de software) y me pareció totalmente increíble que alguien haya tenido un año sólido para estudiar y perfeccionar su oficio. ¡Quiero algo de eso! Una pasión intensa, una gran cantidad de conocimientos informáticos aplicados en la práctica, eso es maravilloso.

    Pidió consejos de una manera bastante abierta, así que voy a dispensar un par de advertencias que pueden serle útiles o al menos interesantes. No solo confía en mí, por supuesto. Y teniendo en cuenta la cantidad de atención que ha captado su pregunta, diría que tiene mucho en qué recurrir. Increíble.

    Reiterando un punto que otros han señalado: no te preocupes por conseguir un trabajo en Google o en cualquier otro lugar. ¿Has visto las bolas espaciales, la película? Hay una escena en la que los héroes pícaros huyen de un acorazado imperio malvado. En un ataque de pánico por atraparlos, el villano Casco Oscuro lanza la nave a “Velocidad ridícula”. Saltan hacia adelante, y de repente van tan rápido que un héroe dice: “¡deben habernos superado una semana y media!”. Eso va a ser usted superando una entrevista de Google. Increíble.

    Un año es mucho tiempo . No en retrospectiva, pero ciertamente en perspectiva y en vivirla. Eso le da el tiempo que necesita para aprender mucho, y quizás lo más importante es aprender en profundidad. Si ya es un programador profesional practicante, en un (1) mes tendrá todo lo que necesita saber, en general, para aprobar una entrevista de programación prácticamente en cualquier lugar. ¡Genial! Ahora tienes otros 11 meses.

    / se frota las manos

    Esta es la parte buena. Puede hacer algo que muy pocas personas pueden hacer: pasar todo el día, cada día mejorando y profundizando exactamente lo que quiere. ¿Y en qué deberías querer mejorar y profundizar? Esto tendrá que resolverlo bastante rápido, pero no necesariamente de inmediato. Después de comenzar, tómese un par de semanas o semanas para sentir realmente lo que es interesante, qué partes de CS le interesan y qué necesita y merece su atención.

    Los beneficios que obtiene en el desarrollo de software desde el punto de vista del “código rápidamente en el tablero” comienzan a disminuir en este punto, pero está bien. Ganas mucho más: la capacidad de resolver problemas realmente difíciles. El tipo que no se resuelve arrojando a Reddis, Hadoop, Docker, Ruby on Rails y un montón de otras palabras en una bolsa y agitándolas juntas hasta que emerge un producto de medio culo. Eso es algo amateur que honestamente te aburre. Mira, una de las cosas que harás temprano y de nuevo de vez en cuando es estudiar algunos de los Big Papers. Haga algo de curiosear: ¿qué ha sido influyente en los últimos 10-15 años en el campo de CS? Piense en cosas como el papel de Google Big Table. No vas a usar sistemas así … los vas a diseñar desde cero .

    O quizás otra broca más de vanguardia te llame la atención, como el documento 2014 Knowledge Vault. Eso es inteligencia de la máquina, bebé. Y puede absorber y digerir una gran cantidad de inteligencia de máquinas en los 11 meses que le quedan. Puede aprender los principios, las matemáticas y codificar muchos aspectos diferentes y partes móviles de este campo; desde árboles de decisión para admitir máquinas de vectores hasta bolsas de frases multidimensionales y más. Puedes hacer redes neuronales .

    En cierto modo, le sugiero que gaste mucha energía en inteligencia de máquina en realidad. Tiene una demanda enormemente alta y el listón para la entrada es bastante alto: realmente tiene que doblarse y profundizar antes de poder comenzar a reclamar experiencia práctica en más de una o dos herramientas de propósito especial. Eso lo convertirá en un gran empleado, una razón declarada para el viaje, y tendrá una oportunidad real de contribuir a la vanguardia de la informática y la ingeniería.

    No puedes hacer todo en un año. Pero puedes llegar bastante lejos. Mucho más allá de donde necesita estar para ser eminentemente empleado, más allá de donde necesita estar para pasar una entrevista técnica (incluso puede tener dificultades para contener sus ideas y soluciones para poder explicarlas a los entrevistadores, imagínese eso) y si lo valora Como un ejercicio de desarrollo personal, estás a la altura de tus propios estándares. Y más allá.

    Increíble.

    More Interesting

    No puedo hacer trampa en los exámenes, ¿debo trabajar en eso?

    Estoy en la clase 11 y no puedo memorizar lo que estoy estudiando. ¿Que necesito hacer?

    Mi examen de la junta de la clase 10 de cbse terminó hace unas horas. ¿Cómo me preparo para puntuar 100% en 11?

    Voy a presentarse para JEE 2019. Mi entrenamiento es de 8:00 am a 7:00 pm. ¿Cómo invento mi horario de autoaprendizaje?

    No puedo concentrarme y me rindo después de estudiar durante quince minutos. No puedo concentrarme. ¿Qué debo hacer para superar esto?

    He recibido calificaciones mucho más bajas de lo esperado. ¿Cómo puedo obtener buenas calificaciones? ¿Debo aceptar que no soy tan bueno como creo que soy?

    No puedo concentrarme en mis estudios, ¿qué debo hacer para ello?

    Cómo concentrarme en mis estudios y mejorar mi memoria.

    ¿Cómo puede un estudiante planear su día para estudiar al menos 5 asignaturas al día?

    Quiero romper el UPSC (técnico). Cuando trato de estudiar, mi mente se desvía automáticamente y no tengo continuidad. ¿Qué tengo que hacer?

    No me interesa lo que estoy estudiando. No veo cómo me ayudará a hacer mi vida por delante. ¿Cuáles son algunas sugerencias para volver al buen camino?

    Cada vez que hago un horario para estudiar, lo sigo por unos días, pero luego vuelvo a mi horario anterior. ¿Cómo puedo superar esto?

    Cómo mantenerme enfocado en mis estudios todos los días durante un largo período.

    Cómo estudiar biología de manera eficiente con el poco tiempo que puede tomar

    Como obligarme a estudiar mis aburridas asignaturas.