¿Las grandes compañías como Google, Microsoft o Apple contratan programadores principiantes de más de 30 años?

Contraté a personas que no obtuvieron un título en ciencias de la computación hasta bien entrada la treintena y que estuve extremadamente contento con los resultados. Las empresas tienden a tener una mentalidad muy abierta sobre a quién contratan porque no hay un grupo lo suficientemente grande de buenos ingenieros y no quieren perderse los mejores que superan el promedio en 2-10X.

No vale la pena contratar a la gran mayoría de los candidatos (alrededor de 199 de 200) presentados por reclutadores contingentes para empresas que realizan desarrollo de software como actividad central en un sentido central y de contexto de Geoffrey Moore, donde las actividades centrales crean una ventaja comercial sostenible pero el contexto es cosas que debe hacer para hacerlas mejor, proporcionando devoluciones insignificantes como el correo electrónico que se envía en una milésima de segundo, no en una centésima, para la mayoría de las empresas. El software como actividad principal generalmente implica a las empresas que venden software directamente (como envoltorio retráctil o un servicio como la búsqueda de Google) o como parte de un dispositivo complejo, aunque hay dispositivos de hardware (solo hay tanta libertad en la forma en que se dividen los bits en los controladores de dispositivo para hardware más simple) donde el software es una actividad de contexto.

Esos candidatos aceptables pueden generar millones o incluso miles de millones en ingresos para una empresa, por lo que como efecto inevitable de las empresas de oferta y demanda con software como actividad principal, tienden a tratar bien a los ingenieros. Grandes ejemplos de tales compañías tienen paquetes de compensación relativamente grandes, muchos beneficios, y son votados como buenos lugares para trabajar, lo que brinda una gran cobertura mediática. Las empresas más pequeñas en esa categoría tienen los problemas más interesantes en los que los empleados de rango y archivo probablemente trabajarán y, por lo demás, también son muy agradables.

Las empresas donde el software no es importante para el resultado final son menos selectivas, a menudo pueden hacerlo lo suficientemente bien enviando trabajos a lugares donde los ingenieros ganan un 80% menos, y no se consideran tan buenos.

Hay un sesgo de selección allí, por lo que no puede usar 1 en 200 como la fracción del total de ingenieros que vale la pena contratar. Mucho de eso proviene de los mismos malos desarrolladores que solicitan y son rechazados por muchos trabajos. Algunos provienen de muchos buenos desarrolladores que no aparecen oficialmente en el mercado laboral porque informan a los antiguos compañeros de trabajo cuando no están contentos y se mudan a nuevos puestos que han sido investigados como lugares decentes para trabajar o ser reclutados por esos compañeros de trabajo. quienes son mucho más felices con el 100% de sus candidatos siendo grandiosos versus 0.5 – 1%. Algunos provienen de los buenos candidatos que reciben múltiples ofertas al entrevistar y no quedarse en el mercado.

Joel Spolsky sugiere que solo 1 de cada 100 pasantes que solicitan trabajo para su empresa son aceptables en su ensayo Finding Great Developers, aunque eso podría no ser un buen número tampoco porque es más difícil detectar personas buenas sin experiencia.

Entrevistando a los graduados de mi alma mater, nuestra tasa de rechazo pasó de baja a aproximadamente la mitad después de que cambiaron los profesores de estructuras de datos debido a una tasa de fracaso estudiantil excesiva que fue mala para los ingresos del departamento. El de mi tiempo esperaba que los estudiantes programaran con éxito, calificando en función de qué tan bien el código de los estudiantes contra las clases de exámenes automatizados escritos del asistente de enseñanza que supuestamente tenían 1/3 de la clase recibiendo calificaciones reprobadas.

En cualquier caso, las empresas para las que quiera trabajar no quieren hacer nada para reducir ese grupo ya pequeño de empleados potenciales.

