¿Cómo es que la mayoría de las empresas solicitan específicamente estructuras de datos y algoritmos? ¿Qué sucede cuando un adicto a los algoritmos con solo conocimiento de C ++ o Java es aceptado en una empresa que utiliza tecnologías web, aprende el marco utilizado desde cero?

Para puestos de contrato a corto plazo, tiene sentido contratar a alguien con experiencia específica.

Pero para los roles de tiempo completo que respaldan la visión a largo plazo para la empresa, la mejor apuesta es elegir personas con mejores fundamentos en informática y progreso. idiomas
Desde mi experiencia, aprender una tecnología web específica (como Spring MVC, NodeJS, Ruby on Rails, etc.) es una habilidad fácilmente entrenable en comparación con enseñarle a alguien cómo pensar y usar formas eficientes de resolver problemas.

Casi todas las compañías de productos Web2.0 que lo hicieron grande han tenido entrevistas rigurosas sobre estructuras de datos y algoritmos. Y han tomado a personas con niveles de experiencia más bajos pero FUNDAMENTOS fuertes, y las han convertido en superestrellas por apoyar las pilas de tecnología web.

Y para aquellas compañías que califican a un desarrollador web experimentado más alto simplemente por su exposición a una determinada metodología o técnica, no han logrado aumentar su promedio.

El mayor error que cometen las empresas del sector de servicios y las empresas de productos que tienen personas no expertas en tecnología en la cima es que equiparan la familiaridad con una determinada herramienta con la competencia de un candidato.
Entonces terminan favoreciendo a los monos de código que hacen lo mismo una y otra vez y nunca dejan que la empresa crezca en áreas innovadoras.
Porque no pueden pensar más allá de lo que ya dominaron.

Por el contrario, si se percibe que un trabajo no requiere el uso de estructuras de datos y algoritmos (incluidos los avanzados), significa que la calidad del equipo técnico es baja.
Incluso para problemas técnicos simples, la calidad del software desarrollado por alguien que comprende algoritmos y estructuras de datos avanzadas será superior a largo plazo.

Si alguien quiere disputar esto, entonces estamos hablando de valor a corto plazo, o software que se hace solo para satisfacer las necesidades inmediatas de un cliente.
Para un valor a corto plazo, solo poder copiar fragmentos de código de pegado del desbordamiento de la pila hace que TODOS sean programadores / codificadores.
Esto está sucediendo en la mayoría de las empresas, especialmente las empresas de servicios. Es por eso que nunca alcanzan el nivel de una empresa de tipo google, FB o Amazon en términos de atraer a los mejores talentos.

Los algoritmos son básicamente la prueba de coeficiente intelectual para programadores. La idea es que las personas que son mejores en algoritmos podrán aprender más rápido, lo cual es más importante que conocer los idiomas / herramientas particulares que utiliza la empresa.

Probablemente sería bueno tener preguntas de ingeniería de software en una entrevista, pero me resulta difícil imaginar que las habilidades de ingeniería de software son algo que es fácilmente evaluable, además, con un buen proceso de revisión de código y tutoría, estas habilidades se pueden adquirir más adelante. .

Muy buena pregunta que siento es a menudo ignorada por empleadores y empleados.

Era muy bueno en algoritmos y lenguajes de programación, y como resultado me metí en una compañía de tecnología de muy alto perfil, pero mi conocimiento de la tecnología actual de la cadera ciertamente no estaba a la altura.

No creo que las personas sin conocimiento de las tecnologías y los marcos web tengan mucho éxito. Puede aprenderlos, pero no puede correr al ritmo de sus pares que han aprendido los marcos, incluso si tienen algoritmos inferiores y conocimientos de estructuras de datos. Como resultado, se lo considera más bajo en la encuesta de tótems y, en algunos casos, puede ser despedido durante los primeros 30/60/90 días si no está produciendo el resultado esperado.

No creo que las preguntas típicas de “IQ” que hacen los empleadores aborden esto muy bien. Esos son más técnicos y muestran aptitud para un pensamiento muy preciso y lógico. Lo que las empresas realmente necesitan son personas que puedan producir una gran cantidad de código, y que se adapten a muchas tecnologías dispares en su cabeza, y sepan cómo funcionan en un nivel más fino.

More Interesting

¿Por qué algunos algoritmos son más eficientes que otros? ¿Por qué se prefiere la búsqueda binaria sobre la lineal?

¿Cómo pruebo que un tipo de matriz N de longitud basada en comparación no se puede hacer en tiempo O (N) en el peor de los casos?

Cómo aprender a ser bueno al traducir el problema inicial en un problema de coincidencia gráfica bipartita

¿Cuáles son las mejores estructuras de datos para un índice espacial utilizado para averiguar en qué región de un espacio delimitado cae un nuevo punto dado?

¿Cuál es la diferencia entre un algoritmo y un procedimiento?

En Python, dada la siguiente permutación de a, b, c, d, e, f, g, h, i, j, ¿cuál es la próxima permutación en el orden lexicográfico (diccionario)?

¿Cómo calculamos la complejidad espacio-temporal de un algoritmo?

¿Qué son los algoritmos de clasificación y búsqueda?

¿Qué hace que Google sea poderoso? ¿Son los datos que tienen o el algoritmo eficiente que desarrollan?

Cómo elegir la estructura de datos correcta

¿Es correcto: 100n + log (n) = O (n + (log (n)) ^ 2)?

Si tiene un trabajo diario bastante intenso, ¿cómo encuentra tiempo para mejorar la estructura de datos y la habilidad de los algoritmos?

Dado un componente fuertemente conectado, ¿puede determinar en tiempo lineal si la eliminación de un solo nodo convierte el SCC en un gráfico acíclico dirigido?

Cómo convertir el ciclo while en declaraciones if

¿Cómo se puede averiguar el número de veces que se repite una palabra en una cadena usando Java?