Rara vez actúo como "programador" en mi trabajo diario. Dirijo un equipo de ingenieros y me considero un ingeniero. Creo funciones, corrijo errores, trabajo en API, bases de datos, etc., pero rara vez tengo que escribir algoritmos... y cuando lo hago... simplemente busco en Google la mejor manera de hacer algo y esto me ha funcionado durante la ultima decada.
He perdido mucho tiempo siendo entrevistado por personas que quieren que resuelva preguntas de estilo LeetCode y simplemente no me importa entrar en ellas. Soy un ingeniero jefe con un buen currículum y un buen sueldo, y quiero mantener este tipo de puesto a lo largo de mi carrera.
¿Cómo les digo a las empresas que no estoy interesado en manipular algoritmos para entrevistarme con ellas?
En primer lugar, es posible que tenga una terminología incorrecta. Cómo veo que las palabras "programador" se usan con más frecuencia para describir una posición en la que se escribe código simple de acuerdo con las especificaciones y API existentes, donde "ingeniero de software" es un trabajo que involucra algoritmos complejos, patrones de diseño, arquitectura y diseño de sistemas. Es posible que desee buscar trabajos de programación en lugar de trabajos de ingeniería de software.
Soy ingeniero jefe con un buen currículum y sueldo, y quiero mantener este tipo de puesto a lo largo de mi carrera.
Creo que esta es la excepción y la mayoría de las empresas esperan que un ingeniero de software líder pueda resolver variaciones simples de un problema de gráfico o búsqueda de lista. Si quieres ser ingeniero líder, creo que deberías acostumbrarte a la idea de aprender algoritmos. No es que se espere que escriba algoritmos complejos todos los días, pero si no puede ver la diferencia entre una solución O(N^2) y una solución O(N), no podrá reconocer un problema cuando tropiece al respecto, por ejemplo, cuando como ingeniero líder está revisando el código de desarrolladores más jóvenes.
Entonces, si se entrevista para un puesto de "ingeniero de software líder", es muy probable que esté perdiendo el tiempo. ¿Ha considerado buscar más roles gerenciales, como gerente de infraestructura o gerente de ingeniería?
Los concertistas de piano aún pueden tocar escalas. Los algoritmos no son algo extraño que solo usan los académicos. Son patrones de diseño mínimos y encapsulados que se usan bastante en la mayoría de los dominios. Sí, ningún cliente acudirá a usted y le dirá: "Por favor, implemente una búsqueda binaria en su próxima versión de software", pero le dirán : "Esta página es demasiado lenta" y una búsqueda binaria resultará ser la mejor manera. arreglarlo.
Si tiene un problema de "esto es demasiado lento" y no puede conectar los puntos para saber que necesita una búsqueda binaria y poder comunicar de manera concisa que eso es lo que necesita, simplemente se lo pasará a otra persona en la empresa. quién puede. Como una de las personas a las que se les suelen asignar los errores "este otro equipo no puede hacer algoritmos", puedo decirles lo molesto que es trabajar con personas que no creen que eso sea parte de su trabajo.
¿Cómo les digo a las empresas que no estoy interesado en manipular algoritmos para entrevistarme con ellas?
Respondiendo a una invitación a tales pruebas con un "no, gracias". Puede intentar proponer un proceso alternativo para ir con el "no", pero eso es un avemaría.
Si eres bueno, eventualmente encontrarás una empresa que esté de acuerdo con tu visión del mundo. De lo contrario, es posible que tenga que comprometerse y hacer las pruebas de escritura del algoritmo o enfrentar el desempleo.
Simplemente rechácelos si se presentan
Si las empresas usan esto o no, sería difícil determinarlo de manera consistente a partir de la aplicación. En mi organización actual, no me hicieron preguntas algorítmicas. Actualmente estamos haciendo preguntas algorítmicas a los entrevistados porque el ingeniero que realiza las entrevistas ha cambiado.
En otras empresas para las que me he entrevistado, tienen una entrevista de estilo LeetCode que se debe hacer a menos que lo recomienden. Salté directamente a la ronda final como referencia.
En otra organización gubernamental con la que me entrevisté, tienen LeetCode como una de varias opciones que puede usar como prueba de competencia. No se mencionó como parte del proceso de contratación y parecía inusual que el gobierno lo hiciera.
Realmente no puedes predecir.
Si realmente quiere evitar esas cosas, cultive relaciones con los reclutadores que inevitablemente aparecen en su LinkedIn. Descubrí que pueden decirte muchísimo sobre cómo irán las cosas.
Obtenga un reclutador de ejecutivos y concéntrese en trabajos de gestión. Dile al reclutador lo que estás buscando.
Las firmas de consultoría de búsqueda de ejecutivos se utilizan normalmente para puestos ejecutivos de alto nivel y directores de juntas. Las asignaciones son generalmente para puestos en los que el mejor candidato es más difícil de encontrar y más difícil de persuadir para hacer un movimiento, y donde el impacto potencial del éxito o el fracaso es mayor. Los reclutadores contingentes se utilizan con mayor frecuencia para puestos de nivel medio o puestos en los que hay una gran cantidad de candidatos calificados. Tres cosas que los candidatos deben saber sobre los reclutadores ejecutivos, Forbes
No asuma que un consultor de búsqueda de ejecutivos retenido lo comercializará con múltiples empleadores para obtener la mejor oferta... Ningún candidato que haya sido presentado por una empresa cliente debe ser referido a un cliente diferente hasta que el cliente original haya cerrado al candidato. Dado que los reclutadores de contingencia no se retienen, comercializan candidatos para múltiples empleadores al mismo tiempo. Lo hacen para maximizar las posibilidades de una colocación y recibir un pago. Sin embargo, solo comercializan los llamados MPC (candidatos más colocables) y se centran en roles de nivel inferior. Cómo llegar a conocer a un reclutador ejecutivo retenido
No es fácil conseguir un Reclutador Ejecutivo, pero puede ser algo a lo que desee apuntar eventualmente.
Gire su carrera hacia la gestión.
Al leer la pregunta, tuve la impresión de que no tiene mucho interés en la ingeniería de software (de la cual los algoritmos son una parte importante), pero el título del trabajo, el salario y el currículum son importantes para usted. Afortunadamente para usted, la industria del software está llena de trabajos de gestión que se benefician de la experiencia en ingeniería pero que no implican la programación real, como gerente de producto, gerente de línea, propietario de producto, maestro de scrum, etc. Debido al estado de gestión, a menudo se les paga mejor que a la ingeniería roles, y no está compitiendo contra personas que tienen un interés real en su profesión más allá de lo que es obligatorio. Otro beneficio es que en las empresas que no tienen una I+D seria, las carreras de ingeniería son muy limitadas y la gestión ofrece más opciones.
Puede consultar http://they.whiteboarded.me/ que tiene la lista de empresas con entrevistas de pizarra.
Cuando encuentre una empresa con la que le gustaría entrevistarse, puede ir a Glassdoor y buscar la empresa. Desde la página de la empresa, puede ver las reseñas enviadas por los usuarios, los salarios y las preguntas de la entrevista. Aquí hay un ejemplo de preguntas de entrevista de Google .
Si ha habido muchas preguntas de entrevista enviadas por usuarios para la empresa, entonces puede tener una buena idea de qué tipo de preguntas se harán, incluidos los tipos de problemas de codificación que deben resolverse. Obviamente, si se trata de una empresa más pequeña con pocos envíos de usuarios, es posible que esto no le ayude.
En general, estoy de acuerdo con la respuesta de Helena y asumiría que la mayoría de las empresas decentes esperan cierto nivel de experiencia en algoritmos de las personas que desean desempeñar un papel principal en ingeniería de software. Sin embargo, puede haber algunas excepciones en las que el proyecto requiere principalmente lidiar con los detalles esenciales de la gestión de dependencias y componentes, el rol se inclina hacia la dirección gerencial, el negocio se dirige hacia aplicaciones muy livianas sin ninguna complejidad algorítmica o la empresa no ser 'decente' en el sentido de que entendieron su terminología tan mal como la tuya actual^^. Al menos según su descripción, parece más un líder de equipo que también se desarrolla con un enfoque en el diseño de API y software algorítmicamente sencillo (no hay nada malo en eso, elegir la tecnología adecuada también es una parte interesante del trabajo, simplemente no todo lo que esperaría de un ingeniero de software principal). Entonces, para mí, pareces ser un desarrollador de gestión de equipos. Tal vez también sea particularmente bueno para elegir marcos o diseñar API, entonces podría concentrarse en eso.
Algunas cosas que buscaría en las descripciones de trabajo para conseguir un trabajo adecuado y aumentar la posibilidad de no enfrentar (demasiadas) preguntas algorítmicas serían estas:
Entonces, en principio, para trabajos que se inclinan hacia "hacia arriba" hacia el diseño de la capa exterior de las aplicaciones y cómo funcionan juntas sin tener en cuenta la complejidad algorítmica o para trabajos que se inclinan "hacia un lado", por ejemplo, en el dominio empresarial o en el equipo o la infraestructura. gestión. A veces puede haber roles principalmente para diseñar API o "principales" que discuten con personas que conocen el dominio comercial cómo debería funcionar un software a nivel comercial y de API, los detalles luego serán diseñados por ingenieros de software.
* ¿Por qué una cultura de startup/autoaprendizaje? Porque, cliché, sí, pero lo he visto con frecuencia, a menudo no saben correctamente lo que hacen (técnicamente), a menudo contratan a quién pueden conseguir y quién puede implementar cosas rápidamente sin preocuparse mucho por el rendimiento algorítmico. A veces fallan después de un tiempo, a veces tienen éxito y luego pueden necesitar limpiar el desorden una vez que crecen exponencialmente y sus soluciones algorítmicamente ingenuas a pequeña escala ya no escalan, pero aún pueden proporcionar un buen trabajo durante años. A veces, eso no es un problema en absoluto porque su mercado objetivo no necesita un rendimiento algorítmico, solo alguien que escribe algún programa con una interfaz de usuario agradable para ese área de nicho que nadie se ocupó todavía.
Postúlese únicamente a puestos senior , principales o principales y en su currículum indique que es lo que está buscando y, como suele ser veraz, exprese su experiencia en el currículum y en la carta de presentación y correspondencia por correo electrónico como tal.
Al menos en mi cuello del bosque, Junior a "Sin prefijo" recibe estas preguntas. Mayores y superiores, no.
¿Cómo les digo a las empresas que no estoy interesado en manipular algoritmos para entrevistarme con ellas?
Una alternativa es tener tu propia cartera de software de código abierto en plataformas como github o gitlab (o en tu VPS alquilado). Contribuya a proyectos de código abierto existentes (como GCC o FLTK o RefPerSys o Frama-C o zsh o miles de otros). Una vez que seas tan famoso como Linus Torvalds o Guido Von Rossum o Xavier Leroy , estarás bien pagado y tendrás oportunidades de trabajo. Tenga en cuenta que la mayoría de los desarrolladores de GCC o del kernel de Linuxse les paga por su trabajo (ver LWN sobre esto, y tal vez escribir allí...). Una vez que hayas diseñado e implementado un lenguaje de programación que tenga unos pocos usuarios (esto es muy difícil como explica Simon Peyton-Jones ) podrías tener interesantes oportunidades laborales.
Otra alternativa es tener al menos un blog público donde expliques algunas vistas arquitectónicas del software que has desarrollado (o liderado técnicamente). Asegúrese de obtener un permiso previo para eso.
Una tercera posibilidad es tener una puntuación alta en plataformas como StackOverflow . Estar por encima del 1% superior allí.
Una cuarta alternativa es haber escrito y publicado algún libro técnico sobre tu tema de excelencia (o al menos borradores de informes públicos, como este ).
Una quinta alternativa es hacer un doctorado y/o publicar artículos académicos -con revisión por pares- en, por ejemplo, conferencias ACM . Relacionado es que le paguen (a tiempo parcial) para dar alguna enseñanza sobre desarrollo y programación de software y administrar y asesorar a los pasantes.
Otra alternativa es dar charlas de forma voluntaria (y no remunerada) sobre programación y desarrollo de software (como esta que di en francés). Incluso podrían ser videos en youtube sobre programación y desarrollo de software (una vez que se hayan visto miles de veces, por ejemplo, este ).
No dude en ponerse en contacto conmigo por correo electrónico a basile@starynkevitch.net
(casa, cerca de París en Francia) o basile.starynkevitch@cea.fr
(trabajo, en CEA, LISTA )
Casi siempre he ido a través de un reclutador y un reclutador sabrá cómo son las entrevistas. Primero, lo sabrán por experiencia, segundo, le preguntarán al gerente de contratación y tercero, informarán a cualquier otro entrevistado que hayan enviado. (He tenido reclutadores literalmente tratando de darme las preguntas de prueba que escucharon de los candidatos que han enviado anteriormente).
Así que simplemente dígale al reclutador que no se moleste en presentarlo para esas entrevistas, si realmente no quiere hacerlas.
Una alternativa podría ser tener un currículum muy pulido. Uno que muestra lo bueno que eres.
Si es posible, también proporcióneles suficiente código para que tengan una idea de cómo escribe el código, corrige errores, trabaja en API o con bases de datos (por ejemplo: un repositorio personal de Github, no relacionado con la empresa actual ).
Y si se le presenta una pregunta al estilo de LeetCode, simplemente enfréntela como parte de la corrección de un error que encontró y que debe corregirse. Esto puede mostrarles que sí conoces los conceptos básicos.
Tenga en cuenta : ¡usar Google para refrescar algunas cosas que olvidó no está mal! (A menos que su código sea 100% StackOverflow copiar-pegar-pegar).
Un ejemplo: tuve una entrevista en la que olvidé cómo conectarme a una base de datos en PHP (mi corazón estaba acelerado y dormí mal ese día).
Me actualicé con algunos ejemplos y escribí lo mío, sin copiar y pegar .
El objetivo era escribir una base de datos + script PHP para almacenar y obtener la información necesaria para un restaurante, en base a un texto descriptivo escrito.
Pero, si realmente no está interesado en resolver esos problemas "falsos", entonces puede intentar negociar un método alternativo para que evalúen sus habilidades y ver cómo va.
Solo tenga en cuenta que esto puede dar una visión menos que óptima de sus habilidades de codificación a la persona que lo entrevista (ciertamente tendría mis dudas sobre sus habilidades de codificación).
Neo