La contratación de la gran mayoría de los lugares en los que he trabajado (grupos en Amazon, Microsoft, Qualcomm y cinco startups) ha sido casi lo mismo, excepto por la breve moda de preguntar el rompecabezas “por qué hay tapas de alcantarillas redondas” y las preguntas de matemáticas “son arrojadas a los dardos”. aleatoriamente en un tablero de dardos cuadrado con mayor probabilidad de aterrizar más cerca del centro o un borde “que no parece correlacionarse con quién se desempeñó bien como ingenieros.

La mayoría de los candidatos son rechazados por tener problemas con una o más aptitudes fundamentales que parecen no ser enseñadas pero son necesarias para resolver problemas no triviales.

1. La capacidad de formar modelos mentales consistentes.

Saeed Dehnadi tiene un artículo sobre este tema. El camello tiene dos jorobas con el título que hace referencia al par de protuberancias en lugar de una curva de campana vista en una clase de programación introductoria y menciona la recurrencia y la concurrencia como otras aptitudes.

2. Pensar lógicamente los problemas, identificar sus condiciones finales / de borde y expresar una solución.

Un ejemplo de esto podría ser la clásica pregunta de entrevista de trabajo “invertir una cuerda en el lugar”. La gente no puede comenzar por los extremos e intercambiar hasta llegar al medio, no detenerse en el medio para tener la cadena original o no manejar cadenas vacías.

3. Aplicar conocimiento a problemas de ingeniería.

Algunas personas aprenden de memoria. Pueden repetir los números y la información relacionada con un contexto, pero no pueden aplicarlo a problemas.

4. Indirección

Hay una diferencia entre un enlace web y el sitio al que indirectamente. Tratar con indirección similar es común en programas no triviales.

5. Cocurrencia

Los sistemas asincrónicos independientes pueden interactuar entre sí en varios puntos. Es importante entender esto para que pueda tratarlo correctamente (primero) y de manera eficiente (después).

6. Recursion

Considere visitar una página web, todas las páginas a las que enlaza, todas las páginas a cada uno de esos enlaces hasta que tenga seis (como en grados de separación con Kevin Bacon) niveles profundos y cuente.

No obtener uno de esos no impide obtener títulos de informática (incluso un doctorado) de universidades respetadas, aunque limitará sus opciones de empleo.

Todo eso se puede cubrir en varias clases introductorias: una clase práctica de estructuras de datos, un curso de encuestas de lenguajes de programación que cubre diferentes programas (como la programación funcional) y modelos de concurrencia, y una clase de proyecto (me divertí mucho en la construcción del compilador).

Recomiendo encarecidamente a las personas que consideren carreras que escriban software aprovechen cursos gratuitos en línea en esas áreas antes de llegar demasiado lejos.

Más allá de esos fundamentos, buscamos evidencia de que los candidatos puedan resolver problemas de diseño e implementación lo suficientemente grandes.

Filtrar en esa área es más fácil para los candidatos con experiencia. Después de algunos trabajos y muchas oportunidades para realizar proyectos paralelos (como el software libre), muchos de nosotros pensamos que la ausencia de algo “carnoso” en un currículum implica una falta de capacidad o motivación, ambas condiciones descalificantes.

Tomar esa determinación para los nuevos graduados es mucho más difícil porque esas personas no han trabajado algunos trabajos y han tenido años para jugar con sus propios proyectos. Si vas a ser uno, crea cosas (esto es divertido) y haz que sea más fácil para los empleadores. Eso también puede abrir puertas a compañías más pequeñas que generalmente no quieren contratar a nuevos graduados (el primer proyecto significativo de las personas es malo, luego está el segundo efecto del sistema en el que compensan en exceso como lo observó Fred Brooks en The Mythical Man-Month ca 1975, pero les irá bien con su tercer proyecto).

Algunas compañías (según los informes, Google trabajó de esa manera) han reducido el número de candidatos con los que tratan filtrando en función de dónde se graduaron las personas; aunque no he encontrado ninguna correlación entre a dónde fueron las personas (o sus padres podrían permitirse enviarlas) y el rendimiento. Eso se vuelve mucho menos importante o desaparece como criterio de selección una vez que tienes suficiente experiencia sustancial en el mundo real.

El otro problema tangencial aquí es si las compañías “como Google y Microsoft” son “grandes compañías” para los recién graduados.

Creo que hay mejores opciones en las que la breve explicación es que tendrá más oportunidades de realizar un trabajo significativo en una empresa más pequeña que estaría “más allá de su nivel salarial” en una gran empresa pública. Eso es más agradable en ese momento y es un camino más rápido hacia la experiencia que lo califica para puestos de alto nivel en grandes empresas.

Mi respuesta a Career Advice: para un estudiante de CS que acaba de salir de la universidad, ¿todavía tiene valor trabajar primero en una gran empresa y luego ingresar al mundo de las startups?

Mi respuesta a Career Advice: ¿Debería unirme a Microsoft o una startup?

A mediados de la carrera, la situación es más ambigua: hay muchas más funciones de liderazgo disponibles en las grandes empresas y un gran ingeniero puede obtener $ 500K / año en compensación.

Si. Su edad no importa, de hecho, podría hacerse girar para obtener un sueldo más alto al demostrar que tiene experiencia en otros lugares. Por ejemplo, podría decir que tiene experiencia en liderazgo en algún otro campo, etc.

Se requiere una licenciatura en cualquier especialidad. Debe crear algo que funcione bien, ejercitar las API que se requieren en el trabajo al que se dirige y las conexiones serían extremadamente útiles.

Otra cosa que puedes hacer es ir a un trabajo de probador. Idealmente, un ingeniero de software en prueba, pero incluso un simple probador estaría bien. Esto pondría el pie en la puerta, tal vez pueda escribir algunas tareas, hacer amigos (nuevamente, conexiones), etc. retener ese trabajo durante un par de años, demostrar su valía y, mientras tanto, solicitar acceso de solo lectura al código del producto. En su propio tiempo libre, puede trabajar para corregir algunos errores fáciles localmente, mostrárselo a un gerente, solicitar que lo envíe, corregir más y tal vez incluso implementar una o dos funciones pequeñas. Cuando surja la necesidad de un desarrollador, usted será el que contrate.

Creo que la mejor respuesta es: no contratan programadores de nivel básico a menos que seas el mejor de los mejores.

Si tienes 32 años y eres un programador de nivel básico, es poco probable que acabes de terminar tu BS de Stanford con un promedio de calificaciones de 4.0. Estoy exagerando, pero estas empresas obviamente reciben un montón de solicitantes.

Pero no dejes que eso te impida intentarlo. Intenta diferenciarte de los demás de alguna manera (¿tal vez 32 es una fortaleza por esta razón?).

Sí, todas las compañías que nombró contratan personas sin ninguna barrera de edad, siempre que tenga el conocimiento de dominio requerido para el proceso para el que lo contratan.
Para el punto de vista de la programación, buscan personas con un enfoque de resolución de problemas que puedan implementar algoritmos en cualquier lenguaje de programación de propósito general (ya sea C, C ++ o Java). Si puede enmarcar un algoritmo y resolver el problema dado, está IN.
Simplemente conocer el lenguaje de programación no te ayudará. Debe tener la ventaja para aplicar las construcciones y desarrollar algoritmos.
Le sugiero que estudie las estructuras de datos en detalle e intente aplicarlas con cualquier lenguaje de programación.

En pocas palabras, la edad no importa en absoluto cuando se trata de su adquisición de talento.

Sí, estas empresas contratan a personas mayores de 30 años para puestos de nivel de entrada.

Muchas compañías ni siquiera preguntan a la edad por temor a que sean demandadas por discriminar en función de la edad (la Ley de Discriminación por Edad en el Empleo de 1967 impide que las empresas con 20 o más empleados discriminen a los solicitantes de 40 años o más).